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);
        }
    }
  • 相关阅读:
    嵌入式和就业(转)
    [转] 电子技术·笔记1(9月份)
    ERP系统
    Win7 启动修复
    A1pass大大对黑客学习的建议
    你凭什么能过上你想要的生活?
    Hacker需要掌握的基础
    Hacker学习发展流程图
    硬盘SMART参数解释
    u盘的一些理解
  • 原文地址:https://www.cnblogs.com/ahuo/p/2133655.html
Copyright © 2011-2022 走看看