Qt设置进程环境变量

本文探讨了在Windows上设置环境变量的挑战,尤其是当主程序依赖DLL时。作者建议使用进程环境变量而非系统环境变量,通过创建启动进程来设置环境变量并启动主程序作为子进程,以确保DLL路径正确。这种方法简单且立即生效,避免了系统重启的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的

最近遇上了设置环境变量的问题,看似是小问题,想解决好,实在是一件不容易的事。
看看当时,我遇到这些问题的无奈:
在这里插入图片描述

首先说,是在windows进行环境变量的设置,如果在Linux那肯定是简单了。
一般来说,首先是设置系统的环境变量,这条路,是一条复杂的路,首先得写一个程序设置系统的环境变量,这一件事,不好弄,首先主程序不能做这一件事,因为主程序,依赖一些DLL,找不到这些DLL,主程序边启动都无法启动,当然,可以把DLL放到当前路径下,如果DLL少的话,还可以接受,如果多的话,不就好了,都放在当前路径下实在是太乱了,怎么办?
这又有一个新思路,就是把环境变量只设置进程的环境变量,这样,就不用管系统环境变量的事了,开发一个单独的启动进程,其设置进程环境变量,然后,再启动主程序,主程序做为了启动进程的子进程,其就有了进程的环境变量,其就能依据所提供的进程环境变量路径,找到这些依赖的DLL,这样,系统就能正常启动了。

情况

系统环境变量的方法:—复杂且不立即生效

代码:

 std::vector<std::wstring> pathList = {
   L"lib\\opencv"};
    wchar_t path[MAX_PATH];
    DWORD size = GetModuleFileNameW(NULL, path, MAX_PATH);
    if (size == 0)
    {
   
        printf("Error getting current executable path\n");
        return 1;
    }
    const wchar_t* newName = L"PATH";
    wchar_t currentValue[4096];
    DWORD currentValueSize = sizeof(currentValue) / sizeof(currentValue[0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员如山石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值