代码之家  ›  专栏  ›  技术社区  ›  user3362334

在没有管理员权限的情况下,用c++以编程方式将程序添加到启动程序[duplicate]

  •  -1
  • user3362334  · 技术社区  · 6 年前

    对于没有管理员权限的当前用户,是否可以在c++中为启动添加程序?

    一种选择是修改注册表,但这需要管理员权限。

    另一种选择是将符号链接到: %APPDATA%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup . 我试着用 filesystem library 这样地:

    fs::create_symlink("C\\Users\\example\\myapp.exe", "C:\\Users\\example\\Documents\\myapp.lnk");
    

    但是,除非我以管理员身份运行应用程序,否则我会得到: Invalid Arguments: Operation not permitted

    我还尝试从c++运行shell命令,如下所示:

    system("mklink C:\\Users\\example\\myapp.exe C:\\Users\\example Documents\\myapp.lnk");
    

    但如果没有管理员权限,它也会失败。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ben Voigt    6 年前

    如果使用正确的路径,则修改注册表不需要管理员权限: HKCU\Software\Microsoft\Windows\CurrentVersion\Run

    注意 HKEY_CURRENT_USER HKEY_LOCAL_MACHINE --每个都有一个启动程序列表,但是权限不同,并且第一个不是在所有用户之间共享的。

    或者,如果要创建快捷方式,请使用 ShGetKnownFolderPath 然后传球 FOLDERID_Startup . 不要尝试自己构建此路径——Ken White提供的值将在本地化版本的Windows上中断,或者如果用户自定义了他们的配置文件。

    FOLDERID\u启动 FOLDERID_CommonStartup