簡體   English   中英

為什么此REG QUERY命令在Win7而不是WinXP上有效

[英]Why does this REG QUERY command work on Win7, but not WinXP

comamnd是: reg query \\\\cois316\\hklm\\Software\\Microsoft\\.NETFramework /v EnableIEHosting

在Windows 7上可以正常工作,但是在XP上出現錯誤,提示“找不到網絡路徑”。 主機名在網絡上有效,我可以從計算機ping到主機名。

此腳本正在以下方面使用:

@echo off
cls
:start
echo Main Menu
echo ---------
echo 1) Get Reg Key Status
echo 2) Set Reg Key
echo 3) Exit
echo.

set /p MenuChoice=Choose an option: 

IF %MenuChoice% == 1 (
    set /p Hostname=Enter Hostname: 
    REG QUERY \\%Hostname%\HKLM\SOFTWARE\Microsoft\.NETFramework /v EnableIEHosting
    goto start
)


IF %MenuChoice% == 2 (
    set /p Hostname=Enter Hostname: 
    REG ADD \\%Hostname%\HKLM\SOFTWARE\Microsoft\.NETFramework /v EnableIEHosting /t REG_DWORD /d 

0x00000001
    goto start
)

IF %MenuChoice% == 3 ( 
    goto end
)


IF %MenuChoice% == 4 ( 
    set /p Hostname=Enter Hostname: 
    echo \\%Hostname%\HKLM\SOFTWARE\Microsoft\.NETFramework /v EnableIEHosting
    pause
)



cls

goto start

:END

好的。 問題在以下塊內:

IF %MenuChoice% == 1 (
    set /p Hostname=Enter Hostname: 
    REG QUERY \\%Hostname%\HKLM\SOFTWARE\Microsoft\.NETFramework /v EnableIEHosting
    goto start
)

為什么? 一旦命令解釋程序命中了()塊,他就會自動解析該塊中包含的所有變量。 這意味着語句set /p Hostname=Enter Hostname:將起作用,但是Hostname變量已被解析。 為了證明這一點,請嘗試添加回聲。 例如, ECHO Hostname Entered is: %Hostname%

一旦您查詢了某些內容,然后回到:start標簽,然后再次查詢另一台服務器,該服務器正在使用先前輸入的主機名。

要解決此問題,必須在變量中加上一個感嘆號。 %Hostname% -> !Hostname!
僅當您最初在批處理文件中執行以下命令時,此方法才有效:

SETLOCAL ENABLEDELAYEDEXPANSION

它將以這種方式工作:

IF %MenuChoice% == 1 (
    set /p Hostname=Enter Hostname: 
    REG QUERY \\!Hostname!\HKLM\SOFTWARE\Microsoft\.NETFramework /v EnableIEHosting
    goto start
)

當然,您還必須在所有其他塊中更改此設置。

我認為這可以解決您在XP上的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM