运行批处理脚本作为管理员的结果不同于运行它的提升命令提示符

时间:2015-09-17 20:13:47

标签: windows batch-file cmd registry regedit

我有一个更改注册表值的脚本。 从提升的命令窗口运行它会更改密钥ok。 以管理员身份直接运行它(右键单击)它什么都不做,同样的事情是从具有提升权限的任务调度程序运行它。

知道为什么吗?

代码,基本上它会检查IP号码,并根据它更改autoconfig代理脚本,并使用不同的互联网连接设置密钥选择.reg文件。

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
SET Target=%computername%
IF %Target%.==. ECHO Missing target!&PAUSE&GOTO :EOF
FOR /F "tokens=2 delims=[]" %%A in ('PING %Target% -4 -n 1 ^| FIND "["') DO (
    SET TargetIP=%%A
    SET TargetIP
)
IF NOT DEFINED TargetIP ECHO NO IP found!&PAUSE&GOTO :EOF

:Compare
SET PartialIP=%TargetIP:~0,9%
IF "%PartialIP%"=="172.20.25" (
    REGEDIT /S conbae.reg
    goto :eof)
IF "%PartialIP%"=="172.20.22" (
    REGEDIT /S conbna.reg
    goto :eof)
SET PartialIP=%TargetIP:~0,6%
SET PartialIP
IF "%PartialIP%"=="172.20" (
    REGEDIT /S conweb.reg 
) ELSE (
    REGEDIT /S sinbae.reg 
)  

1 个答案:

答案 0 :(得分:0)

右键单击以管理员身份运行将工作目录更改为system32文件夹,找不到conbae.reg文件,因为它位于当前文件夹中。

您可以在所有注册文件和地点中将conbae.reg更改为"%~dp0conbae.reg",它也可以正常工作。