所以,我正在尝试创建一个.bat来在Win7中对特定程序进行taskkill。
我正在使用命令:
taskkill / f / im" LCore.exe"
.bat需要以管理员身份运行才能正常工作,所以我创建了一个快捷方式,以便在另一个线程(How to code a BAT file to always run as admin mode?)中指定的管理模式下自动运行。
但是,当使用Microsoft鼠标和键盘中心映射其中一个附加键以运行快捷方式时,它会自动运行快捷方式的目标,而不是没有所需管理员权限的快捷方式本身(当选择映射快捷方式会自动更改目标路径,手动设置路径会返回“未找到错误”。
所以基本上我想知道是否有另一种方法不涉及创建一个快捷方式来自动运行具有提升权限的.bat。
答案 0 :(得分:2)
@ECHO OFF
OPENFILES>NUL 2>&1
IF "%ERRORLEVEL%"=="0" GOTO :YouAreAdmin
GOTO :GetAdmin
:GetAdmin
ECHO.Set UAC = CreateObject^("Shell.Application"^) > "StartAsAdmin.vbs"
ECHO.UAC.ShellExecute "%~fs0", "", "", "runas", 1 >> "StartAsAdmin.vbs"
StartAsAdmin.vbs
DEL "StartAsAdmin.vbs"
EXIT /B
:OK
REM Your code starts here!
ECHO.
ECHO. If you see this, you have started as admin this bat file.
PAUSE>NUL
EXIT
抱歉,我是新人! :)
首先,OPENFILES
命令检查您是否以管理员身份运行程序,就像任何需要管理员权限的命令一样。如果在命令后键入>NUL 2>&1
,CMD将隐藏该命令的任何消息并将重定向错误。因此,如果您在运行像OPENFILES
之类的简单命令操作时遇到麻烦,那么唯一的错误就是批处理文件没有管理员权限。如果%ErrorLevel%为0(运行该命令时没有错误),您似乎以管理员身份启动了应用程序,因此它将步入:OK
标签。但是如果%ErrorLevel%不为0(存在问题),则应用程序似乎没有管理员权限。因此,它将作为管理员从该批处理文件生成的临时VBScript自动启动,然后启动,然后删除。
答案 1 :(得分:1)
在Windows 7中,您不需要编写其他脚本,因为它具有内置的“PowerShell”工具。请尝试以下方法:
powershell.exe start-process taskkill.exe -verb runas -argumentlist '/f /im "LCore.exe"'