首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C#中以管理员模式启动进程

如何在C#中以管理员模式启动进程
EN

Stack Overflow用户
提问于 2010-03-28 19:54:16
回答 9查看 264.7K关注 0票数 103

我有一个Visual Studio Windows应用程序项目。我添加了下载安装程序更新文件的代码。完成下载后,安装程序将需要管理员权限才能运行。我已经添加了一个清单文件。

当用户单击DownloadUpdate.exe时,UAC会提示用户输入管理员权限。因此,我假设在DownloadUpdate.exe中创建和调用的所有进程都将以管理员身份运行。因此,我让安装程序使用以下代码调用我下载的文件:

代码语言:javascript
复制
Process p = new Process();
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.FileName = strFile;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
EN

回答 9

Stack Overflow用户

发布于 2010-03-28 19:56:03

试试这个:

代码语言:javascript
复制
//Vista or higher check
if (System.Environment.OSVersion.Version.Major >= 6)
{
   p.StartInfo.Verb = "runas";
}

或者,使用go the manifest route for your application

票数 88
EN

Stack Overflow用户

发布于 2016-05-30 14:44:05

首先,你需要在你的项目中包含

代码语言:javascript
复制
using System.Diagnostics;

之后,您可以编写一个通用方法,用于您想要使用的不同.exe文件。如下所示:

代码语言:javascript
复制
public void ExecuteAsAdmin(string fileName)
{
    Process proc = new Process();
    proc.StartInfo.FileName = fileName;
    proc.StartInfo.UseShellExecute = true;
    proc.StartInfo.Verb = "runas";
    proc.Start();
}

例如,如果你想执行notepad.exe,那么你所要做的就是调用这个方法:

代码语言:javascript
复制
ExecuteAsAdmin("notepad.exe");
票数 45
EN

Stack Overflow用户

发布于 2010-03-28 19:58:46

代码语言:javascript
复制
var pass = new SecureString();
pass.AppendChar('s');
pass.AppendChar('e');
pass.AppendChar('c');
pass.AppendChar('r');
pass.AppendChar('e');
pass.AppendChar('t');
Process.Start("notepad", "admin", pass, "");

还可以与ProcessStartInfo配合使用

代码语言:javascript
复制
var psi = new ProcessStartInfo
{
    FileName = "notepad",
    UserName = "admin",
    Domain = "",
    Password = pass,
    UseShellExecute = false,
    RedirectStandardOutput = true,
    RedirectStandardError = true
};
Process.Start(psi);
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2532769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档