我正在尝试在控制台上以及通过远程连接测试应该由GetWindowsDirectory和GetSystemWindowsDirectory API返回的不同系统路径。根据文档:
我似乎看不到任何区别。他们都返回“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);
这是我从远程桌面 session 获得的输出:
RDP Session
Sysfolder1: C:\WINDOWS
Sysfolder2: C:\WINDOWS
最佳答案
感谢@RaymondChen和@Stefan,如果在应用程序设置中指定了/TSAWARE:NO链接器选项,则仅成为,您将看到输出的差异:
在这种情况下,我得到以下输出:
RDP Session
Sysfolder1: C:\WINDOWS
Sysfolder2: C:\Documents and Settings\RemoteUserA\WINDOWS
关于c++ - GetWindowsDirectory和GetSystemWindowsDirectory之间的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13489746/