如何确定远程计算机上“Program Files”目录的(本地)路径?似乎没有任何版本的SHGetFolderPath(或相关函数)将远程计算机的名称作为参数。
我想我可以尝试使用远程注册表来查询HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ ProgramFilesDir,但我希望有“记录”的方式。
答案 0 :(得分:1)
许多标准路径要求用户登录,尤其是SH *函数,因为它们是由“shell”提供的,即Explorer。我怀疑你要获得正确路径的唯一方法是通过你已经提到的注册表。
答案 1 :(得分:1)
这就是我最终要做的事情:(pszComputer必须是“\\ name”形式.nPath是pszPath的大小(在TCHAR中))
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;
}