windows - 为什么调用ZwOpenKey时ACCESS_MASK的值为0也成功
问题描述
我制作的驱动程序完成了在内核模式下验证注册表值的工作。
代码如下
InitializeObjectAttributes(&ObjAttr,&RegKeyName,OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE | OBJ_OPENIF,NULL, NULL);
ACCESS_MASK access_mask = 0;
Status = ZwOpenKey(&handle, access_mask, &ObjAttr);
if (!NT_SUCCESS(Status))
break;
Status = ZwQueryValueKey(handle, ...);
if (!NT_SUCCESS(Status))
break;
Status = ZwDeleteValueKey(handle, &RegKeyName);
if (!NT_SUCCESS(Status))
break;
// So far, I've also succeeded in reading and deleting the values
我使用的是 Windows 10 x64,我在 7 上得到了相同的结果
我不知道为什么它会这样工作
看ZwQueryValueKey文档,上面说KEY_QUERY_VALUE是必须的,但是现在就算设置为0也成功了。
如果有人知道原因,请告诉我
解决方案
推荐阅读
- java - 当 SAM 方法在 java 中没有返回值时,Lambda 可以返回一个值
- python - Change the attributes of a character at a certain y,x location with python curses
- c++ - Member Data of Class not updating
- python - Python2:匹配所有名称的正则表达式模式
- python - 在 Django 创建的网站上运行简单的 Python 代码
- java - 如何从字符串请求生成序列?
- php - PHP CSV 上传到 MySQL 没有做任何事情
- python - 如何计算为浮点数存储的二进制近似值的真实十进制值
- python-3.x - 名称“Atno_to_Symbol”未定义
- r - 当我更改菜单项时,在 R 中改变身体