我有一个Visual Studio Windows应用程序项目。我添加了下载安装程序更新文件的代码。完成下载后,安装程序将需要管理员权限才能运行。我已经添加了一个清单文件。
当用户单击DownloadUpdate.exe时,UAC会提示用户输入管理员权限。因此,我假设在DownloadUpdate.exe中创建和调用的所有进程都将以管理员身份运行。因此,我让安装程序使用以下代码调用我下载的文件:
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;发布于 2010-03-28 19:56:03
试试这个:
//Vista or higher check
if (System.Environment.OSVersion.Version.Major >= 6)
{
p.StartInfo.Verb = "runas";
}或者,使用go the manifest route for your application。
发布于 2016-05-30 14:44:05
首先,你需要在你的项目中包含
using System.Diagnostics;之后,您可以编写一个通用方法,用于您想要使用的不同.exe文件。如下所示:
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,那么你所要做的就是调用这个方法:
ExecuteAsAdmin("notepad.exe");发布于 2010-03-28 19:58:46
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配合使用
var psi = new ProcessStartInfo
{
FileName = "notepad",
UserName = "admin",
Domain = "",
Password = pass,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true
};
Process.Start(psi);https://stackoverflow.com/questions/2532769
复制相似问题