Windows下C++开机启动代码实现 [转]

Windows下C++开机启动代码实现 [转]

#include <windows.h>
//设置当前程序开机启动
void AutoPowerOn()
{
    HKEY hKey;
    //std::string strRegPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
 
 
    //1、找到系统的启动项  
    if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 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, _T("GISRestart"), RRF_RT_REG_SZ, 0, strDir, &nLength);
 
 
        //4、已经存在
        if (result != ERROR_SUCCESS || _tcscmp(strExeFullDir, strDir) != 0)
        {
            //5、添加一个子Key,并设置值,"GISRestart"是应用程序名字(不加后缀.exe) 
            RegSetValueEx(hKey, _T("GISRestart"), 0, REG_SZ, (LPBYTE)strExeFullDir, (lstrlen(strExeFullDir) + 1)*sizeof(TCHAR));
 
 
            //6、关闭注册表
            RegCloseKey(hKey);
        }
    }
}
 
 
//取消当前程序开机启动
void CanclePowerOn()
{
    HKEY hKey;
    //std::string strRegPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
 
 
    //1、找到系统的启动项  
    if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS)
    {
        //2、删除值
        RegDeleteValue(hKey, _T("GISRestart"));
 
 
        //3、关闭注册表
        RegCloseKey(hKey);
    }
}

 

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中,要实现开机启动功能,需要操作系统的支持。以下是在Windows操作系统中使用C++代码实现开机启动的方法: ```cpp #include <iostream> #include <Windows.h> #include <ShlObj.h> int main() { // 获取当前可执文件的路径 TCHAR szPath[MAX_PATH]; GetModuleFileName(NULL, szPath, MAX_PATH); // 获取启动文件夹的路径 TCHAR szStartupPath[MAX_PATH]; if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_STARTUP, NULL, 0, szStartupPath))) { // 构建启动项的完整路径 TCHAR szShortcutPath[MAX_PATH]; PathCombine(szShortcutPath, szStartupPath, TEXT("MyApp.lnk")); // 创建快捷方式 IShellLink* pShellLink; CoInitialize(NULL); if (SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&pShellLink))) { pShellLink->SetPath(szPath); pShellLink->SetDescription(TEXT("My App")); pShellLink->SetWorkingDirectory(szPath); pShellLink->SetIconLocation(szPath, 0); IPersistFile* pPersistFile; if (SUCCEEDED(pShellLink->QueryInterface(IID_IPersistFile, (LPVOID*)&pPersistFile))) { if (SUCCEEDED(pPersistFile->Save(szShortcutPath, TRUE))) { std::cout << "开机启动设置成功!" << std::endl; } pPersistFile->Release(); } pShellLink->Release(); } CoUninitialize(); } return 0; } ``` 上述代码使用了Windows API和Shell对象来创建一个快捷方式,并将其放置在Windows启动文件夹中。请注意,代码中的`"MyApp.lnk"`和`"My App"`可以根据你的实际应用进修改。 编译并运上述代码后,它将在Windows启动文件夹中创建一个快捷方式,从而实现开机启动功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值