Board logo

标题: [注册表类] 【已解决】win10系统通过注册表添加系统变量为什么不成功? [打印本页]

作者: solan    时间: 2016-4-2 20:17     标题: 【已解决】win10系统通过注册表添加系统变量为什么不成功?

本帖最后由 solan 于 2016-4-7 13:58 编辑

如题,我在win7 winxp里面都能用批处理添加系统变量,win10里面就不行,代码如下:
  1. @echo off
  2. reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v "UGII_BASE_DIR" /t REG_SZ /d "%cd%\NX 10.0" /f
  3. reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v "UGII_ROOT_DIR" /t REG_SZ /d "%cd%\NX 10.0\UGII" /f
复制代码
请教,在win10里面怎么写。
作者: solan    时间: 2016-4-4 14:46

有哪位朋友安装win10的,帮我看看1楼的代码,到底是什么原因
作者: solan    时间: 2016-4-4 14:47

是不是win10权限的问题啊?
作者: pcl_test    时间: 2016-4-4 19:15

执行后显示什么?没有写入注册表?在CMD窗口单条执行呢?
作者: solan    时间: 2016-4-4 23:26

回复 4# pcl_test

批处理执行时没什么反应,没什么错误提示,然后去 环境变量那儿一看还是老样子,没有写入注册表
在CMD窗口我没有试过
由于某种原因,我现在已经换回win7系统了,所以暂时无法测试。
作者: codegay    时间: 2016-4-5 04:32

本帖最后由 codegay 于 2016-4-5 04:34 编辑

手动添加注册表,重启,搜索注册表,确认环境变量被添加到哪里了.

参考我的帖子,http://bbs.bathome.net/thread-32322-3-1.html
你需要确认win 10是不是也是同样情况.
以及是不是需要管理员权限执行.

发现我的系统是从
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
读取变量的。
所以添加到ControlSet001下无效。

作者: solan    时间: 2016-4-5 08:27

回复 6# codegay


    好的,谢谢,不过我现在换回win7了,要不安装个虚拟机试试,给我点时间
作者: codegay    时间: 2016-4-5 08:45

回复 7# solan


   
好的.如能反馈测试结果就是贡献.
作者: kingshui    时间: 2016-4-6 15:41

回复 6# codegay


    正解,win10就是这样的情况。
作者: pcl_test    时间: 2016-4-6 19:04

  1. wmic ENVIRONMENT create name="UGII_BASE_DIR",username="<system>",VariableValue="%cd%\NX 10.0"
  2. wmic ENVIRONMENT create name="UGII_ROOT_DIR",username="<system>",VariableValue="%cd%\NX 10.0\UGII"
复制代码

作者: pcl_test    时间: 2016-4-6 19:06

本帖最后由 pcl_test 于 2016-4-6 19:07 编辑
  1. Windows Registry Editor Version 5.00
  2. ;cls&@echo off
  3. ;set "fd=%cd%"
  4. ;(echo;
  5. ;echo;"UGII_BASE_DIR"="%fd:\=\\%\\NX 10.0"
  6. ;echo;"UGII_ROOT_DIR"="%fd:\=\\%\\NX 10.0\\UGII")>>"%~f0"
  7. ;regedit /s "%~f0"
  8. ;echo;导入完成&ping -n 3 0 >nul&pause
  9. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
复制代码

作者: solan    时间: 2016-4-6 19:26

回复 11# pcl_test
谢谢老大,我现在安装回win10测试一下
作者: solan    时间: 2016-4-7 13:48

回复 10# pcl_test


    用批处理在win10里测试,提示“错误:拒绝访问”
作者: solan    时间: 2016-4-7 13:52

回复 11# pcl_test


    此楼代码win10企业版测试通过,达到预期效果。
非常感谢,不过不懂代码的具体含义。
作者: solan    时间: 2016-7-20 11:50

本帖最后由 solan 于 2016-7-20 12:45 编辑

回复 11# pcl_test
版主,由于代码需要更新,现在问题又来了,是这样:举个例子,某个软件的根目录AA里面有好多文件和文件夹,其中有一个文件夹叫BB,BB里面其中有 Tool文件夹和 CC文件夹,
我想把BB和CC的路径写入环境变量,这个批处理怎么写?该批处理放到根目录AA或者Tool里面,要求执行结果一样,能在xp win7 和win10上运行。

我写了多个方案都不成功,特来求教,麻烦版主了,谢谢
下面是我写的测试代码
  1. @echo off
  2. set "Py=%~dp0"
  3. set "py=%py:~0,-6%"
  4. ::我这里判断批处理是否放在Tool里面,好像写得不对,不知道怎么改
  5. if exist "&py&\Tool" (goto Tool) else (
  6. if exist "%~dp0BB" (
  7. goto bb
  8. ) else (goto erro)
  9. )
  10. :Tool
  11. Windows Registry Editor Version 5.00
  12. ;cls&@echo off
  13. ;(echo;
  14. ;echo;"BASE_DIR"="%Py:\=\\%"
  15. ;echo;"ROOT_DIR"="%Py:\=\\%\\CC")>>"%~f0"
  16. ;regedit /s "%~f0"
  17. ;echo;
  18. echo . 导入成功!
  19. echo .
  20. echo .&ping -n 3 0 >nul&pause
  21. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
  22. :bb
  23. Windows Registry Editor Version 5.00
  24. ;cls&@echo off
  25. ;set "P=%~dp0"
  26. ;(echo;
  27. ;echo;"BASE_DIR"="%P:\=\\%BB"
  28. ;echo;"ROOT_DIR"="%P:\=\\%BB\\CCI")>>"%~f0"
  29. ;regedit /s "%~f0"
  30. ;echo;
  31. echo . 导入成功
  32. echo .
  33. echo .&ping -n 3 0 >nul&pause
  34. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
  35. :erro
  36. echo .
  37. echo .位置错误!!
  38. echo .
  39. echo .按任意键退出....&pause>nul&exit
复制代码

作者: solan    时间: 2016-7-20 12:18

这个批处理如果按各自的位置写,而且没有一些判断的代码,就能成功
作者: pcl_test    时间: 2016-7-20 12:21

回复 15# solan

没用的代码不要贴出来,只会误导问题,直接说效果,在AA运行,注册表哪里添加了什么,在Tool运行,注册表哪里添加了什么
作者: solan    时间: 2016-7-20 12:30

本帖最后由 solan 于 2016-7-20 12:35 编辑

在AA里面运行就提示erro的信息,即提示位置错误,在也没加入变量
在tool里面运行提示导入成功,但是去环境变量那儿看看,也没加进去
谢谢,版主
作者: pcl_test    时间: 2016-7-20 12:34

回复 18# solan


    不是说你代码运行结果,是说你要实现咋样的效果?你代码没有任何有助于理解问题的作用
作者: solan    时间: 2016-7-20 12:40

好的
要求在AA运行提示导入成功,并能加入环境变量BASE_DIR=BB的路径
                                                               ROOT_DIR=CC的路径
在tool里面运行也提示导入成功,也加入上面的变量
如果该批处理没放到这两个文件夹里面(放到其他地方),就提示位置错误
作者: solan    时间: 2016-7-20 12:43

大热天的,麻烦版主了
作者: pcl_test    时间: 2016-7-20 12:45

本帖最后由 pcl_test 于 2016-7-20 12:58 编辑

回复 20# solan

  1. @echo off
  2. set "fd=%~dp0"
  3. for /f "delims=" %%a in ("%fd:~,-1%") do set "fdn=%%~nxa"&set "fd=%%~dpa%"
  4. if exist "%~dp0BB\" (
  5.     set "BASE_DIR=%~dp0BB"
  6.     set "ROOT_DIR=%~dp0BB\CC"
  7.     set "UGII_BASE_DIR=%~dp0BB"
  8.     set "UGII_ROOT_DIR=%~dp0BB\CCI"
  9. ) else if "%fdn%" equ "Tool" (
  10.     set "BASE_DIR=%fd%"
  11.     set "ROOT_DIR=%fd%CC"
  12.     set "UGII_BASE_DIR=%fd%"
  13.     set "UGII_ROOT_DIR=%fd%CCI"
  14. ) else echo;不在指定目录下&&ping -n 3 0 >nul&exit
  15. (
  16.     echo;Windows Registry Editor Version 5.00
  17.     echo;
  18.     echo;[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
  19.     echo;"BASE_DIR"="%BASE_DIR:\=\\%"
  20.     echo;"ROOT_DIR"="%ROOT_DIR:\=\\%"
  21.     echo;"UGII_BASE_DIR"="%UGII_BASE_DIR:\=\\%"
  22.     echo;"UGII_ROOT_DIR"="%UGII_ROOT_DIR:\=\\%"
  23. )>$tmp.reg
  24. regedit /s $tmp.reg
  25. echo;导入完成&ping -n 3 0 >nul
  26. del $tmp.reg /q
复制代码

作者: solan    时间: 2016-7-20 12:51

哦,我忘了说,那个AA文件夹是不固定的,因为在安装的时候用户会修改的
作者: solan    时间: 2016-7-20 12:51

其他的文件夹是固定的
作者: pcl_test    时间: 2016-7-20 12:58

回复 23# solan


已改
作者: solan    时间: 2016-7-20 13:19

在win10测试:
放在根目录运行(管理员),达到预期效果
放在tool目录运行(管理员),会多一个斜杠,即 F:\NX10.0.3MP4_Lite_v4.3\NX 10.0\   后面多了斜杠
作者: solan    时间: 2016-7-20 13:25

哦,我会修改了,谢谢版主,辛苦啦,太爱你了
作者: 是蓝还是兰    时间: 2017-11-18 23:28

回复 11# pcl_test


    版主大大   

"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /f /v "%cd%\ra2.exe" /t REG_SZ /d "~ RUNASADMIN 16BITCOLOR WINXPSP2"

这样一段 用你发的这个代码 怎么写呢?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2