Ken*_*avR 8 .net c# process admin-rights
我试图通过C#应用程序执行具有管理员权限的程序,该应用程序仅使用用户权限进行调用.
码
ProcessStartInfo psi;
try
{
psi = new ProcessStartInfo(@"WINZIP32.EXE");
psi.UseShellExecute = false;
SecureString pw = new SecureString();
pw.AppendChar('p');
pw.AppendChar('a');
pw.AppendChar('s');
pw.AppendChar('s');
pw.AppendChar('w');
pw.AppendChar('o');
pw.AppendChar('r');
pw.AppendChar('d');
psi.Password = pw;
psi.UserName = "administrator";
Process.Start(psi);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Run Code Online (Sandbox Code Playgroud)
它确实启动winzip,但仅限用户权限.有什么我做错了,或者甚至有可能开始一个更高权利的过程?
谢谢!
编辑:这是问题背后的原因,也许它有助于理解我真正需要的东西.
我以winzip为例,大致了解了我的代码是不正确的.实际问题是,我们公司使用2个版本的程序.但在启动任何版本之前,您需要使用regsvr32(具有管理员权限)导入dll文件.现在我想编写一个程序,让用户选择版本,导入dll并启动正确的应用程序.
San*_*nen 10
您需要设置ProcessStartInfo.UseShellExecute到true和ProcessStartInfo.Verb到runas:
Process process = null;
ProcessStartInfo processStartInfo = new ProcessStartInfo();
processStartInfo.FileName = "WINZIP32.EXE";
processStartInfo.Verb = "runas";
processStartInfo.WindowStyle = ProcessWindowStyle.Normal;
processStartInfo.UseShellExecute = true;
process = Process.Start(processStartInfo);
Run Code Online (Sandbox Code Playgroud)
这将导致应用程序以管理员身份运行.但是,UAC会提示用户确认.如果这不合适,那么您需要添加清单以永久提升主机进程特权.
| 归档时间: |
|
| 查看次数: |
16973 次 |
| 最近记录: |