2012-03-20 4 views
6

Я ищу карту в моей программе. Мои пользователи могут использовать каждую версию Windows с XP. Поэтому мне нужен самый универсальный метод. Раньше я использовал первый метод и, как правило, он работал хорошо для меня. Но действительно нет способа поймать ошибки с ним (что я знаю в любом случае). Второй будет легко позволить мне обернуть вокруг него блок try/catch, но для всех поисков, которые я выполнил для альтернатив методу 1, я только один раз пропустил метод 2. Поэтому мне остается задаться вопросом, достаточно ли это достаточно для такой разнообразной среды. Может ли кто-нибудь сказать мне, если метод 2 безопасен для большинства обстоятельств?Карта сетевого диска: «net.exe USE» vs WshNetwork.MapNetworkDrive?

Метод 1

Process.Start("net.exe", @"USE Z: \\server\share /user:domain\username password").WaitForExit(); 

Способ 2 ссылки на Windows Script Хост Object Model

IWshNetwork_Class network = new IWshNetwork_Class(); 
network.MapNetworkDrive("k:", @"\\server\share"); 
+3

Мне нравится # 2. Он выглядит более чистым и предоставляется как часть API. Однако, как насчет возможности указывать учетные данные и т. Д.? –

+0

Да, вы можете использовать учетные данные. Я просто оставил это для ясности. – JimDel

+1

http://pinvoke.net/default.aspx/mpr/WNetAddConnection2.html –

ответ

4

Другой подход заключается в PInvoke фактические Win32 Apis (WNetAddConnection2A, WNetCancelConnection2A, и т.д.). Отъезд http://www.codeguru.com/csharp/csharp/cs_network/windowsservices/article.php/c12357/

+0

Это было бы прекрасно, если бы он не использовал сторонний созданный класс. Мне запрещено использовать их. – JimDel

+2

Вам не нужно использовать свой класс. Вы можете создать свою собственную, основываясь на его работе. – dvallejo

Смежные вопросы