本文解决了需要管理权限才能在 .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中文网其他相关文章!