V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
einsdisp
V2EX  ›  程序员

通过 windows 任务栏图标启动的程序,如何设定该程序运行时的环境变量

  •  
  •   einsdisp · 2021-11-08 17:01:12 +08:00 · 995 次点击
    这是一个创建于 870 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1 、不能修改系统的环境变量设置

    2 、不能使用 cmd 命令、脚本、或在包装一个 launcher.exe 程序等,因为这样的话,使用原程序的任务栏图标启动后,是没有这个环境变量的

    3 、方法要尽可能通用

    8 条回复    2021-11-08 19:10:36 +08:00
    ch2
        1
    ch2  
       2021-11-08 17:08:44 +08:00
    在 appdata 目录维护一个配置文件,每次去读写配置文件
    AoEiuV020
        2
    AoEiuV020  
       2021-11-08 17:11:55 +08:00
    | 不能修改系统的环境变量设置

    那就修改用户的环境变量,
    einsdisp
        3
    einsdisp  
    OP
       2021-11-08 17:41:30 +08:00
    @AoEiuV020 也不能修改用户的环境变量
    einsdisp
        4
    einsdisp  
    OP
       2021-11-08 17:45:03 +08:00
    @ch2 是第三方的 EXE 程序,而且方法要通用,所以不可能要求 EXE 去读取什么配置文件的
    kkocdko
        5
    kkocdko  
       2021-11-08 18:37:59 +08:00 via Android
    在程序目录下放一个 dll 进行劫持,hook 掉入口点
    kkocdko
        6
    kkocdko  
       2021-11-08 18:41:59 +08:00 via Android
    https://github.com/kkocdko/crknob/blob/master/src/main.cc
    类似这样。坏处是:报毒,启动时间增加几十毫秒,某些程序可能出错
    AoEiuV020
        7
    AoEiuV020  
       2021-11-08 18:51:13 +08:00 via Android
    @einsdisp 跑个脚本改用户环境变量也不可以么?

    考虑 xy 问题,无法想象什么场景是既不能改用户环境又不能改程序逻辑的,
    codehz
        8
    codehz  
       2021-11-08 19:10:36 +08:00 via Android
    (用镜像劫持)(划掉)
    标准方法是使用兼容性管理工具,可以安排环境变量设置,甚至替代 dll (但是较为复杂)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5421 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 08:40 · PVG 16:40 · LAX 01:40 · JFK 04:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.