我的 winreg 函数没有被识别

My winreg function is not being recognized

错误:

error: no matching function for call to 'RegCreateKeyExW'

我包括的内容:

#include <iostream>
#include <Windows.h>
#include <stdio.h>
#include <string>
#include <winreg.h>

我的代码:

        HKEY hKey;
        LONG result = 0;
        char *path = "SYSTEM\CurrentControlSet\Control\IDConfigDB\Hardware Profiles\0001";

        if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, path, 0, NULL,
                REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS) {
            printf("2. success \n");
        } else {
            printf("fail\n");
        }

我已经尝试了所有方法,但这个错误不会消失,如果有人能帮助我,我将不胜感激!

您正在调用 RegCreateKeyEx()TCHAR 版本。从错误消息中可以清楚地看出,RegCreateKeyEx() 正在解析为 Unicode 版本 RegCreateKeyExW()(因为 UNICODE 已在您的构建配置中定义)。该版本采用宽 wchar_t 字符串作为输入,但您传递的是窄 char 字符串。

您可以:

  1. 使用 TCHAR 字符串,以匹配您的代码调用的 TCHAR 函数:
const TCHAR* path = TEXT("SYSTEM\CurrentControlSet\Control\IDConfigDB\Hardware Profiles\0001");
  1. 使用 Unicode 字符串,以匹配运行时实际调用的 Unicode 函数:
const wchar_t *path = L"SYSTEM\CurrentControlSet\Control\IDConfigDB\Hardware Profiles\0001";
  1. 使用函数的 ANSI 版本 RegCreateKeyExA() 来匹配您的原始字符串:
if (RegCreateKeyExA(...) == ERROR_SUCCESS) {