如何检查类ID是否已注册?

时间:2009-07-21 05:01:27

标签: c++ visual-c++ com registry

您好我正在检查我的Test.dll中的SqlClass的GUID 但是它没有成功,它失败了,价值...这段代码有什么不对。

#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,&amp; hk)

此代码工作精细

    #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;
                }
         }

1 个答案:

答案 0 :(得分:2)

我在CLSID下从未见过GUID以外的任何内容,因此密钥可能不存在。在regedit下查看该节点,看看我的意思。

失败代码是什么,n?您可以通过两种方式查看此内容

  1. 将数字放入Visual Studio的“工具”菜单中的“错误查找”工具中。

  2. 在n上调用FormatMessage,它会为您提供与该错误相关的文字。