Путь к Program-Files на удаленном компьютере - PullRequest
1 голос
/ 03 сентября 2008

Как определить (локальный) путь для каталога «Program Files» на удаленном компьютере? Не существует ни одной версии SHGetFolderPath (или связанной функции), которая принимает имя удаленного компьютера в качестве параметра.

Полагаю, я мог бы попытаться запросить HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ ProgramFilesDir с помощью удаленного реестра, но я надеялся, что это будет "документированный" способ сделать это.

Ответы [ 2 ]

1 голос
/ 05 сентября 2008

Это то, что я закончил: (pszComputer должен быть в форме "\\ name". NPath - это размер pszPath (в TCHAR)) *

DWORD GetProgramFilesDir(PCTSTR pszComputer, PTSTR pszPath, DWORD& nPath) 
{
    DWORD n;
    HKEY hHKLM;
    if ((n = RegConnectRegistry(pszComputer, HKEY_LOCAL_MACHINE, &hHKLM)) == ERROR_SUCCESS)
    {
        HKEY hWin;
        if ((n = RegOpenKeyEx(hHKLM, _T("Software\\Microsoft\\Windows\\CurrentVersion"), 0, KEY_READ, &hWin)) == ERROR_SUCCESS)
        {
            DWORD nType, cbPath = nPath * sizeof(TCHAR);
            n = RegQueryValueEx(hWin, _T("ProgramFilesDir"), NULL, &nType, reinterpret_cast<PBYTE>(pszPath), &cbPath);
            nPath = cbPath / sizeof(TCHAR);
            RegCloseKey(hWin);
        }
        RegCloseKey(hHKLM);
    }
    return n;
}
1 голос
/ 03 сентября 2008

Многие стандартные пути требуют, чтобы пользователь вошел в систему, особенно функции SH *, поскольку они предоставляются «оболочкой», то есть Explorer. Я подозреваю, что единственный способ получить правильный путь - через реестр, как вы уже упоминали.

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