2012-07-11 60 views
1

如何在具有管理权限的c#中启动进程? 我使用的代码为:如何启动具有管理权限的进程

Process p = new Process(); 
        p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
        p.StartInfo.FileName = path; 
        p.StartInfo.UseShellExecute = true; 
        p.StartInfo.RedirectStandardOutput = true; 
        p.StartInfo.RedirectStandardError = true; 
        if (System.Environment.OSVersion.Version.Major >= 6) 
        { 
         p.StartInfo.Verb = "runas"; 
        } 

        p.Start(); 

仍然无法正常工作。请帮助我。

感谢

+0

为该进程提供所需的用户权限.. – 2012-07-11 10:58:36

+0

可能的重复[如何在C#中以管理员模式启动进程](http://stackoverflow.com/questions/2532769/how-to -start-A-过程-AS-管理员模式在-C-尖锐) – 2012-07-11 11:03:17

回答

0

如果您控制了您要运行的应用程序,则应在可执行文件上附加清单并要求提升权限。 为此,您做一个类似的文件,并将其命名一样与.manifest的应用程序的扩展名(如yourApp.exe.manifest):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="appName" type="win32"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel level="requireAdministrator"/> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
     <application> 
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> 
     </application> 
    </compatibility> 
</assembly> 

,然后使用从Visual Studio命令MT的工具提示附加它

0

的的ProcessStartInfo类具有诸如用户名密码&请尽量使用过程中的Start方法

2
var processInfo = new ProcessStartInfo 
{ 
    FileName = "app.exe", 
    UserName = "Username", 
    Domain = "yourdomain or leave blank", 
    Password = "password", 
    UseShellExecute = false, 
}; 
Process.Start(processInfo); 

只需添加/调整您的需求。

相关问题