c++ - 如何检查类(class)ID是否已注册?

标签 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, &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;
                }
         }

最佳答案

除了 CLSID 下的 GUID,我从未见过其他任何东西,因此 key 可能不存在。在 regedit 下查看该节点以了解我的意思。

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

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

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

关于c++ - 如何检查类(class)ID是否已注册?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1157383/

相关文章:

c# - 通过 COM Interop 编码(marshal)托管结构的 SAFEARRAY

c++ - IDISPATCH::Invoke 调用方法失败,错误 0x80020005 类型不匹配

ASP.NET、IIS 和 COM

c++ - 使方法显式,除了友元类

c++ - 如何设置 int64 的较低或较高值?

c++ - bool 必须只接受一个参数 == 运算符实现文件

c++ - 如何删除多个构造函数中的重复检查

c++ - 将文件中的数据存储到C++中的二维数组中

c++ - 带有 Visual Studio 2012 的 TCC

c++ - 从 Windows 窗体外部调用 Windows 窗体方法(来自 int WINAPI WinMain)