我正在计划以具有管理员权限的C#执行Powershell脚本。
我尝试了很多方法,但没有结果。
我能做的最好的就是使用runas Verb启动一个进程(System.Diagnostics.Process.Start(p))。这样,如果执行服务的用户是管理员,那么我可以运行我的Powershell脚本。
但是,我需要的是使用低特权用户执行服务,并在需要时与管理员“登录”并执行powershell脚本。
我试图模仿管理员,但是没有用...
答案Execute PowerShell as an administrator from C#不能解决问题,我仍然无法运行脚本。答案来自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);
答案 0 :(得分:1)
假冒应该起作用。但是,我通常会避免这样做,因为如果不需要,我不喜欢存储用户凭据。
在我正在处理的应用程序中,我遇到了与此类似的需求。 该应用程序在IIS中运行,大多数时候不需要(也不应该具有)完全管理员权限。 为了应对这种情况,我运行了具有完全管理员权限的单独应用程序(Windows服务)。 它接受来自IIS应用程序的请求并执行适当的管理功能。
我的IIS应用程序和Windows服务通过AMQP(使用RabbitMQ)进行交谈。但是,您可以轻松使用喜欢的任何通信渠道-HTTP,TCP,甚至只是创建一个文件,然后让管理应用程序查找该文件。