سؤال

ومرحبا أنا أحاول قراءة قيمة التسجيل الذي يعطيني طريق FIREFOX.EXE. يتم تخزين هذه تحت

HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox 3.0.10\bin

و(يمكن العثور على رقم الإصدار في مكان آخر)

ولكن أنا غير قادر على الحصول على ما يبدو RegOpenKeyEx للعودة ERROR_SUCCESS عن أي شيء تحت

HKEY_LOCAL_MACHINE

وحتى يفشل هذا الاختبار:

if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("\\SOFTWARE"),0,KEY_QUERY_VALUE,&keyHandle) == ERROR_SUCCESS)

وحين يمر هذا الاختبار:

if(RegOpenKeyEx(HKEY_CLASSES_ROOT,TEXT("\\Shell"),0,KEY_QUERY_VALUE,&keyHandle) == ERROR_SUCCESS)
هل كانت مفيدة؟

المحلول

وفشل التعليمة البرمجية التالية على الجهاز الخاص بي مع رمز الخطأ 161، والتي تعني "الطريق السيئ" (البحث عنه في winerror.h):

long n = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE"),
                      0,KEY_QUERY_VALUE, &hk );

وبعد ذلك غيرت استدعاء RegOpenKeyEx لاستخدام "SOFTWARE" (لاحظ لم مائلة الرائدة) وانها عملت:

#include <windows.h>
#include <iostream>
using namespace std; 

int main() {
    HKEY hk;

    // Notice that it's SOFTWARE instead of \\SOFTWARE:
    long n = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE"),
                      0,KEY_QUERY_VALUE, &hk );
    if ( n == ERROR_SUCCESS ) {
        cout << "OK" << endl;
    }
    else {
        cout << "Failed with value " << n << endl;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top