Как я могу заставить программное обеспечение Windows запускаться в сценарии от имени другого пользователя?
-
01-07-2019 - |
Вопрос
Я использую сценарий сборки, который вызывает Wise для создания некоторых установочных файлов.Проблема в том, что лицензия Wise позволяет запускать ее только под одной конкретной учетной записью пользователя, а это не та учетная запись, под которой будет запускаться мой сценарий сборки.Я знаю, что в Windows есть беги как команда, но это не сработает для автоматизированного сценария, поскольку нет возможности ввести пароль через командную строку.
Решение
Это может помочь: Почему программа RunAs не принимает пароль в командной строке?
Другие советы
Рекомендую взглянуть на ЦПАУ.
Инструмент командной строки для начального процесса в альтернативном контексте безопасности.По сути это замена рунаса.Также позволяет создавать файлы задания и кодировать идентификатор, пароль и командную строку в файле, чтобы его можно было использовать обычными пользователями.
Вы можете использовать его так (Примеры):
CPAU -u user [-p password] -ex "WhatToRun" [switches]
Или вы можете создать файл «.job», внутри которого будут закодированы имя пользователя и пароль.Таким образом, вы можете избежать необходимости помещать пароль пользователя в сценарий сборки.
Это своего рода обходное решение, но вы можете создать запланированное задание, которое запускается от имени вашей учетной записи пользователя, и запускать его регулярно, возможно, раз в минуту.Да, тогда вам придется подождать, пока он запустится.
Затем эта задача может найти файлы данных для обработки и выполнить реальную работу только в том случае, если они есть.
Это может помочь, это класс, который я использовал в другом проекте, чтобы позволить людям создавать свои собственные учетные записи;каждый должен был иметь доступ к программе, но одной и той же учетной записи нельзя было разрешить доступ к материалам LDAP, поэтому программа использует этот класс для запуска ее от имени другого пользователя.
http://www.codeproject.com/KB/dotnet/UserImpersonationInNET.aspx