c语言编程软件开机自动启动,VS2012+C语言+设置程序开机自动启动+示例

#include

#include

#include

char* ReplaceString(const char *srcStr, const char *src, const char *dest) //替换字符串,获得文件路径

{

char *ptr;

int len = strlen(srcStr);

ptr = (char*)malloc(sizeof(char)*len+1);

strcpy(ptr, srcStr);

for ( int i=0; i

{

if ( 0==strncmp(&ptr[i], src, strlen(src)) ) //查找想要被替换字符串的起始位置

{

strncpy(&ptr[i], dest, strlen(dest)); //替换字符串的长度为目标字符串的长度

}

}

ptr[len+strlen(dest)-strlen(src)] = '\0'; //计算出字符串结束位置,并加上‘/0’

return ptr;

}

int StartupRun(const char *key, const char *path) //key启动项名称,path为要开机启动的程序

{

HKEY hKey;

DWORD dwDisposition;

LONG result = RegCreateKeyEx( //用来创建注册表键,如果该键已经存在,则打开它(注册表键不区分大小写)

HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",

NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,

NULL, &hKey, &dwDisposition );

if(result != ERROR_SUCCESS)

{

RegCloseKey(hKey);

return 0;

}

result = RegSetValueEx(hKey, key, NULL, REG_SZ, (const unsigned char *)path, strlen(path)+1); //在注册表项下设置指定值的数据和类型。

if(result != ERROR_SUCCESS)

{

RegCloseKey(hKey);

return 0;

}

RegCloseKey(hKey);

return 1;

}

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

{

//StartupRun("偷闲--开机启动程序", "C:\\Users\\Administrator\\Documents\\Visual Studio 2012\\Projects\\tx\\Release\\tx.exe"); //绝对路径

//StartupRun("偷闲--开机启动程序", ".\\tx.exe");//不可用

printf("获取程序当前路径:");

printf(argv[0]); //argv[0]为当前程序的路径

printf("\n");

const char *str;

str = ReplaceString(argv[0], "StartRun.exe", "tx.exe"); //StartRun.exe为当前程序的名称,tx.exe为想要开机启动程序的名称,二者在同一目录下

StartupRun("偷闲--开机启动程序1.0", str);

printf("\n设置开机启动程序路径:");

printf(str);

printf("\n\n设置成功\n\n");

system("pause");

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值