新しいdllがデプロイされるたびにクライアントコンピューターのgacにdllを登録する必要があるアプリケーションがあります。問題は、クライアントコンピューターでUACがオンになっているユーザーが制限されているだけであるということです。
アプリケーションは、管理者権限を持つユーザーの資格情報を知っています。
問題はprocessStartInfo.UseShellExecute = false;
、UACを通過できない場合、「要求された操作には高度が必要です」というエラーが表示 processStartInfo.UseShellExecute = true;
され、別のユーザーとしてすべてを実行することはできません。ユーザーとしてプロセスを開始するためにfalseに設定された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の概念がウイルスのようにウィンドウに見えることを私は知っています。
私が達成したいことは次のとおりです。
- ユーザーは管理者権限を持つアカウントを知る必要はありません
- 管理者ユーザーの資格情報は、プログラムのデータベースに保存されます
- 可能な限り自動登録。