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

2017-07-06  本文已影响107人  laravel

    每次修改系统环境变量以后需要重启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;
}

上一篇下一篇

猜你喜欢

热点阅读