C/C++知识点之注册表注入RegInject(dll)
小标 2019-03-01 来源 : 阅读 1574 评论 0

摘要:本文主要向大家介绍了 C/C++知识点之注册表注入RegInject(dll),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了 C/C++知识点之注册表注入RegInject(dll),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C/C++知识点之注册表注入RegInject(dll)

// RegInject.h


#pragma once

// RegInject 对话框

class RegInject : public CDialogEx
{
    DECLARE_DYNAMIC(RegInject)

public:
    RegInject(CWnd* pParent = NULL);   // 标准构造函数
    virtual ~RegInject();

// 对话框数据
    enum { IDD = IDD_DIALOG6 };

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

    DECLARE_MESSAGE_MAP()
public:
    CString m_strDllPath;
    afx_msg void OnBnClickedButton1();
    afx_msg void OnBnClickedButton2();
};


// RegInject.cpp


// RegInject.cpp : 实现文件
//

#include "stdafx.h"
#include "MyInjectTool.h"
#include "RegInject.h"
#include "afxdialogex.h"

// RegInject 对话框

IMPLEMENT_DYNAMIC(RegInject, CDialogEx)

RegInject::RegInject(CWnd* pParent /*=NULL*/)
    : CDialogEx(RegInject::IDD, pParent)
    , m_strDllPath(_T(""))
{

}

RegInject::~RegInject()
{
}

void RegInject::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT1, m_strDllPath);
}

BEGIN_MESSAGE_MAP(RegInject, CDialogEx)
    ON_BN_CLICKED(IDC_BUTTON1, &RegInject::OnBnClickedButton1)
    ON_BN_CLICKED(IDC_BUTTON2, &RegInject::OnBnClickedButton2)
END_MESSAGE_MAP()

// RegInject 消息处理程序

void RegInject::OnBnClickedButton1()
{
    // TODO:  在此添加控件通知处理程序代码
    char szFilter[] = "动态链接库|*.dll";
    CFileDialog fileDlg(TRUE, "dll", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
    UpdateData(TRUE);
    if (fileDlg.DoModal() == IDOK)
    {
        m_strDllPath = fileDlg.GetPathName();
    }
    UpdateData(FALSE);
}

void RegInject::OnBnClickedButton2()
{
    // TODO:  在此添加控件通知处理程序代码
    BOOL bRet = FALSE;
    HKEY hKey = NULL;
    LONG nReg;
    char szDllPath[MAX_PATH] = { 0 };

    //打开HKEY_LOCAL_MACHINE/Software/Microsoft/WindowsNT/CurrentVersion/Windows
    nReg = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
        "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows",
        0,
        KEY_ALL_ACCESS,
        &hKey);

    if (nReg != ERROR_SUCCESS)
    {
        MessageBox("打开注册表失败");
        RegCloseKey(hKey);
        return;
    }

    //设置AppInit_DLLs的键值为我们的Dll
    nReg = RegSetValueEx(hKey,
        "AppInit_DLLs",
        0,
        REG_SZ,
        //(byte *)m_strDllPath.GetBuffer(0),
        NULL,
        m_strDllPath.GetLength()
        );
    if (nReg != ERROR_SUCCESS)
    {
        MessageBox("设置注册表失败!");
        RegCloseKey(hKey);
        return;
    }

    RegCloseKey(hKey);
    return;
}

   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved