C++

C++设置程序开机自启动

2018-06-30  本文已影响0人  刘千予

/******************************************************************************************

Function:        autostart

Description:    设置程序开机自启动

*******************************************************************************************/

void dxir::Base::AutoStart()

{

Base base;

HKEY hKey;

std::string strRegPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";

try

{

base.stringToLPCWSTR(strRegPath);

//1、找到系统的启动项 

if (RegOpenKeyEx(HKEY_CURRENT_USER, base.stringToLPCWSTR(strRegPath), 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) ///打开启动项     

{

//2、得到本程序自身的全路径

TCHAR strExeFullDir[MAX_PATH];

GetModuleFileName(NULL, strExeFullDir, MAX_PATH);

//3、判断注册表项是否已经存在

TCHAR strDir[MAX_PATH] = {};

DWORD nLength = MAX_PATH;

long result = RegGetValue(hKey, nullptr, base.stringToLPCWSTR("DXIR"), RRF_RT_REG_SZ, 0, strDir, &nLength);

//4、不存在

if (result != ERROR_SUCCESS || _tcscmp(strExeFullDir, strDir) != 0)

{

//5、添加一个子Key,并设置值,"GISRestart"是应用程序名字(不加后缀.exe)

RegSetValueEx(hKey, base.stringToLPCWSTR("DXIR"), 0, REG_SZ, (LPBYTE)strExeFullDir,

(lstrlen(strExeFullDir) + 1) * sizeof(TCHAR));

//6、关闭注册表

RegCloseKey(hKey);

}

}

else

{

std::cout << "警告\n系统参数错误,不能随系统启动" << std::endl;

}

}

catch (std::exception e)

{

}

}

上一篇下一篇

猜你喜欢

热点阅读