C++软件开机自启功能

 1、编写控制台程序又需要设置开机自启功能的时候,往往会需要隐藏Dos黑窗口,只需要一行代码就能完成:

#pragma comment(linker,"/subsystem:\"windows\"  /entry:\"mainCRTStartup\"" ) //隐藏DOS黑窗口

2、开机自启一般通过写入自启注册表"Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"的目录中,可以写在本地自启目录HKEY_LOCAL_MACHINE下,也可以写在当前用户HKEY_CURRENT_USER的目录下:

//定义路径最大程度
#define MAX_PATH 4096
//定义写入的注册表路径
#define SELFSTART_REGEDIT_PATH "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"

//设置本身开机自启动 参数为true表示设置自启,为false 表示取消
BOOL SetSelfStart(bool bKey)
{
    //获取程序完整路径
    char pName[MAX_PATH] = { 0 };
    GetModuleFileNameA(NULL, pName, MAX_PATH);
    //在注册表中写入启动信息
    HKEY hKey = NULL;
    LONG lRet = NULL;
    if ( bKey)
    {
        //打开注册表
        lRet = RegOpenKeyExA(HKEY_CURRENT_USER, SELFSTART_REGEDIT_PATH, 0, KEY_ALL_ACCESS, &hKey);
        //判断是否成功
        if (lRet != ERROR_SUCCESS)
        {
            return FALSE;
        }
        else
        { 

            //写入注册表,名为testProtect,可以自己修改
            RegSetValueExA(hKey, "testProtect", 0, REG_SZ, (const unsigned char*)pName, strlen(pName) + sizeof(char));

            //关闭注册表
            RegCloseKey(hKey);
            return TRUE;
        }    
    }
    else
    {
        lRet = RegOpenKeyExA(HKEY_CURRENT_USER, SELFSTART_REGEDIT_PATH, 0, KEY_ALL_ACCESS, &hKey);
        //判断是否成功
        if (lRet != ERROR_SUCCESS)
        {
            return FALSE;
        }
        else
        {

             //删除名为testProtect的注册表信息
            RegDeleteValueA(hKey, "testProtect");

            //关闭注册表
            RegCloseKey(hKey);
            return TRUE;
        }
    }    
}

代码运行之后,就可以实现开机自启功能。

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值