zoukankan      html  css  js  c++  java
  • 内核操作注册表例子

    void GetComputerName()
    {
    NTSTATUS status;
        HANDLE hRegKey;
    UNICODE_STRING RegPath;
        OBJECT_ATTRIBUTES attributes;
        PKEY_VALUE_PARTIAL_INFORMATION pValInfo;
        
    RtlInitUnicodeString(&RegPath, L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\ComputerName\\ComputerName" );
        InitializeObjectAttributes(&attributes, &RegPath, OBJ_CASE_INSENSITIVE,NULL,NULL);
        status = ZwOpenKey( &hRegKey,KEY_READ,&attributes);
        if(NT_SUCCESS(status))
        {
       ULONG dataSize = 0;
       UNICODE_STRING valueName;
       
       RtlInitUnicodeString(&valueName, L"ComputerName");
       status = ZwQueryValueKey(hRegKey,&valueName,KeyValuePartialInformation,NULL,0,&dataSize);
    if(status==STATUS_BUFFER_TOO_SMALL)
    {
       pValInfo = ExAllocatePool( NonPagedPool, dataSize );
       if(pValInfo!=NULL)
       {
       status = ZwQueryValueKey(hRegKey,&valueName,KeyValuePartialInformation,pValInfo,dataSize,&dataSize);
    if(NT_SUCCESS(status) && pValInfo->Type==REG_SZ)
    {
    ANSI_STRING sComputerName;
    UNICODE_STRING szComputerName;
    RtlInitUnicodeString(&szComputerName, (WCHAR*)pValInfo->Data);
    if(STATUS_SUCCESS==RtlUnicodeStringToAnsiString(&sComputerName,&szComputerName,TRUE))
    {
    RtlStringCchCopyA(gHostName,16,sComputerName.Buffer);
    RtlFreeAnsiString(&sComputerName);
    }
    }
    ExFreePool( pValInfo );
       }
    }
            ZwClose(hRegKey);
        }
    }
  • 相关阅读:
    Python
    QinQ 技术解析
    TLS/SSL 协议
    TLS/SSL 协议
    TLS/SSL 协议
    排序算法之基本排序算法(冒泡、插入、选择)
    Spring Boot 学习笔记--手写版
    mysql -- collection一对多查询
    mybatis 批量操作增删改查
    easyUI之datagrid绑定后端返回数据的两种方式
  • 原文地址:https://www.cnblogs.com/ahuo/p/2133655.html
Copyright © 2011-2022 走看看