【问题标题】:VB.NET Service to restart a program as a UserVB.NET 服务以用户身份重新启动程序
【发布时间】:2016-02-24 13:18:45
【问题描述】:

背景:我需要一个 Windows 服务来识别给定的条件(这是有效的,所以我将忽略它),终止一个进程(我正在工作但不会进入的那个部分详细信息),然后重新启动该过程。

这个进程需要由这个作为LocalSystem运行的windows服务启动,但需要作为用户启动,并且应用程序需要出现在该用户的会话中,以便他们可以继续与之交互。

凭据在文本文件中存储、加密,然后由 Windows 服务读取并与进程一起使用。Start 命令在终止应用程序后启动它。

如果通过我用来配置一些数据以及测试此功能的 Windows 窗体应用程序运行以下代码,则以下代码有效,但当它由作为 LocalSystem 运行的 Windows 服务运行时则无效。

System.Diagnostics.Process.Start("C:\Program Files (x86)\(app folder)\(applicationname).exe", username, SecurePassword, Domain)

当服务试图运行这段代码时,它会抛出一个异常(Access Is Denied);这又由我的应用程序使用 try/catch 语句记录到事件日志中。

我已验证它使用了正确的用户/密码/域;如果我使用了错误的凭据,它会给我一个单独的错误。

【问题讨论】:

    标签: vb.net process windows-services restart


    【解决方案1】:

    经过几个小时的研究,我找到了带有实际代码示例的完整答案。

    http://blog.cjwdev.co.uk/2011/06/10/vb-net-start-process-in-console-session-from-windows-service-on-windows-7/

    最终结果允许服务在当前登录的用户下启动应用程序,甚至无需存储凭据。

    【讨论】:

      猜你喜欢
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多