2008-10-14 3 views
2

В WinXP (SP2) вы можете хранить подключенные сетевые пароли ...Как программно добавить сопоставленные сетевые пароли (WinXP)?

Пуск-> Панель управления-> Учетные записи пользователей-> Выберите один из них, затем выберите «Управление сетевыми паролями» из связанных задач.

У меня обычно около 25-30 серверов, сопоставленных таким образом, с несколькими разными учетными записями/доменами. Проблема в том, что в какой-то момент во время наших обновлений политики они уничтожаются, и это настоящая PITA, чтобы снова добавить их обратно.

Кто-нибудь знает, как добавить их программно, используя какой-то скрипт?

Чтобы уточнить, конечная цель - не привязывать диски, это фактически создать записи в этом разделе. Это позволяет нам использовать проверку подлинности Windows для подключения к нашим серверам (через Dameware, SSMS и т. Д.).

Добавление: CredWrite наконечник

Марк привел меня сюда ...

pinvoke.net -- CredWrite (advapi32)

Который в свою очередь, привело меня сюда ...

Peer Channel Blog -- Application Password Security

Оба имеют оказался очень полезным.

ответ

3
  • cmdkey.exe - версия CLI для инструмента, но я считаю, что это включено только в Win2003 +. Я подозреваю, что копия на XP будет работать, но может нарушить ваше лицензионное соглашение.
  • net use также имеет savecred вариант, если вы отображения дисков
  • Согласно этому fairly detailed info, магазины CredMgr это база данных, в 2-х местах. Это может быть достаточно просто создать резервную копию этих файлов:
    • % AppData% \ Microsoft \ Credentials \% UserSID% \ Credentials
    • % USERPROFILE% \ Local Settings \ Application Data \ Microsoft \ Credentials \% UserSID% \ Учетные данные
  • Существует API для чтения учетных данных, CredEnumerate - но немедленного очевидного способа добавить свой собственный. Несколько кандидатов:
    • CredWrite принимает нормальный CREDENTIAL, но ничего не указывает на сохранение прошлой сессии.
    • CredUIStoreSSOCredW принимает параметр bPersist, но указывает «область» вместо местоположения сервера или сети.

Edit: D'ой. Я пропустил член PERSIST CREDENTIAL. Это может быть один из следующих значений:

  • CRED_PERSIST_SESSION: верительных сохраняется в течение всего сеанса входа в систему. Он не будет отображаться для других сеансов входа в систему этого же пользователя. Он не будет существовать после того, как этот пользователь выйдет из системы и снова включится.
  • CRED_PERSIST_LOCAL_MACHINE: Учетные данные сохраняются для всех последующих сеансов входа в систему на этом же компьютере. Он виден другим сеансам входа этого же пользователя на этом же компьютере и не отображается для сеансов входа в систему для этого пользователя на других компьютерах. (Это то, что хранится в файле локальных настроек)
  • CRED_PERSIST_ENTERPRISE: Учетные данные сохраняются для всех последующих сеансов входа на этом же компьютере. Он отображается для других сеансов входа этого же пользователя на этом же компьютере и для сеансов входа в систему для этого пользователя на других компьютерах. Эта опция может быть реализована как локально сохраненные учетные данные, если администратор или пользователь настраивает учетную запись пользователя, чтобы она не имела состояния, способного перемещаться. Например, если у пользователя нет перемещаемого профиля, учетные данные будут сохраняться только локально. (Это то, что хранится в AppData)

Похоже, что CredWrite - это API, который вы хотите.

+0

Спасибо за подробный ответ! Резервное копирование файлов не сработало, есть ли у вас ссылка для CredWrite? – 2008-10-14 13:21:52

1

NET USE (команда) и WshNetwork.MapNetworkDrive (Windows скриптовый хост) являются двумя распространенными способами написания сопоставления сетевых дисков, которые позволяют указать пользователя и пароль.
Я не знаю, как это будет работать/не работать с сохраненными паролями, как вы сказали, кроме как знать, что если вы оставите опцию пользователя пустым, она попытается использовать учетные данные текущего пользователя.