2008-09-02 11 views
1

Comment déterminer le chemin (local-) du répertoire "Program Files" sur un ordinateur distant? Il n'apparaît à aucune version de SHGetFolderPath (ou fonction connexe) qui prend le nom d'un ordinateur distant en tant que paramètre.Chemin d'accès aux fichiers programme sur l'ordinateur distant

Je suppose que je pourrais essayer d'interroger HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ ProgramFilesDir en utilisant le registre distant, mais j'espérais qu'il y aurait une façon «documentée» de le faire.

Répondre

1

De nombreux chemins standard nécessitent la connexion d'un utilisateur, en particulier les fonctions SH * telles que celles fournies par le "shell", à savoir Explorer. Je soupçonne que la seule façon d'obtenir le bon chemin est de passer par le registre comme vous l'avez déjà mentionné.

1

C'est ce que je fini par faire: (. PszComputer doit être sur la forme "\\ nom" NPATH est de taille pszPath (en 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; 
} 
Questions connexes