两行代码让程序开机自动运行

/*

 autorun.hpp

 sdragonx 2018-02-19 16:27:13

*/
#ifndef AUTORUN_HPP_20180219162713
#define AUTORUN_HPP_20180219162713

#include <windows.h>
#include "ttype.hpp"//之前文章里面有

namespace cgl{
namespace windows{
namespace app{

//判断软件是否开机运行
template<typename _char_t>
bool is_autorun(const _char_t* appname)
{
	_char_t buf[MAX_PATH] = {0};
	DWORD n = MAX_PATH;
	HKEY hKey;
	DWORD type = REG_SZ;
	bool autorun = false;

	LONG result = tvalue<_char_t>(RegOpenKeyExA, RegOpenKeyExW)(
		HKEY_CURRENT_USER,
		T_TEXT(_char_t, "Software\\Microsoft\\Windows\\CurrentVersion\\Run"),
		0, KEY_READ, &hKey);

	if(ERROR_SUCCESS == result)
	{
		tvalue<_char_t>(RegQueryValueExA, RegQueryValueExW)(hKey, appname, 0, &type, buf, &n);
		if(n){
			if(!cscmp(buf, appname)){
				autorun = true;
			}
		}
		RegCloseKey(hKey);
	}
	return autorun;
}

//设置是否开机运行,兼容xp
template<typename _char_t>
bool set_autorun(const _char_t* appname, const _char_t* exefile, bool run)
{
	HKEY hKey;
	bool autorun = false;

	LONG result = tvalue<_char_t>(RegOpenKeyExA, RegOpenKeyExW)(
		HKEY_CURRENT_USER,
		T_TEXT(_char_t, "Software\\Microsoft\\Windows\\CurrentVersion\\Run"),
		0, KEY_WRITE, &hKey);

	if(ERROR_SUCCESS == result)
	{
		if(run){
			tvalue<_char_t>(RegSetValueExA, RegSetValueExW)(hKey, appname, 0, REG_SZ, (BYTE*)exefile, cslen(exefile)*sizeof(_char_t));
			autorun = true;
		}
		else{
			tvalue<_char_t>(RegDeleteValueA, RegDeleteValueW)(hKey, appname);
			autorun = false;
		}
		RegCloseKey(hKey);
	}
	return autorun;
}

}//end namespace app
}//end namespace windows
}//end namespace cgl

#endif //AUTORUN_HPP_20180219162713

char* app_name = "myapp";
char* app = "myapp.exe";
if(!is_autorun(app_name)){
    set_autorun(app, true);
}

模板函数,到哪都能用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值