Подключение к сетевому диску программно и кэширование учетных данных - PullRequest
1 голос
/ 10 мая 2010

Я наконец-то настроен, чтобы иметь возможность работать из дома через VPN (используя Шрю в качестве клиента), и у меня есть только одно раздражение. Мы используем некоторые командные файлы для загрузки файлов конфигурации на сетевой диск. Работает нормально с работы и с ноутбука моего руководителя, но обе эти машины находятся в домене. Моя домашняя система не является и не будет, поэтому, когда я запускаю командный файл, я получаю массу ошибок «неверный диск», потому что я не пользователь домена.

Решение, которое я нашел до сих пор, заключается в создании командного файла со следующим:

explorer \\MACHINE1
explorer \\MACHINE2
explorer \\MACHINE3

Затем вручную войдите на каждую машину, используя мои учетные данные домена, когда они всплывают. К сожалению, мне может понадобиться использовать около 10 машин, и ввод пароля затруднен, если я пропустил тот, который требуется для пакетного файла.

Я пытаюсь использовать ответ на этот вопрос , чтобы создать небольшое приложение на C #, которое будет получать информацию для входа один раз и осуществлять программный вход. Будет ли аутентификация автоматически предоставляться Проводнику или мне нужно что-то особенное? Если это работает, как долго кэшируются учетные данные?

Есть ли приложение, которое делает что-то подобное автоматически?

К сожалению, по словам нашего администратора, аутентификация домена через VPN невозможна.

РЕДАКТИРОВАТЬ : Если есть способ передать информацию для входа в Проводник через командную строку, это было бы еще проще, используя Ruby и highline.

РЕДАКТИРОВАТЬ : Если у кого-то есть такая же проблема, вот решение, которое я использовал. Требуется Рубин и самоцвет Highline.

require "highline/import"

domain = ask("Domain: ")
username = ask("Username: ")
password = ask("Password: ") { |q| q.echo = false }

machines = [
    '\\MACHINE1\SHARE', 
    '\\MACHINE2\SHARE', 
    '\\MACHINE3\SHARE', 
    '\\MACHINE4\SHARE', 
    '\\MACHINE5\SHARE'
]
drives = ('f'..'z').to_a[-machines.length..-1]

drives.each{|d| system("net use #{d}: /delete >nul 2>nul"); }

machines.zip(drives).each{|machine, drive| system("net use #{drive}: #{machine} #{password} /user:#{domain}\\#{username} >nul 2>nul")}

Он выяснит, сколько подключенных дисков мне нужно, а затем начнет сопоставлять их с запрошенными общими ресурсами. В этом случае он сопоставляет их с V: на Z: и предполагает, что у меня нет ничего общего с этими буквами диска.

Если у вас уже есть окно Explorer, открытое для одного из общих ресурсов, оно может выдать ошибку, поэтому перед запуском сценария Ruby я запустил:

net use * /delete

Это устранило ошибку «несколько подключений к общему ресурсу не разрешено» и позволило без проблем подключиться.

Ответы [ 3 ]

1 голос
/ 10 мая 2010

Использовать API WNetAddConnection2 () через P / Invoke.

1 голос
/ 10 мая 2010

Вы можете создать пакетный файл, который использует " NET USE " для подключения к вашим общим ресурсам. Вам нужно будет использовать букву диска для каждого ресурса, но это будет очень просто реализовать.

Ваш командный файл будет выглядеть так:

net use h: \\MACHINE1 <password> /user:<domain>\<user>
net use i: \\MACHINE2 <password> /user:<domain>\<user>
net use j: \\MACHINE3 <password> /user:<domain>\<user>

UPDATE

Зависит ли соединение от того, что вы указали для параметра / persistent. Если вы указали «да», он попытается повторно подключиться при следующем входе в систему. Если вы указали нет, то не будет. Беспокойство вызывает то, что документация говорит, что по умолчанию используется значение, которое вы использовали в последний раз!

Если вы указали нет, соединение будет сохраняться до следующей перезагрузки. Если вы прервете VPN-подключение, диск будет недоступен (но если вы повторно подключитесь к VPN, диск должен быть доступен, пока вы его не удалили).

Я не знаю, как использовать его без сопоставления с буквой диска, документация заставит вас поверить, что это невозможно.

Я понимаю вашу проблему: вы просто пытаетесь предоставить исследователю правильные учетные данные, чтобы он не беспокоил вас полями входа в систему. Использование подключенных дисков, хотя и не идеально, по крайней мере облегчит вашу боль.

1 голос
/ 10 мая 2010

чтобы передать учетные данные в командной строке проводнику, вам нужно взглянуть на команду net use

...