2008-09-02 5 views
1

リモートコンピュータ上の "Program Files"ディレクトリの(ローカル)パスを特定するにはどうすればよいですか?パラメータとしてリモートコンピュータの名前をとるSHGetFolderPath(または関連する関数)のバージョンは表示されません。リモートコンピュータ上のプログラムファイルへのパス

私はリモートレジストリを使ってHKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ ProgramFilesDirに問い合わせることができたと思いますが、私はそこに "文書化された"方法があることを期待していました。

答えて

1

多くの標準パスには、ユーザーがログインする必要があります。特に、SH *機能はエクスプローラである「シェル」によって提供されます。私はあなたが正しい経路を得るための唯一の方法は、既に言及したようにレジストリを通ることだと思う。

1

これは私がやってしまったものです:(pszComputerフォーム "\\名" である必要がありますNPATHがTCHAR単位でpszPath()のサイズである。)

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; 
} 
関連する問題