Как сделать так, чтобы программное обеспечение Windows запускалось от имени другого пользователя в скрипте?

Я использую скрипт сборки, который вызывает Wise для создания некоторых установочных файлов. Проблема в том, что лицензия Wise позволяет запускать его только под одной конкретной учетной записью пользователя, а не под той учетной записью, под которой будет запускаться мой сценарий сборки. Я знаю, что в Windows есть команда runas, но она не будет работать для автоматизированного сценария, поскольку нет способа ввести пароль через командную строку.

4 ответа

Решение

Я рекомендую взглянуть на CPAU.

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

Вы можете использовать это так ( примеры):

CPAU -u user [-p password] -ex "WhatToRun" [switches]

Или вы можете создать файл ".job", в котором будут закодированы имя пользователя и пароль. Таким образом, вы можете избежать ввода пароля для пользователя в ваш скрипт сборки.

Это немного обходное решение, но вы можете создать запланированное задание, которое будет запускаться как ваша учетная запись пользователя, и запускать его регулярно, возможно, каждую минуту. Да, вам придется ждать, пока он запустится.

Эта задача может затем искать некоторые файлы данных для обработки и выполнять реальную работу, только если они там есть.

Это может помочь, это класс, который я использовал в другом проекте, чтобы позволить людям создавать свои собственные учетные записи; у всех должен был быть доступ к программе, но одна учетная запись не могла иметь доступа к содержимому LDAP, поэтому программа использует этот класс для запуска его как другого пользователя.

http://www.codeproject.com/KB/dotnet/UserImpersonationInNET.aspx

Другие вопросы по тегам