VC实现程序开机启动


要实现程序开机启动,其实就是要在系统的注册表中添加相应的信息,包括你想要自动启动的程序的路径。

在这里有四个与系统注册表相关的API函数:RegOpenKey、RegSetValueEx、RegDeleteValue、RegCloseKey。这四个函数的功能从他们的字面意思就可以猜得到,分别是,打开注册表、写入信息、删除信息和关闭注册表。下面来看下这四个函数的声明:

LONG RegOpenKey( HKEY hKey, // 要打开键的句柄

  LPCTSTR lpSubKey, // 要打开子键的名字的地址

  PHKEY phkResult // 要打开键的句柄的地址);

第一个参数是使用“regedit”实用程序打开注册表看到的左边的几个值的其中一个;第二个参数是相关的对应子键的地址,这里我们使用的是“SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run”,第三个参数是函数返回的HKEY的地址,这个参数是函数在执行成功后得到的控制子键的句柄。

LONG WINAPI RegSetValueExA (
    HKEY hKey,//上面函数的第三个参数的值
    LPCSTR lpValueName,//想要设置的子键的名字
    DWORD Reserved,//系统保留,必须为0
    DWORD dwType,//子键的类型,字符串对应为REG_SZ
    CONST BYTE* lpData,//子键的值,这里为程序的路径
    DWORD cbData//子键值的大小(字节为单位)
    );

LONG WINAPI RegDeleteValue(

  HKEY hKey,//子键的句柄

  LPCTSTR lpValueName//子键的名字,上面函数的第二个参数

);

LONG WINAPI RegCloseKey(    
   HKEY hKey
);

下面是我的一段设置开机自启动的源代码:

void CXXX::OnClickAutoLogin() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	//程序自动运行
	char svPath[MAX_PATH];
	::GetModuleFileName(NULL,svPath,sizeof(svPath));
	HKEY hKey;
	RegOpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",&hKey);
	if(m_bAutoLogin)
		RegSetValueEx(hKey,"我的开机程序",0,REG_SZ,(unsigned char*)svPath,strlen(svPath));
	else
		RegDeleteValue(hKey,"我的开机程序");
	RegCloseKey(hKey);
}

 

 


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值