无法解析的外部符号NtCreateKey

Unresolved external symbol NtCreateKey

本文关键字:外部 符号 NtCreateKey      更新时间:2023-10-16

我正在尝试使用WINAPI NtCreateKey创建注册表项,但我在VS2013中得到此错误。

错误1错误LNK2019:未解析的外部符号"long __stdcall NtCreateKey(void **, unsigned long, struct _OBJECT_ATTRIBUTES *, unsigned long, struct _UNICODE_STRING *, unsigned long, unsigned long *)"(?NtCreateKey@@YGJPAPAXKPAU_OBJECT_ATTRIBUTES@@KPAU_UNICODE_STRING@@KPAK@Z)在function _main中引用

有人知道为什么吗?我还包含了以下文件:

#include <Windows.h>
#include <stdio.h>
#include <winternl.h>

谢谢!

您需要通过使用LoadLibrary来动态解析NtCreateKey以获取ntdll的句柄,并使用GetProcAddress来解析该函数。

相反,您可以使用支持的Win32 API函数RegCreateKey/RegCreateKeyEx。除非你有真正的理由使用本机API,否则你可能应该坚持使用Win32 API。