Pregunta

¿Cómo puedo determinar la (local) ruta de acceso para los "Archivos de Programa" directory en un equipo remoto?Aparentemente, no hay ninguna versión de SHGetFolderPath (o función) que toma el nombre de un equipo remoto como un parámetro.

Supongo que podría intentar consulta HKLM\Software\Microsoft\Windows\CurrentVersion\ProgramFilesDir con control remoto-registro, pero tenía la esperanza de que habrá "documentado" forma de hacerlo.

¿Fue útil?

Solución

Muchas de las rutas estándar requiere que un usuario que ha iniciado sesión, especialmente la SH* funciones como los que son proporcionados por el "shell", que es, Explorer.Sospecho que la única manera que usted va a obtener el derecho de la ruta de acceso es a través del registro como ya se mencionó.

Otros consejos

Esto es lo que acabé haciendo:(pszComputer debe ser de la forma "\ ombre".nPath es el tamaño de 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;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top