windows - 如何以编程方式启用/禁用 Windows 启动项?

标签 windows winapi startup

我知道启动项本身是在注册表SOFTWARE\Microsoft\Windows\CurrentVersion\Run中定义的。

可以使用 win32 更改此设置以添加/删除启动项。

但是我不知道如何启用/禁用这些项目?

SOFTWARE\Microsoft\Windows\CurrentVersion\Run 下的条目没有启用/禁用标志。

如何使用 win32 启用/禁用启动项?

最佳答案

引用这个thread :

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApp‌​roved\Run contains records with binary data for disabled programs. This data accessed and edited via regular WinAPI calls.

所以您可以尝试更改注册表信息来实现该功能。

一些代码供您引用:

#include <windows.h>

int main()
{
    HKEY key;
    BOOL fResult = RegOpenKeyEx(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\Run", 0, KEY_WRITE, &key);
    if (ERROR_SUCCESS == fResult)
    {
        DWORD dwData[] = { 0x2,0x0,0x0 };
        if (RegSetValueEx(key, __TEXT("OneDrive"), 0, REG_BINARY, (LPBYTE)&dwData, sizeof(dwData)))
        {
            return FALSE;
        }
    }
    return fResult;
}

如果您想禁用该功能,只需修改代码为dwData = 0x03即可。

更多引用:Configuring an installer to enable/disable startup on Windows start , C# application not running on startup

关于windows - 如何以编程方式启用/禁用 Windows 启动项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66903672/

相关文章:

c++ - 我必须在 VS 2008 中使用 "Visual"C++ 吗?

c++ - 将 float 的值打印到小数点后两位

python - 杀死启动时启动的 python 进程

c - 谁定义了栈指针地址

java - 从命令行设置 Spring 属性文件位置

windows - Eclipse 外部工具,路径变量中的空白

Python 多处理 linux windows 区别

c++ - 默认 TreeView 项目高度

c# - 如何在 C# GUI 窗体中运行批处理文件

ASP.NET/IIS 安全(Windows 身份验证)