当前位置: 首页> 游戏> 网游 > Windows内核函数 - 删除子项

Windows内核函数 - 删除子项

时间:2025/7/13 17:44:19来源:https://blog.csdn.net/wendyWJGU/article/details/141820773 浏览次数:0次

    DDK同样提供了删除子项的内核函数,它就是ZwDeleteKey。其声明是:

	NTSTATUS ZwDeleteKey(IN HANDLE KeyHandle);// KeyHandle:  打开的文件句柄// 返回值:  指示是否删除成功

      需要指出,该函数只能删除没有子项的项目。如果项中还有子项,则不能删除。这时候需要先将该项中的所有子项全部删除后,再删除该项。下面的例子演示了如何在驱动程序中删除子项。

UNICODE_STRING RegUnicodeStr;HANDLE hRegister;#define MY_REG_SOFTWARE_KEY_NAME L"\\Registry\\Machine\\Software\\MyBOOKS\\SubItem"// 初始化 UNICODE_STRINGRtlInitUnicodeString(&RegUnicodeStr, MY_REG_SOFTWARE_KEY_NAME);OBJECT_ATTRIBUTES objectAttributes;// 初始化objectAttributesInitializeObjectAttributes(&objectAttributes,&RegUnicodeStr,OBJ_CASE_INSENSITIVE, // 对大小写敏感NULL,NULL);// 打开注册表项NTSTATUS ntStatus = ZwOpenKey(&hRegister,KEY_ALL_ACCESS,&objectAttributes);// 判断操作是否成功if (NT_SUCCESS(ntStatus)){KdPrint(("Open register successfully. \n"));}// 删除注册表键ntStatus = ZwDeleteKey(hRegister);if (NT_SUCCESS(ntStatus)){KdPrint(("Delete the item successfully. \n"));}else if (ntStatus == STATUS_ACCESS_DENIED){KdPrint(("STATUS_ACCESS_DENIED. \n"));}else if (ntStatus == STATUS_INVALID_HANDLE){KdPrint(("STATUS_INVALID_HANDLE. \n"));}else{KdPrint(("Maybe the item has sub item to delete. \n"));}// 关闭句柄ZwClose(hRegister);

关键字:Windows内核函数 - 删除子项

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: