문제

원격 컴퓨터에서 "Program Files" 디렉터리의 (로컬) 경로를 어떻게 확인합니까?원격 컴퓨터의 이름을 매개변수로 사용하는 SHGetFolderPath(또는 관련 함수) 버전에는 나타나지 않습니다.

원격 레지스트리를 사용하여 HKLM\Software\Microsoft\Windows\CurrentVersion\ProgramFilesDir에 쿼리를 시도할 수 있을 것 같지만 이를 수행하는 "문서화된" 방법이 있기를 바랐습니다.

도움이 되었습니까?

해결책

많은 표준 경로에는 사용자 로그인이 필요하며, 특히 "쉘", 즉 Explorer에서 제공되는 SH* 기능은 더욱 그렇습니다.올바른 경로를 얻는 유일한 방법은 이미 언급한 것처럼 레지스트리를 이용하는 것입니다.

다른 팁

이것이 내가 한 일입니다.(pszComputer는 "\ ame" 형식이어야 합니다.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;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top