标题: [系统相关] BAT以管理员运行且不弹黑窗口二者不能兼得,真的很难吗! [打印本页]
作者: locoman 时间: 2018-9-2 03:52 标题: BAT以管理员运行且不弹黑窗口二者不能兼得,真的很难吗!
解决BAT文件以管理员权限运行有多种方法能做到。
但是,要做到,既要自动以管理员权限运行,同时又要做到不弹出黑窗口,二者兼得却不能做到。
下面几种代码,都能以管理员权限运行,即使试着加用了我所能得知的几种方法(包括所说的VBS)去解决 不弹黑窗口 的问题 ,却始终还是要弹出黑窗口来。或许是我没有搞得来
特来请教这里的大神是否有高招解决?
期待大神的热心援手指导, 谢谢您了!!
自动以管理员权限运行的代码之一:- @echo off
- net session >nul 2>&1
- if not "%errorLevel%" == "0" (
- echo Oops: This tools must run with administrator permissions!
- echo it will popup the UAC dialog, please click [Yes] to continue.
- echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
- echo UAC.ShellExecute "%~s0", "%*", "", "runas", 1 >> "%temp%\getadmin.vbs"
- "%temp%\getadmin.vbs"
- exit /b 2
- )
- netsh interface ipv4 set address "WLAN" static 192.168.1.111 255.255.255.0 192.168.1.1 1
- netsh interface ipv4 set dnsservers "WLAN" static 114.114.114.114 primary
- netsh interface ipv4 add dns "WLAN" ... index=2
复制代码
自动以管理员权限运行的代码之二:- @echo off
- >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
- if '%errorlevel%' NEQ '0' (
- echo 请求管理员权限...
- 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
- netsh interface ipv4 set address name="WLAN" source=dhcp
- netsh interface ipv4 set dnsservers name="WLAN" source=dhcp
复制代码
自动以管理员权限运行的代码之三:- @echo off
- %1 %2
- ver|find "5.">nul&&goto :st
- mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :st","","runas",1)(window.close)&goto :eof
- :st
- copy "%~0" "%windir%\system32\"
- netsh interface ipv4 set address "WLAN" static 192.168.1.113 255.255.255.0 192.168.1.1 1
- netsh interface ipv4 set dnsservers "WLAN" static 114.114.114.114 primary
- netsh interface ipv4 add dns "WLAN" ... index=2
复制代码
自动以管理员权限运行的代码之四:- @echo off
- :: BatchGotAdmin
- :-------------------------------------
- REM --> Check for permissions
- >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
- REM --> 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"
- :--------------------------------------
- netsh interface ipv4 set address name="WLAN" source=dhcp
- netsh interface ipv4 set dnsservers name="WLAN" source=dhcp
复制代码
——另外,以上几个代码运行时,都会弹出那个UAC提示框出来,且必须要点击 是 才能继续运行,请问如何才能让其不弹这个提示框且能继续运行呢?
作者: 狄钦dQ 时间: 2018-9-2 11:11
单纯的bat/vbs我还没见过比较完美的,个人推荐使用工具将bat转成exe,以上问题都迎刃而解,加之源码加密,完美。
作者: locoman 时间: 2018-9-2 17:39
本帖最后由 locoman 于 2018-9-2 18:15 编辑
回复 2# 狄钦dQ
谢谢您的指点!
这里有个问题:我的这些BAT是在另一个应用程序中生成的,再用那个应用程序去启动运行BAT的。
如果在这里的大神熟手们能介绍一个 命令行BAT转EXE工具 就好了,这样,我就可以用那个应用生成BAT文件后,再用应用程序执行 BAT转EXE工具 将BAT自动转成EXE文件,再用应用程序运行EXE,就可以完美解决了吧。
——希望,见多识广的大神熟手们介绍一个 命令行BAT转EXE工具,谢谢!不要那种图形窗口操作的那种,如:
BAT2EXE d:\temp\test.bat test.exe
作者: Batcher 时间: 2018-9-4 22:00
回复 3# locoman
bat2com
bat2exec
这两个工具支持命令行,可以试试能否满足你的需求。
作者: locoman 时间: 2018-9-5 14:07
回复 4# Batcher
谢谢Batcher 的热情回复,烦请帮忙帮到底,可否贴个下载地址。
不是我懒,是我百度过很多,下载来的都窗口手工操作的东东,不能采用命令行执行。
作者: Batcher 时间: 2018-9-5 14:40
回复 5# locoman
http://bbs.bathome.net/s/tool/index.html
可以在这里搜索一下
作者: xczxczxcz 时间: 2018-9-6 16:55
顶上脚本帖了4个,其实就是1个,这个生成vbs的方法在有些情况会出错,出错的状况我记录了,但重装系统后不知放哪了。还有一个提权方法是之家刺客发布的。代码很长,适用范围测后发现比较小,影响批速度。但有个好处,顶上VBS失效地方,他的有效。
避免弹黑窗用超级帐户登陆。
作者: smss 时间: 2020-6-9 12:25
本帖最后由 smss 于 2020-6-9 12:34 编辑
::以管理员权限远行- %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
复制代码
::关闭UAC提示框重启生效- reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
复制代码
:E刷系统时挂载单元修改一劳永逸- for %%i in (C D E F G H I J K L) do if exist %%i:\Windows\system32\cmd.exe set n=%%i:
- reg load HKLM\PE_Software %n%\windows\system32\config\Software
- reg add HKLM\PE_SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
- reg unload "hklm\PE_Software"
- del /ah/f/s/q "%n%\windows\system32\config"
复制代码
作者: dimo 时间: 2023-2-16 15:04
一楼给的几段代码都是用到临时VBS脚本,脚本中有效的一行拼接后是这样:- CreateObject("Shell.Application").ShellExecute "file.bat", "%1", "", "runas", 1
复制代码
这后面有个参数1.即代表弹出窗口运行。1改为0可以不弹窗运行。就是这一个参数。
就像仅为了避免黑窗那个vbs脚本:- WScript.CreateObject("WScript.Shell").Run "file.bat",0
复制代码
这句脚本发挥作用的就是后面的0,若改为1则不弹黑窗的作用消失。
UAC账户控制那个窗口好像没什么好办法,就只能在控制面板关。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |