美文网首页
修改环境变量刷新到所有进程

修改环境变量刷新到所有进程

作者: laravel | 来源:发表于2017-07-06 22:27 被阅读107次

        每次修改系统环境变量以后需要重启explorer.exe进程,使之生效,但是在安装python的时候,发现,并没有重启explorer.exe但是新打开cmd竟然可以有python命令了,在好奇心的驱使下,百度了一下,发现,windows有一个特殊的消息WM_SETTINGCHANGE,进程在收到该消息时,应该更新自身的环境变量,而且explorer.exe进程,很听话的监听处理了这一消息,所以我们只需要在修改完环境变量以后广播这一消息,大部分的系统进程,就都可以更新到最新的环境变量副本了(即少数变态进程,如:cm.exe进程除外)。
        为了发送这一消息,C语言的demo程序如下:

    #include "windows.h"
    #include "stdio.h"
    #pragma comment(lib,"user32.lib")
    
    int main(int argc, char const *argv[])
    {
        long dwReturnValue=0;
        SendMessageTimeout(HWND_BROADCAST,WM_SETTINGCHANGE,0,(LPARAM)"Environment",SMTO_ABORTIFHUNG,5000,&dwReturnValue);
        puts("Environment Variables updated");
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:修改环境变量刷新到所有进程

          本文链接:https://www.haomeiwen.com/subject/wqmkhxtx.html