如何使用 C# 以管理员身份运行批处理文件来安装 Windows 服务

本文关键字:批处理文件 安装 Windows 服务 运行 身份 何使用 管理员 | 更新日期: 2023-09-27 17:56:33

我创建了一个批处理文件,用于将我的程序安装为Windows服务。批处理文件的内容:

> C:'Project'Test'InstallUtil.exe
> "C:'Project'Test'ROServerService'Server'bin'Debug'myservices.exe"

目前,它需要用户右键单击批处理文件并"以管理员身份运行"才能成功。我们如何避免"以管理员身份运行"?我的意思是我们可以在批处理文件中使用某些命令来告诉 Windows 以管理员身份运行此批处理文件吗?

如何使用 C# 以管理员身份运行批处理文件来安装 Windows 服务

这种方式过去对我有用:

string exe = @"C:'Project'Test'InstallUtil.exe";
string args = @"C:'Project'Test'ROServerService'Server'bin'Debug'myservices.exe";
var psi = new ProcessStartInfo();
psi.CreateNoWindow = true; //This hides the dos-style black window that the command prompt usually shows
psi.FileName = @"cmd.exe";
psi.Verb = "runas"; //This is what actually runs the command as administrator
psi.Arguments = "/C " + exe + " " + args;
try {
    var process = new Process();
    process.StartInfo = psi;
    process.Start();
    process.WaitForExit();
}
catch (Exception){
    //If you are here the user clicked decline to grant admin privileges (or he's not administrator)
}

请注意,我直接在此处运行批处理文件中的命令,但当然您也可以运行批处理文件本身:

string bat = @"C:'path'to'your'batch'file.bat";
var psi = new ProcessStartInfo();
psi.CreateNoWindow = true; //This hides the dos-style black window that the command prompt usually shows
psi.FileName = @"cmd.exe";
psi.Verb = "runas"; //This is what actually runs the command as administrator
psi.Arguments = "/C " + bat;