Нет необходимости выполнять этот шаг для выполнения задачи, которую вы описываете, и по различным причинам выполнение этого шага не гарантирует успешного выполнения задачи. Например, учетные данные могут иметь разрешения на удаленном компьютере, но может быть установлено программное обеспечение безопасности, которое не позволяет ему преуспеть.
Способ решения вашей проблемы состоит в том, чтобы просто выполнить задание с использованием учетных данных, и проверить все возвращаемые значения. Если вы получите STATUS_ACCESS_DENIED, это означает, что он говорит. Если вы не получите никаких ошибок, ваша работа будет выполнена.
Проверка учетных данных будет только быть полезным, чтобы помочь пользователю в выборе соответствующих учетных данных. Вы можете просто проверить доступ к доле \\machine\admin$
как и любой другой более сложный чек.
Это говорит, вот как сделать то, что вы просили
Если учетные данные являются учетными данными домена, вам нужно будет искать их в Active Directory. ADSI хорош для этого из скрипта. Существуют и другие API. Получите список групп пользователей.
Затем вам необходимо подключиться к удаленной машине, используя либо провайдер NetXXX apis, либо поставщик ADSI WinNT. Получить список членов группы «Администраторы». Если какая-либо из учетных записей домена пользователя является членом группы «Администраторы», пользователь является членом.
Все это можно сделать из сценария с использованием ADSI LDAP и WinNT-провайдеров.
Альтернативы
Все, кто хочет запустить удаленный код, кажется, думает, что вы должны написать исполняемый файл службы, установить службу, а затем запустить его.
Альтернатива, которая очень проста, если у вас есть учетные данные администратора, заключается в использовании службы планировщика заданий. Легко использовать SCHTASKS.EXE
для создания запланированной задачи, которая выполняется как SYSTEM
, LOCAL SERVICE
, NETWORK SERVICE
или любой учетной записи, чьи учетные данные у вас есть. Он может быть создан без расписания, затем явно запущен или создан с расписанием «один раз» для запуска в любое удобное для вас время, например, в следующие несколько минут.
Если вам нужно запустить код на удаленной машине, я настоятельно рекомендую SCHTASKS.EXE
не метод службы.
Это то, что должен сделать API Active Directory. –
сценарий, который я имею в виду, это что-то вроде psexec - вам даны учетные данные удаленному компьютеру, вы скопируете на небольшой исполняемый файл IPC $ на удаленном хосте, настройте его как службу на удаленном хосте, запустите его и установить связь с этой службой, которую вы используете для исполнения. Как это может быть, что все это можно сделать, не касаясь AD API, но для того, чтобы запросить соответствующие разрешения для этого, мне нужен AD API? – radai