使用模拟以编程方式启动Windows服务

时间:2011-04-12 15:26:57

标签: c# windows-services impersonation

我几个小时以来一直在寻找我的问题的答案但是在尝试了很多建议之后我仍然被卡住了。

我有一个基于C#Windows窗体的应用程序,我必须以编程方式启动Windows服务(也是解决方案的一部分)(当用户单击相应的按钮时)。这部分已经到位 - 我可以启动该服务但是......我在Windows 7和2008 Server中遇到了一些问题。

问题在于我不能这样做,因为我的应用程序是由机器管理员加载的,而是作为过滤标准而不是作为完全管理员(more info here)加载的。如果我们以管理员身份启动应用程序,它可以正常工作,但我不想每次都打扰用户。

我想知道当用户输入可以启动服务的表单时,是否可以弹出Windows确认屏幕 - 作为完整的管理员。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:2)

IIRC - 您无法提升现有进程权限,您需要生成一个新进程来执行需要它的操作。

Found a previous question进一步解释了这一点。

答案 1 :(得分:1)

你可以通过ShellExecute启动另一个应用程序(使用runas动词),这样Windows就会提示用户或使用COM Elevation Moniker(当用户点击按钮时)。

如果您的目标是Windows Server 2008 R2 / Windows 7,则可以使用Service Trigger Events

最佳