为了账号安全,请及时绑定邮箱和手机立即绑定

你好,请问关于RegCreateKeyEx函数的用法?求解释!

你好,请问关于RegCreateKeyEx函数的用法?求解释!

翻阅古今 2021-08-16 14:14:49
就是我想用c语言编写一个能修改注册表自动启动的程序,下面是代码!!当然是错的,还有很多地方需要改进!!刚学!郁闷了,总是提示错误!!#include <stdio.h>#include <stdlib.h>int main(){int autorun_register(const char *exe_filename);FILE *fp;if((fp=fopen("E:\\应用程序\\kwmusic2010.exe","r"))==NULL){printf("cannot open file\n");exit(0);}autorun_register("E:\\应用程序\\kwmusic2010.exe");system("PAUSE");return 0;}int autorun_register(const char *exe_filename){//修改注册表,开机启动int return_value=0;HKEY hroot = HKEY_LOCAL_MACHINE,hkey;const char *subkey = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";DWORD dwDisposition;long result=RegCreateKeyEx(hroot,subkey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hkey,&dwDisposition);if(result==ERROR_SUCCESS){result=RegSetValueEx(hkey,"病毒",0,REG_SZ,(CONST BYTE *)exe_filename,(DWORD)strlen(exe_filename));if(result!=ERROR_SUCCESS)return_value=-1;RegCloseKey(hkey);}else return_value=-1;if(!return_value)printf("开机启动注册成功!\n");else printf("开机启动注册失败...\n");return return_value;}帮我修改一下,能改进为将运行的本程序添加到自启动项更好!
查看完整描述

2 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

BOOL AutoRun()
{
HKEY hKey;
UINT ret=0;
char path[MAX_PATH];
if(ERROR_SUCCESS!=RegOpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",&hKey))
return FALSE;

GetModuleFileName(NULL,path,MAX_PATH);
ret=RegSetValueEx(hKey,"病毒",0,REG_SZ,(CONST BYTE*)path,strlen(path));

RegCloseKey(hKey);
return ret==ERROR_SUCCESS;
}

头文件还要加个#include <windows.h>



查看完整回答
反对 回复 2021-08-23
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

/************************************************************************/
/* 修改注册表让某个程序开机时,自动运行 */
/************************************************************************/

#include <windows.h>
#include <stdio.h>

int main()
{
int autorun_register(const char *exe_filename);
FILE *fp;
if((fp=fopen("E:\\TTplayer\\TTplayer.exe","r"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
autorun_register("E:\\TTplayer\\TTplayer.exe");
system("PAUSE");
return 0;
}
int autorun_register(const char *exe_filename)
{
//修改注册表,开机启动
int return_value=0;
HKEY hroot = HKEY_LOCAL_MACHINE,hkey;
const char *subkey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
DWORD dwDisposition;
long result=RegCreateKeyEx(
hroot,
subkey,
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,
&hkey,
&dwDisposition
);

if(result==ERROR_SUCCESS)
{
result=RegSetValueEx(
hkey,
"病毒",
0,
REG_SZ,
(CONST BYTE *)exe_filename,
(DWORD)strlen(exe_filename)
);
if(result!=ERROR_SUCCESS)return_value=-1;
RegCloseKey(hkey);
}
else return_value=-1;
if(!return_value)printf("开机启动注册成功!\n");
else printf("开机启动注册失败...\n");
return return_value;
}
程序如上,添加我机器上的千千静听程序的自动启动。
你的程序本来就是正确的。
加个
#include <windows.h>
就可以了。
我在我机器上已经运行过了。
不行可以hi我。



查看完整回答
反对 回复 2021-08-23
  • 2 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信