【发布时间】:2023-04-02 23:45:01
【问题描述】:
我设计了一个windows服务,它会定期检查是否安装了特定的应用程序,当它发现它没有安装时,它会从共享网络位置下载它,该文件是一个静默无人值守的安装exe(自行安装) .
我在运行安装程序时遇到问题,所以我决定不尝试运行安装程序,而是运行一个小型 hello world windows 窗体应用程序,看看这个简单的事情是否有效。
经过几个小时的困惑后,我终于发现 hello world 应用程序确实运行但在不同的用户下运行 - 特别是本地计算机。在接下来的几个小时里,我发现我必须关闭 UAC (Vista/7) 并允许服务与桌面交互。在这之后,我终于在我的桌面上得到了一个提示,一个服务正在尝试运行某些东西,我必须决定是否允许它。
当我按下允许时 - 我被带到另一个 GUI(不同于我的桌面),此后 hello world 正常运行。
现在,虽然这肯定是一个进步,但我距离在当前用户帐户下安装应用程序还有很长的路要走。
我遇到的一个问题是将 Windows 服务设置为以特定用户身份运行,当我在那种 WS 上使用 installutil.exe 时,它会提示我输入用户名和密码,我输入正确的(管理员权限)数据并且安装失败。
我想要实现的是让 Windows 服务安装一个静默安装包而不会以任何方式中断用户,测试静默安装包是 net framework 2.0 - 我需要安装它,就好像用户自己点击它一样.
我不需要任何代码(但这会受到欢迎),只需指出正确的方向,提前感谢!
【问题讨论】:
-
我不确定问题是什么,但 Windows 服务、屏幕保护程序和其他系统进程在不同的 UI 上下文或不同的桌面中运行。我记得,可以让 GUI 在登录用户的上下文中运行(如果有的话)。
标签: c# windows windows-services service