C# 将进程提升为以管理员身份运行不会';行不通
将进程提升为以管理员身份运行不起作用。如果我从提升的命令提示符运行该应用程序,它运行良好。但我下面的代码没有C# 将进程提升为以管理员身份运行不会';行不通,c#,windows,windows-vista,uac,C#,Windows,Windows Vista,Uac,将进程提升为以管理员身份运行不起作用。如果我从提升的命令提示符运行该应用程序,它运行良好。但我下面的代码没有 Process setupws = new Process(); setupws.StartInfo.FileName = @"setupws.exe"; setupws.StartInfo.Verb = "runas"; setupws.StartInfo.UseShellExecute = true; setupws.Start(); setupws.WaitForExit();
Process setupws = new Process();
setupws.StartInfo.FileName = @"setupws.exe";
setupws.StartInfo.Verb = "runas";
setupws.StartInfo.UseShellExecute = true;
setupws.Start();
setupws.WaitForExit();
setupws.exe文件运行良好,只是不作为管理员
我做错了什么
谢谢
另外,我还在我的app.manifest文件中使用了highestAvailable和requireAdministrator,您需要在清单中将安装程序标记为requestedExecutionLevel=requireAdministrator,请参阅
另外,requireAdministrator应该在setupws.exe的清单中。您是否以管理员身份运行应用程序并进行了尝试?你可以这样做:
using System.Security.Permissions;
var mine = new EnvironmentPermission(PermissionState.Unrestricted);
mine.AddPathList(EnvironmentPermissionAccess.AllAccess, Environment.CurrentDirectory);
我很确定您需要的不仅仅是runas。我的清单中确实设置了requestedExecutionLevel=“RequiredAdministrator”。另外,我的setupws.exe文件没有使用清单文件,它也不是我的,因此可能永远不会使用。但这就是我认为“符文”的目的。它真的应该是一个setupsw清单。。。无论如何,还必须在ProcessInfo上设置ErrorDialog和ErrorDialogParentHandle,请参见,因为某些HWND必须拥有提升UI提示对话框。