CSIDL_SYSTEMX86 и CSIDL_SYSTEM (C ++) - PullRequest
1 голос
/ 02 марта 2012

При попытке вернуть путь к system32, чтобы я мог запустить блокнот из разрабатываемого мной приложения, я делаю следующее:

if (SHGetSpecialFolderPath(
        GetSafeHwnd(),
        lSystemPath,
        CSIDL_SYSTEM,
        TRUE ) )
    {
        lSystemPathCString = lSystemPath;
        if (lSystemPathCString.ReverseFind('\\') != lSystemPathCString.GetLength() - 1)
            lSystemPathCString += "\\";
    }

Однако .... в SHGetSpecialFolderPath(), используя CSIDL_SYSTEM заканчивается установкой lSystemPath в C: \ Windows \ system32, тогда как CIDSL_SYSTEMX86 устанавливает lSystemPath в C: \ Windows \ SysWOW64.Это правильное поведение?Похоже, что эти идентификаторы переключены, и я хочу убедиться, что это не просто странное поведение в моей системе.

Заранее благодарен за любую помощь в прояснении этого.

1 Ответ

2 голосов
/ 02 марта 2012

C:\Windows\SysWOW64 содержит 32-разрядные двоичные файлы (даже если в его имени указано 64): это правильное поведение.

WOW64 означает Windows 32-бит в Windows 64-битная .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...