【问题标题】:Starting windows service programatically using impersonation使用模拟以编程方式启动 Windows 服务
【发布时间】:2011-08-04 00:11:23
【问题描述】:

我已经为我的问题寻找了几个小时的答案,但在尝试了很多建议后,我仍然卡住了。

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

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

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

有什么想法吗?

谢谢

【问题讨论】:

    标签: c# windows-services impersonation


    【解决方案1】:

    您可以通过 ShellExecute(使用 runas 动词)启动另一个应用程序,以便 Windows 提示用户或使用 COM Elevation Moniker(当用户单击按钮时)。

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

    最好的

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 使用“runas”选项可能意味着异常处理非常困难。
      猜你喜欢
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      • 2018-10-07
      • 2010-09-18
      相关资源
      最近更新 更多