Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用管理员权限从C#执行Powershell脚本_C#_Powershell - Fatal编程技术网

使用管理员权限从C#执行Powershell脚本

使用管理员权限从C#执行Powershell脚本,c#,powershell,C#,Powershell,我正在尝试使用管理员权限通过C#执行Powershell脚本 我试过很多方法,但都没有结果 我能做的最好的事情就是用runas动词启动一个进程(System.Diagnostics.process.start(p))。这样,如果执行服务的用户是管理员,我就可以运行powershell脚本 但是,我需要的是使用低权限用户执行服务,并在需要时与管理员“登录”并执行powershell脚本 我试着模仿管理员,但没用 答案没有解决问题,我仍然无法运行脚本。答案来自2009年,我希望有人同时解决了这类问题

我正在尝试使用管理员权限通过C#执行Powershell脚本

我试过很多方法,但都没有结果

我能做的最好的事情就是用runas动词启动一个进程(System.Diagnostics.process.start(p))。这样,如果执行服务的用户是管理员,我就可以运行powershell脚本

但是,我需要的是使用低权限用户执行服务,并在需要时与管理员“登录”并执行powershell脚本

我试着模仿管理员,但没用

答案没有解决问题,我仍然无法运行脚本。答案来自2009年,我希望有人同时解决了这类问题

        // powershell script execution
        var processInfo = new System.Diagnostics.ProcessStartInfo
        {
            Verb = "runas",
            LoadUserProfile = true,
            FileName = "powershell.exe",
            Arguments = scriptPath,
            RedirectStandardOutput = true,
            UseShellExecute = false
        };

        var p = System.Diagnostics.Process.Start(processInfo);

模仿应该有效。但是,我通常避免使用它,因为如果不需要的话,我不喜欢存储用户凭据

在我正在开发的一个应用程序中,我遇到了类似的需求。 该应用程序在IIS中运行,大多数情况下不需要(也不应该有)完全的管理员访问权限。 为了处理这种情况,我有一个单独的应用程序正在运行(一个windows服务),它具有完全的管理员权限。 它接受来自IIS应用程序的请求并执行适当的管理功能


我的IIS应用程序和Windows服务通过AMQP进行对话(使用RabbitMQ)。但是,您可以轻松地使用您喜欢的任何通信通道—HTTP、TCP,甚至只是创建一个文件,让管理员应用程序查找该文件。

很遗憾,该答案的可能重复项没有帮助。建议使用的模拟程序就是我在代码中使用的。如果你是这样问的,你不能在不触发UAC提示的情况下自动提升。“我能做的最好的事情就是启动一个流程(System.Diagnostics.process.start(p))这样,如果执行服务的用户是管理员,我就可以运行我的powershell脚本了?由于您使用的是
runas
动词,第二个进程(可能是PowerShell)在Windows启动时应该会触发UAC提示,这是请求管理员权限的标准方式。@LexLi“服务”是一个经典的Windows服务,我已将正在运行的用户更改为用于sql身份验证的自定义用户。runas动词不会触发UAC提示符。使用默认的“本地系统”用户作为登录用户,我的powershell脚本可以完美地工作。