Frage

Wie ermittle ich den (lokalen) Pfad für das Verzeichnis „Programme“ auf einem Remote-Computer?Es gibt keine Version von SHGetFolderPath (oder einer zugehörigen Funktion), die den Namen eines Remotecomputers als Parameter verwendet.

Ich denke, ich könnte versuchen, HKLM\Software\Microsoft\Windows\CurrentVersion\ProgramFilesDir mithilfe der Remote-Registrierung abzufragen, aber ich hatte gehofft, dass es eine „dokumentierte“ Vorgehensweise geben würde.

War es hilfreich?

Lösung

Viele der Standardpfade erfordern die Anmeldung eines Benutzers, insbesondere die SH*-Funktionen, da diese von der „Shell“, also dem Explorer, bereitgestellt werden.Ich vermute, dass Sie den richtigen Weg nur über die Registrierung finden, wie Sie bereits erwähnt haben.

Andere Tipps

Dies ist, was ich letztendlich getan habe:(pszComputer muss die Form „\ ame“ haben.nPath ist die Größe von pszPath (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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top