2014-09-06 4 views
1

Windows 7/NTFS и более поздние версии имеют как символические ссылки, так и узлы, и они отличаются друг от друга. (См. this отличный набор сообщений). Для целей ведения журнала (и отладки) мне нужно разрешить цель соединения на удаленном файловом сервере. На эту тему было posts, но они применимы к разрешению соединения, как это видно на локальном компьютере.Код для определения цели удаленного соединения

На \\FileServer, у нас есть каталог G:\Shared, который является общим, как PublicShare, так что apears в сети как \\FileServer\PublicShare. Внутри этого каталога находятся подкаталоги G:\Shared\SubDir1 и G:\Shared\SubDir2. Также в этом каталоге находится соединение G:\Shared\Junc, которое указывает либо G:\Shared\SubDir1, либо G:\Shared\SubDir2. (Цель может измениться.) Таким образом, на \\FileServer, человек видит

\\FileServer\PublicShare\SubDir1 
\\FileServer\PublicShare\SubDir2 
\\FileServer\PublicShare\Junc 

На клиентском компьютере, на котором установлен \\FileServer\PublicShare (отображенного в ОС Windows жаргоне), как M:\, таким образом, один видит M:\SubDir1, M:\SubDir2, M:\Junc. Если на этой клиентской машине вы открываете консоль (cmd.exe) и делаете dir M:\, Windows дает хороший список, который показывает, что M:\Junc является соединением и включает в себя цель G:\Shared\SubDirX, соединения.

M:\>dir 
Volume in drive M is XXXXXXXXX 
Volume Serial Number is XXXX-XXXX 

Directory of M:\ 

09/05/2014 07:30 PM <DIR>   . 
09/05/2014 07:30 PM <DIR>   .. 
09/05/2014 01:36 PM <JUNCTION>  Junc [G:\Shared\SubDir1] 
09/06/2014 12:55 PM <DIR>   SubDir1 
09/05/2014 05:15 PM <DIR>   SubDir2 
       0 File(s)    0 bytes 
       3 Dir(s) 1,895,493,492,736 bytes free 

M:\> 

Таким образом, цель такого соединения явно доступна клиенту. Кто-нибудь знает, как получить эту информацию программно, например. какую систему api вызывать ??? Спасибо.

+0

Я понимаю, что API отсутствует; вы должны прочитать информацию о точке повторной обработки (используя FILE_FLAG_OPEN_REPARSE_POINT) и проанализировать ее самостоятельно. Насколько мне известно, формат информации о повторном доступе для точки соединения не документирован, но я думаю, что было бы разумно просто перепроектировать. –

+0

Если я на клиентской машине, у меня есть доступ к информации о точке повторной обработки? Не забывайте, что соединение находится на файловом сервере, а соединение (точка повторной обработки) обрабатывается и обрабатывается на стороне сервера. Невозможно обработать точку повторной обработки - доступен источник sysinternal's «junction.exe» (или, по крайней мере, это было, поскольку у меня есть копия). Вы, наверное, думаете. Возможно, вы правы. –

+0

@HarryJohnston: Ты был прав. Все, что мне нужно было сделать, это попробовать sysinternal's junction.exe - он дает мне информацию, которую я хочу. Отправьте комментарий как ответ, и я буду «принимать» его в качестве ответа. Благодарю. –

ответ

1

Это делает трюк:

fsutil reparsepoint query "M:\Junc" 

и это кажется очень надежным.