2008-09-02 3 views
1

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

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

ответ

1

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

1

Это то, что я в конечном итоге делает: (. PszComputer должен быть в форме "\\ имя" nPath является размер pszPath (в TCHARs))

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; 
} 
Смежные вопросы