Windows 7 使用rundll32 user32.dll指示用户';中国的环境发生了变化
我无法在windows 7中修改环境变量。 但是,我已被授予修改注册表设置的权限。 例如,我可以修改: HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 关键字:BPATH 它被附加到我的系统的pathEnv的末尾 但是,当我进行更改时,更改直到下次重新启动才会生效 我想找到一个“Alwasy Installed”的命令行,它可以发出BPATH更改的信号,以便为后续程序和窗口始终更新“PATH”Windows 7 使用rundll32 user32.dll指示用户';中国的环境发生了变化,windows-7,path,user32,rundll32,Windows 7,Path,User32,Rundll32,我无法在windows 7中修改环境变量。 但是,我已被授予修改注册表设置的权限。 例如,我可以修改: HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 关键字:BPATH 它被附加到我的系统的pathEnv的末尾 但是,当我进行更改时,更改直到下次重新启动才会生效 我想找到一个“Alwasy Installed”的命令行,它可以发出BPATH更改的信号,以便为后续程序和窗口始终
rundll user32.dll, [ BroadcastSystemMessage PATH CHANTGED... or somehting...]
条件:
在Powershell中,以下命令将系统变量“variableName”设置为variableValue的值。 最后一个值可以是
机器
、用户
或过程
PS C:\>[Environment]::SetEnvironmentVariable("variableName","variableValue","Machine")
shell向系统发送更新环境广播。任何打开的shell都不会接收新的环境变量。这听起来很困难,而且无法使用rundll32完成-我知道,因为我已经尝试过了。这里有很多问题,rundll的文档是从哪里链接来的。这基本上只调用表单的函数: 无效回调 入口点(HWND HWND、HINSTANCE hinst、LPSTR lpszCmdLine、int nCmdShow) 这意味着-您可以调用特殊函数,这些函数是为使用此工具调用而设计的,也可以调用简单函数,它们不带参数,或者可能只是一个HWND 要刷新环境,您需要广播(即SendMessageTimeout To HWND_broadcast)WM_SETTINGCHANGE消息,第4个参数(wparam)应为0,LPRAM应为L“environment”(注意L-它必须是一个宽字符串,否则变量不会刷新!) 这里有一些正在工作的PS代码,我不记得是谁写的(实际上是 WM_SETTINGCHANGE的MSDN示例(从C++翻译而来): 它不止是一个命令,但适合一个小脚本 我还没有用变量(路径)中的变量尝试过你的技巧,但可能是, 这样的配置需要两次后续刷新(第一次允许更新BPATH,第二次允许更新BPATH值。Powershell:
[Environment]::SetEnvironmentVariable("path",[Environment]::GetEnvironmentVariable("path"),"Machine")
好了,
将Path Machine变量设置为其自身
(请注意,如果您更改了“路径”,并且它没有更新为Explorer.exe,Powershell可能会再次重置当前环境!)
[Environment]::SetEnvironmentVariable("path",[Environment]::GetEnvironmentVariable("path"),"Machine")