C# 使用其他程序的管理员权限启动程序 [重复]

Posted

技术标签:

【中文标题】C# 使用其他程序的管理员权限启动程序 [重复]【英文标题】:C# Start Program with ADMIN rights from other program [duplicate] 【发布时间】:2021-07-02 00:34:11 【问题描述】:

我编写了一个通知程序,它与 WebSocket 上的 Windows 服务进行通信。此通知程序没有管理员权限,但单击按钮启动另一个程序,该程序启动和停止服务。这个程序应该以管理员权限运行,它在一段时间内运行良好,但不知何故不再运行了。

这是我的代码 sn-p:

        using (var process = new Process())
        
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.FileName = $".\\ServiceControl.exe";
            process.StartInfo.CreateNoWindow = true;
            process.StartInfo.Arguments = $"-s ServiceName -start";
            process.StartInfo.Verb = "runas";
            process.Start();
        

例外情况如下:

System.ComponentModel.Win32Exception: "Der angeforderte Vorgang erfordert erhöhte Rechte"

当时它显示了一个窗口,我可以在其中接受管理员权限,但不再接受。

【问题讨论】:

有没有机会提供英文的错误信息? @Llama:就像“请求的操作需要提升的权限” 【参考方案1】:

尝试添加这一行

process.StartInfo.UseShellExecute = true;

using (var process = new Process())

    process.StartInfo.UseShellExecute = true;
    process.StartInfo.FileName = $".\\ServiceControl.exe";
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.Arguments = $"-s ServiceName -start";
    process.StartInfo.Verb = "runas";
    process.Start();

【讨论】:

@Llama 有效,但我不想为此弹出一个黑色窗口。我故意检查了 fals 并且当时确实有效。

以上是关于C# 使用其他程序的管理员权限启动程序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Windows 窗体 - C# - 要求管理员权限 [重复]

c#如何获取其他应用程序的启动参数

c#如何获取其他应用程序的启动参数

C# 使用登录的用户凭据启动进程

C# 应用程序单例(禁止多开) 获取.net版本号 以及 管理员权限

计划启动 C# 应用程序无法为登录用户显示表单