2008-09-02 5 views
1

Wie kann ich den (lokalen) Pfad für das Verzeichnis "Programme" auf einem Remotecomputer ermitteln? Es scheint keine Version von SHGetFolderPath (oder einer verwandten Funktion) zu sein, die den Namen eines Remote-Computers als Parameter annimmt.Pfad zu Programmdateien auf Remotecomputer

Ich denke, ich könnte versuchen, HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ ProgramFilesDir mit Remote-Registrierung abzufragen, aber ich hatte gehofft, es wäre "dokumentiert" Weg, es zu tun.

Antwort

1

Viele der Standardpfade erfordern die Anmeldung eines Benutzers, insbesondere die SH * -Funktionen, die von der "Shell" bereitgestellt werden, dh Explorer. Ich vermute, der einzige Weg, den richtigen Weg zu finden, ist durch die Registrierung, wie Sie bereits erwähnt haben.

1

Dies ist, was ich am Ende tun: (. PszComputer auf dem Formular sein muss "\\ name" nPath Größe pszPath ist (in 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; 
} 
Verwandte Themen