我正在尝试使用管理员权限通过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);
假冒应该有效。但是,我通常会避免它,因为我不喜欢存储用户凭据,如果我不需要。
在我正在开发的应用程序中,我遇到了与此类似的需求。该应用程序在IIS中运行,大多数时间不需要(也不应该)完全管理员访问权限。为了处理这种情况,我有一个单独的应用程序运行(Windows服务),具有完全的管理员权限。它接受来自IIS应用程序的请求并执行适当的管理功能。
我的IIS应用程序和Windows服务通过AMQP(使用RabbitMQ)进行通信。但是,您可以轻松使用您喜欢的任何通信通道 - HTTP,TCP,甚至只需创建一个文件并让管理应用程序查找该文件。