【问题标题】:Different results running batch script as administrator than running it form elevated command prompt以管理员身份运行批处理脚本与以提升的命令提示符运行它的结果不同
【发布时间】:2015-09-17 20:13:47
【问题描述】:

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

知道为什么吗?

代码,基本上它会检查 IP 号码,并据此更改自动配置代理脚本,其中包含具有不同 Internet 连接设置密钥的 .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.试试reg import filename.reg。 2. 删除/注释@echo off,在末尾添加pause,正常和提升运行批处理文件,比较控制台输出。
  • 这就是将 REGEDIT /S 更改为 reg 导入的答案。谢!!
  • 引用你的话:>“从提升的命令窗口运行它会改变密钥。”那么告诉我们你是如何运行一个不应该在命令行上运行的命令的?

标签: windows batch-file cmd registry regedit


【解决方案1】:

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

您可以在所有 reg 文件和位置将 conbae.reg 更改为 "%~dp0conbae.reg",它也应该可以正常工作。

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2023-03-15
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多