この記事では、.NET でプロセスを開始するには管理者権限が必要であるという一般的な問題について説明します。 提示されたソリューションでは、偽装を利用して、必要な権限を持つユーザー アカウントでプロセスを実行します。
次のコード スニペットは、ImpersonationHelper クラス (表示されていませんが、必要な偽装ロジックを処理すると想定されています) を使用してこれを実現する方法を示しています。
<code class="language-csharp">System.Diagnostics.Process proc = new System.Diagnostics.Process(); System.Security.SecureString ssPwd = new System.Security.SecureString(); proc.StartInfo.UseShellExecute = false; proc.StartInfo.FileName = "filename"; proc.StartInfo.Arguments = "args..."; proc.StartInfo.Domain = "domainname"; proc.StartInfo.UserName = "username"; string password = "user entered password"; foreach (char c in password) { ssPwd.AppendChar(c); } ssPwd.MakeReadOnly(); //Important security step proc.StartInfo.Password = ssPwd; proc.Start();</code>
このコードは、指定された資格情報を使用してプロセスを開始します。 重要なのは、パスワードは SecureString
を使用して安全に処理されることです。 適切なエラー処理を実装し、使用後に SecureString
を適切に破棄することを忘れないでください。 この方法は、ユーザーの偽装を利用して、昇格された特権でプロセスを実行する安全な方法を提供します。
以上が.NET プロセスを別のユーザーとして実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。