通过注册表实现开机自启动

前言:

  实现开机自启动的途径和方式有很多种,其中修改注册表方式应用最为广泛。注册表相当是操作系统的数据库,记录着系统中方方面面的数据,其中也不乏直接或间接导致开机自启动的数据。

实现原理:

  windows提供了专门的开机自启动注册表。在每次开机完成后,它都会在这个注册表键下遍历键值,以获取键值中的程序路径,并创建进程启动程序。所以,只需要在这个注册表键下添加想要设置自启动程序的路径就可以了。其中常见的两个路径,分别是 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 与 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

  注意:要修改HKEY_LOCAL_MACHINE主键的注册表,这要求程序要有管理员权限。而修改HKEY_CURRENT_USER主键的注册表,只需要用户默认权限就可以实现

实现代码:

BOOL Reg_CurrentUser(char *lpszFileName, char *lpszValueName)
{
    // 默认权限
    HKEY hKey;
    // 打开注册表键
    if (ERROR_SUCCESS != ::RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\ Windows\\ CurrentVersion\\Run", 0, KEY_WRITE, &hKey))
    {
        ShowError("RegOpenKeyEx");
        return FALSE;
    }
    // 修改注册表值,实现开机自启动
    if (ERROR_SUCCESS != ::RegSetValueEx(hKey, lpszValueName, 0, REG_SZ, (BYTE *)lpszFileName, (1 + ::lstrlen(lpszFileName))))
    {
        ::RegCloseKey(hKey);
        ShowError("RegSetValueEx");
        return FALSE;
    }
    // 关闭注册表键
    ::RegCloseKey(hKey);

    return TRUE;
}

猜你喜欢

转载自www.cnblogs.com/ndyxb/p/12897911.html