2012-05-15 3 views
0

У меня есть приложение, которое запрашивает регистрацию 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 насколько возможно Автоматизированная регистрация.
+0

ok выглядит как кто-то проголосовал за мой вопрос без объяснения причин. Во всяком случае, Мануэль Амстуц за ввод, но что dosen't, похоже, работает, так как если я запускаю программу, то получаю ошибку неизвестной ошибки, если я запускаю все приложение, как с учетной записью администратора, он работает – Jester

ответ

0

Вы должны запустить эту часть своего кода в качестве администратора. Вам нужна олицетворение.

эту статью

Aricle Impersonation on Code project

0

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

Идея дизайна заключается в развертывании с использованием служб управления системой или аналогичных для управления развертыванием (что отстой).

Я обошел его, используя частные сборки, очень похожие на то, как работает UNIX.

Если вы хотите добавить поддержку классов в собственный клиент SQL, то вы обнаружите, что это будет трудная задача для развертывания каждый раз.

Если вы знаете имя и пароль локального администратора, вы можете использовать центральное решение для развертывания, а не пытаться заставить ваше приложение выдавать себя за администратора.

+0

, а аспект безопасности обслуживается в некоторой степени, поскольку учетные данные сохраняются в базе данных sql в виде зашифрованной строки. И сервер sql обеспечивает некоторый уровень защиты. Во всяком случае, мой usecase - это то, чего не должно существовать. Я знаю это, но он выполняет свою работу. – Jester

Смежные вопросы