c00*_*0fd 5 c++ winapi terminal-services
我正在尝试测试GetWindowsDirectory和GetSystemWindowsDirectory API 在控制台上并通过远程连接返回的不同系统路径。根据文档:
对于终端服务,GetSystemWindowsDirectory 函数检索系统 Windows 目录的路径,而 GetWindowsDirectory 函数检索每个用户专用的 Windows 目录的路径。在单用户系统上,GetSystemWindowsDirectory 与 GetWindowsDirectory 相同。
我似乎看不出有什么区别。它们都返回“C:\Windows”。
有人可以解释为什么我看不到终端服务宣布的文档吗?
编辑:这是我正在运行的一个小 C++ 代码示例:
//Check if RDP session
BOOL bRDP = FALSE;
DWORD dwSessID = -1;
::ProcessIdToSessionId(::GetCurrentProcessId(), &dwSessID);
DWORD dwSz;
LPTSTR ppBuffer = NULL;
if(WTSQuerySessionInformation(NULL, dwSessID, WTSClientProtocolType, &ppBuffer, &dwSz))
{
bRDP = *(USHORT*)ppBuffer == 2;
WTSFreeMemory(ppBuffer);
}
_tprintf(_T("%s\n"), !bRDP ? _T("Console Session") : _T("RDP Session"));
//Get system folder
TCHAR buff[MAX_PATH * 2];
buff[0] = 0;
GetSystemWindowsDirectory(buff, SIZEOF(buff));
_tprintf(_T("Sysfolder1: %s\n"), buff);
buff[0] = 0;
GetWindowsDirectory(buff, SIZEOF(buff));
_tprintf(_T("Sysfolder2: %s\n"), buff);
Run Code Online (Sandbox Code Playgroud)
这是我从远程桌面会话获得的输出:
RDP Session
Sysfolder1: C:\WINDOWS
Sysfolder2: C:\WINDOWS
Run Code Online (Sandbox Code Playgroud)
感谢@RaymondChen 和@Stefan,只有在应用程序设置中指定/TSAWARE:NO链接器选项时,您才会看到输出中的差异:

在这种情况下我得到了这个输出:
RDP Session
Sysfolder1: C:\WINDOWS
Sysfolder2: C:\Documents and Settings\RemoteUserA\WINDOWS
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7145 次 |
| 最近记录: |