2008-09-02 65 views
1

上如何确定一个远程计算机上的“程序文件”目录(局地)的路径?虽然目前没有出现的SHGetFolderPath(或相关功能)的任何版本,采用远程计算机作为参数的名称。路径程序,文件远程计算机

我想我可以尝试使用远程注册表来查询HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ ProgramFilesDir,但我希望会有“记录”的方式来做到这一点。

回答

1

许多标准路径的要求要记录在用户,由“壳”,即,资源管理器被提供特别是SH *函数的那些。我怀疑你要走正确道路的唯一方法就是像你已经提到的那样通过注册表。

1

这是我落得这样做:(pszComputer必须在表格上“\\名” n路径是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; 
} 
相关问题