从服务启动ClickOnce应用程序

时间:2014-03-27 21:20:52

标签: c# windows-services clickonce

行,

所以我试图找到一种从Windows服务启动ClickOnce应用程序的方法。我想通过“本地系统”(因此没有登录信息提示)帐户没有选中“与桌面交互”选项(因为MS已经试图摆脱该功能一段时间)这样做。

我知道我可以在未经检查的情况下向桌面启动应用程序。所以我从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();

我不知道我有什么办法可以防止它要求安装。我甚至厌倦了切换服务器以在用户帐户下运行,但是在尝试与桌面交互时查询用户令牌时出现错误。

有人有什么想法吗?

0 个答案:

没有答案