注册表打开
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegisteryPath) {DriverObject->DriverUnload = Unload;OBJECT_ATTRIBUTES Attr = { 0 };HANDLE hKey = NULL;ULONG ulDisposition = 0;NTSTATUS nStatus = STATUS_SUCCESS;UNREFERENCED_PARAMETER(DriverObject);//使用宏初始化objectattr 结构体InitializeObjectAttributes(&Attr,RegisteryPath,OBJ_KERNEL_HANDLE|OBJ_CASE_INSENSITIVE,NULL,NULL);nStatus = ZwCreateKey(&hKey,//注册表handleKEY_WRITE,//访问权限KEY_ALL_ACCESS,KEY_SET_VALUE&Attr,//对象属性0,//可以设置为nullNULL,REG_OPTION_NON_VOLATILE,//重启后不保留&ulDisposition);//返回结果 REG_CREATED_NEW_KEY(创建了新的)或REG_OPENED_EXISTING_KEYif (hKey!=NULL){ZwClose(hKey);//关闭handlehKey = NULL;}return STATUS_SUCCESS;}
注册表修改
ZwSetValueKey 设置驱动为自启动
if (hKey!=NULL){UNICODE_STRING usValueName = { 0 };ULONG ulNewStartValue = 2;RtlInitUnicodeString(&usValueName, L"Start");nStatus = ZwSetValueKey(hKey,&usValueName,0,REG_DWORD,(PVOID)&ulNewStartValue,sizeof(ulNewStartValue));ZwClose(hKey);hKey = NULL;}
注册表读取
ZwQueryValueKey
