3

我正在尝试通过控制台和远程连接测试应该由GetWindowsDirectoryGetSystemWindowsDirectory 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);

这是我从远程桌面会话中获得的输出:

RDP Session
Sysfolder1: C:\WINDOWS
Sysfolder2: C:\WINDOWS
4

1 回答 1

2

感谢@RaymondChen 和@Stefan,只有在应用程序设置中指定/TSAWARE:NO链接器选项时,您才会看到输出的不同: 在此处输入图像描述

在这种情况下,我得到了这个输出:

RDP Session
Sysfolder1: C:\WINDOWS
Sysfolder2: C:\Documents and Settings\RemoteUserA\WINDOWS
于 2012-11-23T21:44:37.457 回答