根据获得的HKEY句柄反过来查询注册表的key和subkey 如题,想通过获得的注册表句柄HKEY获得该注册表的路径。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 整个过程还是比较麻烦的,核心函数是NtQueryObject,示例代码如下,第二个参数可为HEKY类型。void GetPath(char *strPath,HANDLE hHandle){HANDLE hHeap = GetProcessHeap();DWORD dwSize = 0;POBJECT_NAME_INFORMATION pName = (POBJECT_NAME_INFORMATION)HeapAlloc(hHeap, HEAP_ZERO_MEMORY, 0x1000); NTSTATUS ns = NtQueryObject(hHandle, ObjectNameInformation, (PVOID)pName, 0x1000, &dwSize);DWORD i = 1;while(ns == STATUS_INFO_LEN_MISMATCH){ pName = (POBJECT_NAME_INFORMATION)HeapReAlloc(hHeap, HEAP_ZERO_MEMORY, (LPVOID)pName, 0x1000 * i); ns = NtQueryObject(hHandle, ObjectNameInformation, (PVOID)pName, 0x1000, NULL); i++;}wsprintf(strPath, "%S", pName->Name.Buffer);HeapFree(hHeap,0,pName);}编译时如提示某变量无定义,可查阅MSDN,包含相应的头文件。 首先感谢两位的回答,我是vc6.0的版本,我在msdn2001版上查找NtQueryObject怎么查找不到?是在sdk中的方法吗?另外,除了这个函数还有其他的方法吗? 没有别的方法,这个函数在ntdll.dll中,导入库在wdk中 请问哪有VC6SP5下载? 【求助】如何在MFC中改变BMP的对比度/亮度? 求yuv文件 问记事本的自动换行功能? 如何制作浏览器插件? 内存增长问题 OnInitADOConn()在哪儿添加 Win32 Release和win32 debug有什么不同? .........!一行代码就拿40分!.......... puzzledman消息发送到那里去了? windows 与 android 的点对点ip通话? ActiveX控件能动态加载到Custom Control控件里吗,如何加载?
void GetPath(char *strPath,HANDLE hHandle)
{
HANDLE hHeap = GetProcessHeap();
DWORD dwSize = 0;
POBJECT_NAME_INFORMATION pName = (POBJECT_NAME_INFORMATION)HeapAlloc(hHeap, HEAP_ZERO_MEMORY, 0x1000);
NTSTATUS ns = NtQueryObject(hHandle, ObjectNameInformation, (PVOID)pName, 0x1000, &dwSize);
DWORD i = 1;
while(ns == STATUS_INFO_LEN_MISMATCH)
{
pName = (POBJECT_NAME_INFORMATION)HeapReAlloc(hHeap, HEAP_ZERO_MEMORY, (LPVOID)pName, 0x1000 * i);
ns = NtQueryObject(hHandle, ObjectNameInformation, (PVOID)pName, 0x1000, NULL);
i++;
}
wsprintf(strPath, "%S", pName->Name.Buffer);
HeapFree(hHeap,0,pName);
}
编译时如提示某变量无定义,可查阅MSDN,包含相应的头文件。