服务在远程桌面中运行桌面程序
WIndows service run desktop program in Remote Desktop
我需要在远程桌面中启动程序,该程序打开一个窗口,需要用户交互,但我的应用程序是Windows服务。
我正在使用Windows 2008。我创建了一个成功的应用程序,但启动程序只能使用鼠标、键盘进行会话连接,但我需要在 RDP 中启动。
现在我正在使用这些功能。
WTSEnumerateSessions (enum all sessions, here I know if RDP)
WTSQueryUserToken (Get user token)
DuplicateTokenEx ( make a primary token)
CreateProcessAsUser (run application with SI.lpDesktop = _T("winsta0\default"))
但这仅适用于在控制台中连接到键盘、鼠标、显示器而不是 RDP 的运行应用程序。
无论如何可以帮助我?谢谢。
因此,您正在尝试在计算机上的特定 RDP 会话中启动 GUI 应用程序?你或多或少有正确的想法,尽管你可能错过了一些部分。查看源代码中的 ProcessHelper 类,用于对 Cassia 库进行自动测试。您可以去除许多受管理的面包屑以用于C++。您也可以省略 GetTokenInformation( ...TokenInformationClass.TokenLinkedToken... )废话,如果您不需要使用提升的权限运行该过程。自Windows XP以来,此代码已在Windows的每个版本上进行了测试。
另请注意,调用WTSQueryUserToken需要SE_TCB_NAME权限(默认情况下,LocalSystem帐户具有该权限)。
好的,谢谢丹·波特斯
这解决了我的问题。
问题是权限。我配置了这三个权限。
SetPrivilege(hpToken, SE_ASSIGNPRIMARYTOKEN_NAME, TRUE);
SetPrivilege(hpToken, SE_INCREASE_QUOTA_NAME, TRUE);
SetPrivilege(hpToken, SE_TCB_NAME, TRUE);
注意:我创建的SetPrivilege函数。
而且工作很好。再次感谢。
相关文章:
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 代码在main()中运行,但在函数中出现错误
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何在运行中期切换GTK CSS style_context
- 试图在visual studio上用C++创建一个桌面应用程序
- 如何在MS Visual Studio 2019中运行QT UI
- QWebView 用于在桌面应用程序中运行 javascript (D3) - 当 HTML 更改时重新加载速度很慢
- 如何制作带有数据库的桌面应用程序,由其他人在不同的计算机上运行
- 通过远程桌面运行 qt 创建器
- 创建在新Windows桌面上运行IE的过程
- 如何使用visual studio 2015创建一个.exe,我可以在桌面上运行
- 在正在运行的桌面应用程序上模拟用户操作
- 在远程桌面连接关闭时运行 s/w
- 是否可以创建一个可以在ios移动平台和windows桌面平台之间运行的应用程序,而无需使用web界面
- 如何使用远程桌面运行cuda代码
- 服务在远程桌面中运行桌面程序