Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 20:09 03.12.20 
Компютри и Интернет
   >> Програмисти
*Кратък преглед

Тема UNC Pathsнови  
Автор e-de (чакащ)
Публикувано17.11.01 16:33



Имам въпрос:
Как мога да обърна път към фаил на локален диск в UNC път?
т.е как C:\Projects\Readme.txt
да стане \\dev_host\projects\readme.txt



Тема Re: UNC Pathsнови [re: e-de]  
Автор Balam (непознат )
Публикувано17.11.01 17:18



e-de, ako znaesh sus sigurnost, che "Projects" shte bude vinagi share na "devhost" kum "C:\Projects", nachi ti triabva samo string manipulaciata, kakto ti si ia napravil veche. Ako puk ne znaesh kakvi shares ima na "devhost", triabva da si gi enumerirash sam i da si namerish nai-podhodiashtata za oformiane na UNC-to. S funkciite NetShareEnum() i NetShareGetInfo() mozesh da si napravish cikul za namirane na share otgovariastha (ili pone vodeshta) do tvoia fail. Ne zabraviai, che enumeriraneto moze da ti vurne poveche ot 1 share vodeshta kum faila, pri koeto polozenie ti triabva da si izberesh nai-podhodiashtata za celta (da rechem po access rights).

Uspeh!



Тема Re: UNC Pathsнови [re: Balam]  
Автор e-de (чакащ)
Публикувано19.11.01 14:29



тоя път, който съм дал за пример е само за пример, приложението трябва да се оправя с обработване на drag/drop фаилове, чийто пътища да се обръщат до UNC формат.
това за enumerate на шеровете го имам като идея, обаче ме мързи да го правя, освен това няма начин да няма нещо в някое API което да се занимава точно с тая работа.
в случая целта е по-скоро образователна, а не решаване на спешен проблем.

10х за вниманието, всепак



Тема Re: UNC Pathsнови [re: e-de]  
Автор Xypodilec (тъп юзър)
Публикувано19.11.01 17:12



WNetGetUniversalName(), обаче при локален път (каквото май ти трябва) връща грешка ERROR_NOT_CONNECTED.



Тема Re: UNC Pathsнови [re: Xypodilec]  
Автор e-de (чакащ)
Публикувано20.11.01 19:11



mi imenno kogato e lokalen patia e interesno.
za mapnat drive ili za neshto ot Entire Network v Delphi-to ima gotova funcia ExpandUNCFileName/vzeta ot niakoe API, ama neznam koe/ koiato dopalva/obrashta pat do UNC format. obache raboti samo za NON local paths.
zamomenta problema e fix-nat s enumerate na sherovete, no az prodaljavam da si tarsia reshenie po drug nachin - niama nachin da niama neshto koeto horata ot MS da sa si napravili, vaprosa e da go otkria.



Тема Re: UNC Pathsнови [re: Xypodilec]  
Автор e-de (чакащ)
Публикувано20.11.01 19:12



apropo, NetGetUniversalName mislia shte mranka za user prava - mislia che iskashe niakakaw admin /domain ili neshto ot toia sort/?



Тема Re: UNC Pathsнови [re: e-de]  
Автор Balam (непознат )
Публикувано20.11.01 20:45



e-de, ne si gubi vremeto s tursene na API... Takova niama da namerish, zashtoto e nevuzmozno da se napishe ot MS. Ei ti edin primer (za po-lesno si predstavi che e samo za Win9xME), i shte razberesh sam zashto:

Vzemi proizvolen fail, da rechem C:\DIR1\DIR2\DIR3\DIR4\FILE.EXT.

OS-a ima slednite 4 shares, i suotvetno, 4 razlichni UNC-ta za dostup do faila:

C:\DIR1 -> "SHARE1" (read only access bez parola)
C:\DIR1\DIR2 -> "SHARE2" (read only access s parola)
C:\DIR1\DIR2\DIR3 -> "SHARE3" (read write access bez parola)
C:\DIR1\DIR2\DIR3\DIR4 -> "SHARE4" (read only access s parola)

Zapitai se sega, ako Windows imashe edna edinstvena funkcia, koiato da ti vurne UNC na toia fail, koi ot vsichkite vuzmozni varianti sthe vurne? Kak tazi funkcia da znae kakuv tochno user shte pravi access na faila, po kakuv nachin, i dali izobstho usera shte ima prava za access do tozi fail po vurnatoto UNC?

V NT neshtata stavat dori po-slozni... Ta za tova MS ti predostaviat APIs za enumeracia, i ot tam ti moze da si izberesh kakuv UNC da polzvash. Samo ti si toia koito znae pretenciite na user-a.

Uspeh.



Тема Re: UNC Pathsнови [re: e-de]  
Авторxyz (Нерегистриран)
Публикувано21.11.01 13:02



Правих точно такова нещо преди 2 години.

По принцип използвах WNetGetUniversalName, но допълнително имам една таблица (списък) със всички шаринги на локалния компютър, която съставям runtime чрез WNetEnumResource и NetShareGetInfo. По нататък, когато WNetGetUniversalName върне грешка, търся името във въпросната таблица и го заменям.
Това работи горе-долу приемливо, като се има предвид възможностите за нееднозначност при конкретен избор на шаринги - взима първия подходящ шаринг и толкова.

Работата с тези функции малко се усложнява заради версиите Win95/98/NT. Например NetShareGetInfo се взема от svrapi.dll при Win95/98 или от netapi32.dll при NT.

Това е моето решение по принцип.
Нямам нищо против да ти изпратя моя сорс.
Ако ти трябва, пиши ми на е-майла и ще ти го изпратя по пощата.

xyz@rambler.bg



Тема 10х [re: e-de]  
Автор e-de (чакащ)
Публикувано21.11.01 13:27



благодарско на всички, който писаха, явно няма да се намери решение от вида, който аз търсех.
заобиколното решение /с enumerate local shares/ така или иначе съм го реализирал.




*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2020 Dir.bg Всички права запазени.