Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 要编辑主机文件的批处理文件正在不停止地连续运行_Batch File - Fatal编程技术网

Batch file 要编辑主机文件的批处理文件正在不停止地连续运行

Batch file 要编辑主机文件的批处理文件正在不停止地连续运行,batch-file,Batch File,我正在使用上面的批处理文件来编辑主机文件。在Windows7中,默认情况下UAC提示不会出现。所以我用了这个。 但是,当用户没有编辑主机文件的管理员权限时,它会持续运行if循环,要停止进程,我们需要注销或重新启动系统 所以,任何人都可以建议在批处理文件中进行任何更改,这样它将只运行一次或两次,如果没有获得管理员权限,那么就退出 多谢各位 Sibasundar使用代码末尾的:暂停 @Echo off :: Check for permissions >nul 2>&1 "%SY

我正在使用上面的批处理文件来编辑主机文件。在Windows7中,默认情况下UAC提示不会出现。所以我用了这个。 但是,当用户没有编辑主机文件的管理员权限时,它会持续运行if循环,要停止进程,我们需要注销或重新启动系统

所以,任何人都可以建议在批处理文件中进行任何更改,这样它将只运行一次或两次,如果没有获得管理员权限,那么就退出

多谢各位
Sibasundar

使用代码末尾的
:暂停

@Echo off
:: Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
:: If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
Echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
Echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
Echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
Exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( Del "%temp%\getadmin.vbs" )
Pushd "%CD%"
CD /D "%~dp0"
C:\Windows\System32\notepad.exe C:\Windows\System32\drivers\etc\hosts

在代码末尾使用
:暂停

@Echo off
:: Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
:: If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
Echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
Echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
Echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
Exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( Del "%temp%\getadmin.vbs" )
Pushd "%CD%"
CD /D "%~dp0"
C:\Windows\System32\notepad.exe C:\Windows\System32\drivers\etc\hosts

向脚本添加一个参数,让它知道它是否是自调用的。如果脚本是自调用的,并且没有管理员权限,则退出

@Echo off
:: Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
:: If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
Echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
Echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
Echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
Exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( Del "%temp%\getadmin.vbs" )
Pushd "%CD%"
CD /D "%~dp0"
C:\Windows\System32\notepad.exe C:\Windows\System32\drivers\etc\hosts
:PAUSE
更新:
向脚本添加一个参数,让它知道它是否是自调用的。如果脚本是自调用的,并且没有管理员权限,则退出

@Echo off
:: Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
:: If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
Echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
Echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
Echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
Exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( Del "%temp%\getadmin.vbs" )
Pushd "%CD%"
CD /D "%~dp0"
C:\Windows\System32\notepad.exe C:\Windows\System32\drivers\etc\hosts
:PAUSE
更新:
谢谢你,大卫。太棒了。如果你能提供的话,再多一点帮助。我只需要显示一条消息,如果用户没有管理员权限…………我说不出话来。你帮了我很多。非常感谢你的支持。你太棒了……还需要一点帮助。批处理文件工作正常。但是,当我使用iexpress创建exe文件时,回显/消息不会出现(即:ElevateFail部分)。它只是在退出。
:ElevateFail
部分应该只在用户对UAC提示说“否”或者用户无法获得管理员权限时显示。谢谢David。太棒了。如果你能提供的话,再多一点帮助。我只需要显示一条消息,如果用户没有管理员权限…………我说不出话来。你帮了我很多。非常感谢你的支持。你太棒了……还需要一点帮助。批处理文件工作正常。但是,当我使用iexpress创建exe文件时,回显/消息不会出现(即:ElevateFail部分)。它只是简单地退出。
:ElevateFail
部分仅在用户对UAC提示说“否”或用户未能获得管理员权限时显示。