У меня есть приложение, которое запрашивает регистрацию dll в gac на клиентском компьютере каждый раз при развертывании новой dll, проблема заключается в том, что на клиентских компьютерах только ограниченные пользователи с включенным UAC.Зарегистрировать dll в gac как другой пользователь
Приложение знает учетные данные пользователя с правами администратора.
Проблема заключается в том, если у меня есть processStartInfo.UseShellExecute = false;
то я не могу получить корыта UAC получаю сообщение об ошибке «Запрошенный opperation требует возвышения» и если у меня есть processStartInfo.UseShellExecute = true;
, то это не позволяет запускать все это как другой пользователь : «объект процесс должен иметь UseShellExecute свойство установлено в ложь для того, чтобы начать процесс, как пользователь»
internal static void Register(String assemblyName)
{
ProcessStartInfo processStartInfo = new ProcessStartInfo(lcDir + "gacutil.exe", string.Format("/i {0}.dll", assemblyName));
processStartInfo.UseShellExecute = false;
processStartInfo.WorkingDirectory = lcDir;
processStartInfo.UserName = lcUser;
processStartInfo.Password = Password;
processStartInfo.Domain = lcDomain;
processStartInfo.Verb = "runas";
Process process = Process.Start(processStartInfo);
process.WaitForExit();
}
Я хотел бы знать, что такое «Лучшая практика» для такого рода вещи? Я знаю, что концепция whoe относится к окнам, как к вирусу.
Что я хотел бы достигнуть следующее:
- Пользователь dosen't нужно знать учетную запись с правами администратора
- В credencal й лет пользователя с правами администратора, сохраняется в базе данных программы
- As насколько возможно Автоматизированная регистрация.
ok выглядит как кто-то проголосовал за мой вопрос без объяснения причин. Во всяком случае, Мануэль Амстуц за ввод, но что dosen't, похоже, работает, так как если я запускаю программу, то получаю ошибку неизвестной ошибки, если я запускаю все приложение, как с учетной записью администратора, он работает – Jester