我需要在远程桌面上启动程序,这个程序打开一个窗口,需要用户交互,但我的应用程序是一个windows服务。
我用的是windows2008。我创建了一个成功的应用程序,但启动程序只使用鼠标、键盘连接会话,但我需要在RDP中启动。
现在我正在使用这些函数。
WTSEnumerateSessions (enum all sessions, here I know if RDP)
WTSQueryUserToken (Get user token)
DuplicateTokenEx ( make a primary token)
CreateProcessAsUser (run application
我想启动一个具有高完整性级别的流程。父进程正在作为系统服务LocalSystem帐户运行。在一台Windows2008机器上,子进程是高级进程,而在另一台2008机器上,子进程是“中”级进程。看起来CreateProcessAsUser在不同的机器上得到了不同的级别。
if (!WTSQueryUserToken(sessionID, &hToken))
{//The admin user logged in the rdp session of "sessionID".
return;
}
BOOL fSuccess = CreateProcessAsUse
让我首先描述一下设置:
客户端PC与几个rdp会话到本地服务器,所有打开从保存的rdp会话与存储的密码,使用标准的windows rdp客户端。
局域网上有几个windows服务器,具有不同的服务器操作系统: windows server 2003、2008,甚至现在是2012年。
当我登录到我的PC时,我会向所有这些服务器打开rdp会话,并且由于各种原因一直打开它们。一夜之间,客户端PC进入睡眠或hibernate模式,从而制动rdp连接。第二天,当我唤醒客户端PC并再次登录时,rdp会话会自动尝试重新连接到服务器,这就引出了以下问题:
从服务器2008开始,rdp服务器配置中显然发生了一些