[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
没看明白~~~
修改注册表设置我采用.inf文件,执行用
  1. rundll32 setupapi,InstallHinfSection DefaultInstall 132 .\*.inf
复制代码
结束用资源管理器用
  1. taskkill.exe /im explorer.exe /f
复制代码
刷新用
  1. gpupdate /force
复制代码
  1. RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
复制代码
重新新启动资源管理器
  1. start explorer.exe
复制代码
注册表修改生效 (xpsp2 xpsp3 2003通过)
1

评分人数

TOP

1# qzwqzw


很好。。。

TOP

38# Batcher

我是用xp sp3 如下测试的:

注册表添加 环境变量 test:
cmd中 执行 “reg add HKCU\Environment\ /v test /d 1234567890”

然后任务管理器结束掉explorer.exe,cmd.exe

关掉任务管理器

ctrl+alt+delete 打开任务管理器, 文件》新建任务(运行),输入explorer,

再在运行中输入cmd

在cmd中输入set test
  1. 显示“环境变量 test 没有定义”
复制代码

TOP

32# ▄︻┻═┳一


往注册表里面写一个环境变量,重启explorer和cmd,新的cmd里面无法识别这个环境变量?你的测试环境是?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

33# qzwqzw

谢谢,你很认真。

我只是喜欢严谨

TOP

System->smss.exe->winlogon.exe->taskmgr.exe
这条见解很独到,非常深刻,学习了!

TOP

33# qzwqzw


将explorer作为cmd的子进程,这个方法我咋没想到呢...

TOP

本帖最后由 qzwqzw 于 2011-5-6 17:17 编辑

05-06修订

  • 增加Windows环境变量的注册表存储位置
  • 修改explorer.exe下修改环境变量的说明
天的白色影子

TOP

32# ▄︻┻═┳一
我得承认关于explorer.exe环境空间的部分内容
写得是过于随意了些
虽然改过一次
仍然不是很满意

“只是需要重新启动explorer.exe才能刷新到它的环境空间中”
这句话未将问题的本质描述清楚
应用程序的环境空间有继承特性
这句话同样适用于explorer.exe以及其他应用程序
在你使用“任务管理器”结束exploer.exe时
应该知道“任务管理器”的进程位于进程树
System->smss.exe->winlogon.exe->taskmgr.exe
而修改注册表中的环境变量不会对这些进程的环境空间产生影响
那么使用taskmgr.exe启动的explorer.exe自然不会继承到新变量

而注销后重新登录或者系统重启
是由userinit.exe启动的explorer.exe
而userinit.exe的主要作用就是读取计算机和用户配置
包括环境变量
那自然会从注册表中抓取到新的变量
再被它的子进程explorer.exe所继承

我原文中的重启explorer.exe
是在这样的测试条件下成功的
打开cmd.exe
set _newvar=value设置一个新变量
taskkill /im:explorer.exe /f杀掉当前的explorer.exe进程
start explorer.exe启动一个心得explorer.exe进程
这个新进程作为cmd.exe的子进程
自然会继承cmd的环境空间
其中就包括新定义的变量_newvar

不知道这样说你是否清楚了?
1

评分人数

天的白色影子

TOP

31# Batcher


这个我当然知道,重启exploer后再重启cmd.exe N*N 也 不会读取环境变量。

至少得注销一次系统才可以“刷新”系统环境变量。

TOP

30# ▄︻┻═┳一


重启explorer之后,还需要重启cmd
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

在“系统属性”中更改全局变量和用户变量后
不仅仅了修改了注册表中的相对应的键值
也同时修改了explorer.exe的环境变量
所以如果我们仅仅修改注册表中的环境变量键值
那么需要重新启动explorer.exe才能读取到环境空间中



注册表添加环境变量,然后用任务管理器结束掉explorer进程,再重启explorer的方式,

cmd中不能读取新添加的环境变量。


需要注销系统(logoff)或者重启系统才可以在cmd中读取环境变量。

以上在xp系统中测试。

TOP

4-30修订

本帖最后由 qzwqzw 于 2011-4-30 22:28 编辑


  • 增加Windows的环境变量排序、动态变量、和setlocal/endlocal
  • 增加msdos的set命令、autoexec.bat、setx.exe工具的说明
  • 修改windows下环境空间和变量读写的说明
天的白色影子

TOP

环境变量用API
SetEnviromentVaraible。。。随便打的,是环境和变量的英文。。。MSDN有。。。
自己可以想办法跟进去看。。。应该不是explorer去刷新。

TOP

右键任务栏打开的任务管理器是explorer所启动的。。。

TOP

返回列表