Разница между GetWindowsDirectory и GetSystemWindowsDirectory?

Я пытаюсь проверить различные системные пути, которые должны быть возвращены 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);

И вот вывод, который я получаю от сеанса удаленного рабочего стола:

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

3

Решение

Благодаря @RaymondChen и @Stefan, только если указать / TSAWARE: НЕТ Опция линкер в настройках приложения, вы увидите разницу в выводе:
введите описание изображения здесь

В этом случае я получил этот вывод:

RDP Session
Sysfolder1: C:\WINDOWS
Sysfolder2: C:\Documents and Settings\RemoteUserA\WINDOWS
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]