VB.NET 以用户身份重新启动程序的服务
VB.NET Service to restart a program as a User
背景: 我需要一个 windows 服务来识别给定的条件(它正在工作所以我会忽略它),终止一个进程(那个部分我正在工作,不会详细说明),然后重新启动该过程。
此进程需要由此 windows 服务启动,该服务 运行 作为 LocalSystem,但需要作为用户启动,并且该应用程序需要出现在该用户的会话中,因此他们可以继续与之互动。
凭据在文本文件中存储和加密,然后由 Windows 服务读取并与 process.Start 命令一起使用以在终止应用程序后启动应用程序。
如果 运行 通过 Windows Forms 应用程序,则以下代码可以工作Windows 服务 运行宁作为本地系统。
System.Diagnostics.Process.Start("C:\Program Files (x86)\(app folder)\(applicationname).exe", username, SecurePassword, Domain)
当服务尝试运行此代码时,会抛出异常(拒绝访问);这又由我的应用程序使用 try/catch 语句记录到事件日志中。
我已经确认它使用的是正确的user/pass/domain;如果我使用了错误的凭据,它会给我一个单独的错误。
经过几个小时的研究,我找到了带有实际代码示例的完整答案。
最终结果允许服务在当前登录用户下启动应用程序,甚至无需存储凭据。
背景: 我需要一个 windows 服务来识别给定的条件(它正在工作所以我会忽略它),终止一个进程(那个部分我正在工作,不会详细说明),然后重新启动该过程。
此进程需要由此 windows 服务启动,该服务 运行 作为 LocalSystem,但需要作为用户启动,并且该应用程序需要出现在该用户的会话中,因此他们可以继续与之互动。
凭据在文本文件中存储和加密,然后由 Windows 服务读取并与 process.Start 命令一起使用以在终止应用程序后启动应用程序。
如果 运行 通过 Windows Forms 应用程序,则以下代码可以工作Windows 服务 运行宁作为本地系统。
System.Diagnostics.Process.Start("C:\Program Files (x86)\(app folder)\(applicationname).exe", username, SecurePassword, Domain)
当服务尝试运行此代码时,会抛出异常(拒绝访问);这又由我的应用程序使用 try/catch 语句记录到事件日志中。
我已经确认它使用的是正确的user/pass/domain;如果我使用了错误的凭据,它会给我一个单独的错误。
经过几个小时的研究,我找到了带有实际代码示例的完整答案。
最终结果允许服务在当前登录用户下启动应用程序,甚至无需存储凭据。