2009-07-21 1 views
0

Привет, я проверяю идентификатор GUID SqlClass, который находится в моем Test.dll Но он не дает успеха, он не справился со значением ... Что не так в этом коде.Как проверить идентификатор класса зарегистрирован или нет?

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

int main() { 
    HKEY hk; 

    long n = RegOpenKeyEx(HKEY_CLASSES_ROOT,TEXT("\\CLSID\\SqlClass"), 
        0,KEY_QUERY_VALUE, &hk);" 
    if (n == ERROR_SUCCESS) { 
    cout << "OK" << endl; 
    } 
    else { 
    cout << "Failed with value " << n << endl; 
    } 
} 

Я попытался, как это также RegOpenKeyEx (HKEY_CLASSES_ROOT, TEXT ("\ CLSID \ 46A951AC-C2D9-48e0-97BE-91F3C9E7B065"), 0, KEY_QUERY_VALUE, & Нк)

Этот код работает FINE

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

    int main() { 
       HKEY hk; 

       long n = RegOpenKeyEx(HKEY_CLASSES_ROOT, 
      TEXT("\\CLSID\\{46A951AC-C2D9-48e0-97BE-91F3C9E7B065}"), 
       0,KEY_QUERY_VALUE, &hk);" 
      if (n == ERROR_SUCCESS) { 
       cout << "OK" << endl; 
      } 
      else { 
       cout << "Failed with value " << n << endl; 
       } 
     } 
+0

Действительно ли значение действительно присутствует в реестре на этом пути? – sharptooth

+2

Во втором фрагменте кода GUID должен быть заключен в «{» и «}». Посмотрите, как другие GUID хранятся в реестре. – sharptooth

+0

Комментарии являются полезными Спасибо Sharptooth – Cute

ответ

2

Я никогда не видел ничего, кроме GUID под CLSID, поэтому ключ, вероятно, не существует. Посмотрите на этот узел под regedit, чтобы понять, что я имею в виду.

Каков был код неисправности, n? Вы можете посмотреть это двумя способами

  1. Put номер в «Lookup Error» инструмент в меню Сервис в Visual Studio.

  2. Позвоните по номеру FormatMessage, где вы найдете текст, связанный с этой ошибкой.

+0

+1. Типично иметь символические ключи на уровне HKCR, а не в HKCR \ CLSID – sharptooth

+0

Код ошибки со значением «2», который, вероятно, у вас есть, означает «файл не найден» (любимая ошибка на tdwtf :)) – Eugene

+0

Появляется код ошибки 2 Но я читаю под regedit as Test он показан под HKEY_CLASSES_ROOT \ CLSID \ {46A951AC-C2D9-48E0-97BE-91F3C9E7B065} – Cute