المسار إلى ملفات البرنامج على الكمبيوتر البعيد
-
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;
}
لا تنتمي إلى StackOverflow