GetWindowsDirectoryおよびGetSystemWindowsDirectoryAPIによってコンソール上およびリモート接続を介して返されるはずのさまざまなシステムパスをテストしようとしています。ドキュメントによると:
ターミナルサービスでは、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