如何做到动态注册SYSTEM环境变量不用重启机器生效??

boboSir 2011-08-04 10:43:14
求助:如题!!!

未重启PC情况下,以下命令不能让Windows服务读到,但是应用环境能读到!
wmic ENVIRONMENT create Name="HOST",UserName="<SYSTEM>",VariableValue="Jiabo"

System启动的服务只能重启机器后读到!
...全文
180 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-09-12
  • 打赏
  • 举报
回复
C:\>setx /? SetX 有三种使用方式: 语法 1: SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M] 语法 2: SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M] 语法 3: SETX [/S system [/U [domain\]user [/P [password]]]] /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters] 描述: 在用户或系统环境创建或修改环境变量。能基于参数、注册表项或文件输 入设置变量。 参数列表: /S system 指定要连接的远程系统。 /U [domain\]user 指定命令在其下执行的用户上下文。 /P [password] 指定给定用户上下文的密码。如果省略则提示输入。 var 指定要设置的环境变量。 value 指定分配给环境变量的值。 /K regpath 指定变量是基于注册表项的信息而设置的。 路径的格式应该是 hive\key\...\value。例如 HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Control\TimeZoneInformation\StandardName。 /F file 指定要使用的文本文件的文件名。 /A x,y 指定绝对文件坐标(线 X,项目 Y)作为在此文件 里搜索的参数。 /R x,y string 指定有关“字符串”作为搜索参数的相对文件坐标。 /M 指定应该在系统 (HKEY_LOCAL_MACHINE) 环境中设 置此变量。在 HKEY_CURRENT_USER 环境下,默认 将设置此变量。 /X 用 x,y 坐标显示文件内容。 /D delimiters 指定其他限定符,如 "," 或 "\"。 内置分隔符是空格、制表符、回车和换行符。所有 ASCII 字符都可作为限定符。限定符的最大数量, 包括内置分隔符,是 15。 /? 显示帮助消息。 注意: 1) SETX 在注册表中将变量写入主机环境。 2) 在本地系统,用此工具创建或修改的变量将在以后的命令窗口可用,但 在当前的 CMD.exe 命令窗口。 3) 在远程系统,用此工具创建或修改的变量在下次登录会话可用。 4) 有效的注册表项数据类型是 REG_DWORD,REG_EXPAND_SZ,REG_SZ 和 REG_MULTI_SZ。 5) 受支持的配置单元: HKEY_LOCAL_MACHINE (HKLM), HKEY_CURRENT_USER (HKCU)。 6) 限定符区分大小写。 7) REG_DWORD 的值是从注册表里以十进制格式提取出来的。 示例: SETX MACHINE COMPAQ SETX MACHINE "COMPAQ COMPUTER" /M SETX MYPATH "%PATH%" SETX MYPATH ~PATH~ SETX /S system /U user /P password MACHINE COMPAQ SETX /S system /U user /P password MYPATH ^%PATH^% SETX TZONE /K HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Control\TimeZoneInformation\StandardName SETX BUILD /K "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\CurrentBuildNumber" /M SETX /S system /U user /P password TZONE /K HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Control\TimeZoneInformation\ StandardName SETX /S system /U user /P password BUILD /K "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\ CurrentVersion\CurrentBuildNumber" /M SETX /F ipconfig.out /X SETX IPADDR /F ipconfig.out /A 5,11 SETX OCTET1 /F ipconfig.out /A 5,3 /D "#$*." SETX IPGATEWAY /F ipconfig.out /R 0,7 Gateway SETX /S system /U user /P password /F c:\ipconfig.out /X
iandy2233 2011-09-02
  • 打赏
  • 举报
回复
你想所有窗口发个消息,忘了具体参数了,你看一下核心编程里面有,第四章
luciferisnotsatan 2011-08-04
  • 打赏
  • 举报
回复
系统要求重启,那就必须重启。
赵4老师 2011-08-04
  • 打赏
  • 举报
回复
环境变量继承自父进程。
boboSir 2011-08-04
  • 打赏
  • 举报
回复
后面没辙了,幸亏服务程序是我们自己开发的,可以改写,因为考虑到跨平台的问题,没有用注册表交互的方式。
最后将服务程序做成那种带参数启动方式。

有点类似于mysql注册服务的那种方式。

以上环境变量生效问题,大家仍然可以继续讨论!!!!!

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧