行,
所以我试图找到一种从Windows服务启动ClickOnce应用程序的方法。我想通过“本地系统”(因此没有登录信息提示)帐户没有选中“与桌面交互”选项(因为MS已经试图摆脱该功能一段时间)这样做。/ p>
我知道我可以在未经检查的情况下向桌面启动应用程序。所以我从TechNet博客中挖出了一个CreateProcessAsUserWrapper。包装器可以在http://code.msdn.microsoft.com/windowsdesktop/CSCreateProcessAsUserFromSe-b682134e/file/50832/8/Interactive%20Windows%20Service%20(CSCreateProcessAsUserFromService).zip
找到然后我创建了服务应用程序和一个带有ClickOnce应用程序的.appref-ms副本的小exe。然后,服务器每隔10分钟查看ClickOnce应用程序是否正在运行。如果没有,它会使用CreateProcessAsUserWrapper触发小exe,然后依次为.appref-ms
到目前为止,一切运行顺利。我遇到的问题是ClickOnce应用程序启动。它询问是否要安装,尽管已安装。
这是启动ClickOnce应用程序的代码:
string startupPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
startupPath = Path.Combine(startupPath, "app.appref-ms");
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "\"" + startupPath + "\"";
Process process = new Process();
process.StartInfo = startInfo;
process.Start();
我不知道我有什么办法可以防止它要求安装。我甚至厌倦了切换服务器以在用户帐户下运行,但是在尝试与桌面交互时查询用户令牌时出现错误。
有人有什么想法吗?