猿问

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

就是我想用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;
}
帮我修改一下,能改进为将运行的本程序添加到自启动项更好!

翻阅古今
浏览 347回答 2
2回答

繁华开满天机

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>

猛跑小猪

/************************************************************************//* 修改注册表让某个程序开机时,自动运行 *//************************************************************************/#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我。
随时随地看视频慕课网APP
我要回答