Perl如何让修改后的注册表立即生效

Perl如何让修改后的注册表立即生效

各位大侠:

    用注册表修改环境变量后必须重启动或在环境变量窗口按确定,修改后的参数才能起作用。用PERL写程序可否让修改的参数立即生效?不需要采用人为干预的方式。

请各位高手、好汉不惜赐教。

     用Win32::GUI::SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,"Environment")试过不起作用。


      在次感谢!
最简单的就是重启之


QUOTE:
原帖由 nemo02 于 2008-5-20 11:54 发表
各位大侠:

    用注册表修改环境变量后必须重启动或在环境变量窗口按确定,修改后的参数才能起作用。用PERL写程序可否让修改的参数立即生效?不需要采用人为干预的方式。

请各位高手、好汉不惜赐教。

...

windows没有
set XX

用 perl的 %ENV
吗?
没在windows上写代码..不清楚..
謝謝大家的關注。

SET 只是臨時的進程參數。

$ENV{'PATH}修改不了WINDOWS XP 的環境變量, VC可以用程序實現難道PERL就不行么?

盼高手。。。
Win32::TieRegistry - Powerful and easy ways to manipulate a registry [on Win32 for now].

这个不知道可不可以。
我没弄过这些东西
1. 部分注册表修改后可以立即生效.
2. 部分注册表需要重新启动一下 explorer.exe 进程.
3. 部分注册必须重新启动os才可以生效. 不重新启动没有效果.
谢谢圣骑士的建议,

有个VC写的程序,可以实现这个功能。可惜不能直接用。


可否用PERL开启环境变量然后向这个窗口放送个控制信号,让它自动确定?
大天使 你好。

你的方法我研究下再试试看。

之后告知结果。


QUOTE:
原帖由 nemo02 于 2008-5-20 16:07 发表
谢谢圣骑士的建议,

有个VC写的程序,可以实现这个功能。可惜不能直接用。


可否用PERL开启环境变量然后向这个窗口放送个控制信号,让它自动确定?

还是用
Win32::TieRegistry
可试试这个

system ("taskkill /f /im explorer.exe");
system("start explorer");



或者用

[Copy to clipboard] [ - ]
CODE:
Win32::Process

重启explorer.exe
应该就行了.

很久以前翻了一些有关注册表的入门书籍
好像重启explorer.exe可取代重启电脑.

如果再不行,
唯有这样了
system ("shutdown -r -t 10");

也可以用Win32::Sleep来达成这个效果

Hope This Help