c++开机自动启动程序

为了让程序开机自动启动,找了一些网上资料终于实现。

 

方法一 将批处理文件放到自启动目录里

我要开机自启动的正好是个批处理文件,因为多个程序需要同个库的不同版本,设置环境变量会冲突,就把自己需要的库写进自己的批处理文件中,执行对应的批处理文件

1.bat文件创建一个快捷方式
2.放在:
      英文路径C:\Users\(自己的计算机用户名)\AppData\Roaming\Microsoft\Windows\Start \Menu\Programs\Startup
      中文路径:\C盘(系统盘)\用户\(自己的计算机用户名)\AppData\Roaming\Microsoft\Windows\「开始」菜单\程序\启动

放在 路径下即可开机自启动

如果觉得上面的方法麻烦

1.bat创建一个快捷方式

2.键盘上Win+R

3.在弹出的窗口中输入命令shell:Common Startup并回车

4.自动打开开机自启动的文件夹

5.将快捷方式放入即可

网易解灰进阶教程(bat静默运行等教程) - 哔哩哔哩 (bilibili.com)

 

方法二 代码实现修改注册表

void HKRunator()
{
    char programName[MAX_PATH] = { 0 };
    DWORD dwRet = GetModuleFileName(NULL, (LPSTR)programName, MAX_PATH);
    HKEY hKey = NULL;
    DWORD rc;
    rc = RegCreateKeyEx(HKEY_LOCAL_MACHINE,
        "Software\\Microsoft\\Windows\\CurrentVersion\\Run",
        0,
        NULL,
        REG_OPTION_NON_VOLATILE,
        KEY_WOW64_64KEY | KEY_ALL_ACCESS,
        NULL,
        &hKey,
        NULL);
    if (rc == ERROR_SUCCESS)
    {
        rc = RegSetValueEx(hKey,
            "MyProgramName",
            0,
            REG_SZ,
            (const BYTE*)programName,
            strlen(programName));
        if (rc == ERROR_SUCCESS)
        {
            RegCloseKey(hKey);
        }
    }
}

到这里仍没完,程序报rc=5,没有权限,还要设置一下。

属性》链接器》清单文件》UAC执行级别》

原来是asInvoker,设置为requireAdministrator

 再下次选择提升权限重启就有权限执行成功了。

c语言 程序开机自启_键盘侠伍十七的博客-CSDN博客_c语言开机自启动

用C语言设置程序开机自启动_浪客小子的博客-CSDN博客_c语言开机自启动代码

C++ 设置程序开机自启动,并最小化至托盘_nSponge的博客-CSDN博客_c++最小化到托盘

RegCreateKeyEx函数_ke_yi_的博客-CSDN博客_regcreatekeyex

 

方法三 用脚本实现开机自动启动,不过我还没时间研究,试过程序会不断重启,可能参数有问题

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
set _task=ControlSys...
set _runexe=start.vbs
:checkstart
echo "检查进程"
for /f "tokens=5" %%c in ('qprocess.exe ^| find "%_task%"') do (if %%c==" " ( @echo ) else goto checkag )
goto startsvr
:startsvr
echo *********开始启动程序**********
echo 启动时间 %time% >> restart.log
echo set ws=wscript.createobject("wscript.shell") >> %_runexe%
echo ws.run "ControlSys.bat",0,false >> %_runexe%
start /b %_runexe%
echo Wscript.Sleep Wscript.Arguments(0) >%tmp%\delay.vbs
cscript //b //nologo %tmp%\delay.vbs 10000
del %_runexe% /Q
echo **********程序启动完成**********
goto checkstart
:checkag
echo Wscript.Sleep Wscript.Arguments(0) >%tmp%\delay.vbs
cscript //b //nologo %tmp%\delay.vbs 10000
goto checkstart

Windows下程序的自启动脚本bat(教你直接用)_望夫山居士的博客-CSDN博客

 

posted @ 2022-12-26 14:27  yangly  阅读(3204)  评论(0编辑  收藏  举报