المسار إلى ملفات البرنامج على الكمبيوتر البعيد

StackOverflow https://stackoverflow.com/questions/40769

  •  09-06-2019
  •  | 
  •  

سؤال

كيف يمكنني تحديد المسار (المحلي) لدليل "ملفات البرامج" على جهاز كمبيوتر بعيد؟لا يظهر أي إصدار من SHGetFolderPath (أو الوظيفة ذات الصلة) الذي يأخذ اسم الكمبيوتر البعيد كمعلمة.

أعتقد أنه يمكنني محاولة الاستعلام عن HKLM\Software\Microsoft\Windows\CurrentVersion\ProgramFilesDir باستخدام التسجيل عن بعد، لكنني كنت آمل أن تكون هناك طريقة "موثقة" للقيام بذلك.

هل كانت مفيدة؟

المحلول

تتطلب العديد من المسارات القياسية أن يقوم المستخدم بتسجيل الدخول، وخاصة وظائف SH* كما يتم توفيرها بواسطة "Shell"، أي Explorer.أظن أن الطريقة الوحيدة للحصول على المسار الصحيح هي من خلال السجل كما ذكرت من قبل.

نصائح أخرى

وهذا ما انتهى بي الأمر إلى فعله:(يجب أن يكون pszComputer على النموذج "\ ame".nPath هو حجم 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;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top