我的 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
字符串。
您可以:
- 使用
TCHAR
字符串,以匹配您的代码调用的 TCHAR
函数:
const TCHAR* path = TEXT("SYSTEM\CurrentControlSet\Control\IDConfigDB\Hardware Profiles\0001");
- 使用 Unicode 字符串,以匹配运行时实际调用的 Unicode 函数:
const wchar_t *path = L"SYSTEM\CurrentControlSet\Control\IDConfigDB\Hardware Profiles\0001";
- 使用函数的 ANSI 版本
RegCreateKeyExA()
来匹配您的原始字符串:
if (RegCreateKeyExA(...) == ERROR_SUCCESS) {
错误:
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
字符串。
您可以:
- 使用
TCHAR
字符串,以匹配您的代码调用的TCHAR
函数:
const TCHAR* path = TEXT("SYSTEM\CurrentControlSet\Control\IDConfigDB\Hardware Profiles\0001");
- 使用 Unicode 字符串,以匹配运行时实际调用的 Unicode 函数:
const wchar_t *path = L"SYSTEM\CurrentControlSet\Control\IDConfigDB\Hardware Profiles\0001";
- 使用函数的 ANSI 版本
RegCreateKeyExA()
来匹配您的原始字符串:
if (RegCreateKeyExA(...) == ERROR_SUCCESS) {