如何检查当前批处理脚本是否具有管理员权限?
我知道如何使用runas调用它自己,而不是如何检查管理员权限.我见过的唯一解决方案是粗暴的黑客工作或使用外部程序.好吧,实际上我并不关心它是否是一个黑客工作,只要它适用于Windows XP及更新版本.
我希望我的批处理文件只能运行提升.如果未提升,请为用户提供一个选项,以便将批次重新启动.
我正在编写批处理文件来设置系统变量,将两个文件复制到Program Files位置,然后启动驱动程序安装程序.如果Windows 7/Windows Vista用户(启用了UAC,即使他们是本地管理员)在没有右键单击并选择"以管理员身份运行"的情况下运行它,他们将获得"拒绝访问"复制这两个文件并编写系统变量.
如果用户实际上是管理员,我想使用命令自动重启批处理.否则,如果他们不是管理员,我想告诉他们他们需要管理员权限才能运行批处理文件.我正在使用xcopy来复制文件,使用REG ADD来编写系统变量.我正在使用这些命令来处理可能的Windows XP机器.我在这个主题上发现了类似的问题,但没有任何关于将批处理文件重新启动为高架的问题.
从批处理文件中,我想测试我是否使用Administrator /提升权限运行.
选择"以管理员身份运行"时,用户名不会更改,因此不起作用.
如果有一个普遍可用的命令,它没有任何效果,但需要管理权限,那么我可以运行它并检查错误代码以测试权限.到目前为止,我还没有找到这样的命令.我发现的命令似乎返回一个非特定的错误代码,它可以指示任何内容,并且由于各种原因它们很容易出错.
我只关心Windows 7,虽然支持早期的操作系统会很好.
是否可以创建一个桌面快捷方式,在按下时,将打开命令提示符并运行预定义的命令?
Java中是否有办法要求系统控制管理员功能.当然没有这样做:右键单击exe - >以管理员身份运行.
我想要的是来自UAC的框架,如Windows Vista或Windows 7.
或者我从jar中制作exe时要做一些设置?
有一种在DOS .bat/.cmd脚本中构建函数的好方法.要模块化一些安装脚本,最好将带有函数库的文件包含到.bat/.cmd脚本中.
我试过的是:
mainscript.bat
call library.bat
call:function1
Run Code Online (Sandbox Code Playgroud)
library.bat
goto:eof
:stopCalipri -- stop alle prozesse die mit calipri zu tun haben
:: -- %~1: argument description here
SETLOCAL
REM.--function body here
set LocalVar1=dummy
set LocalVar2=dummy
echo "Called function successfully :)"
(ENDLOCAL & REM -- RETURN VALUES
IF "%~1" NEQ "" SET %~1=%LocalVar1%
IF "%~2" NEQ "" SET %~2=%LocalVar2%
)
GOTO:EOF
Run Code Online (Sandbox Code Playgroud)
当我调用mainscript.bat然后我得到以下输出:Das Sprungziel - function1 wurde nicht gefunden.
或多或少意味着什么:找不到名为function1的跳转点
任何想法,或者这是不可能的?
当我试图获得我的批处理脚本的提升权限时,我发现了两个相关的SO问题
......这导致了部分解决的问题.出于某种原因,我遇到了在VBS脚本中包含空格的文件路径参数的命令行传递问题,所以我试图将解决方案分成3部分并集中在内部(VBS)步骤,然后通过调用a添加最后一步尽管与VBS脚本位于同一文件夹中,但无法找到该VBS中的批处理.我发现,拖放不是"那么简单" 和它使用时的不同.vbs,而不是.bat或.exe用作放置目标.
如果我拖动文件并将其拖放到可执行文件(exe)或批处理文件(bat,cmd)上,则当前工作目录由拖动项目的来源确定.其目录设置为处理它的程序或脚本的工作目录.
如果我将文件放到VBS脚本上,则会有所不同.在Windows 8.1 x64上,C:\Windows\System32即使参数与VBS位于同一文件夹中,我也会观察到它.
我可以简单地使用这样的批处理文件(如拖放中继)
my.vbs %*
Run Code Online (Sandbox Code Playgroud)
获得"正常" .bat行为(drop source指示CWD),但我也想了解它.
这是一个错误还是一个功能?它是否与所有Windows版本一致?
编辑:为显示我如何到达的问题添加背景(在顶部)(+次要更正)
每次我启动Spyder(与Anaconda一起使用)时,都会收到一条消息,说我的版本已过时,应该对其进行更新,因此我按照Spyder自己的网站给我的说明进行操作,该网站运行以下命令:
conda update qt pyqt
conda update spyder
Run Code Online (Sandbox Code Playgroud)
但是Spyder告诉我语法无效。我该怎么办?
windows ×7
batch-file ×4
admin ×2
cmd ×2
command-line ×2
uac ×2
anaconda ×1
exe ×1
function ×1
java ×1
shortcuts ×1
spyder ×1
updating ×1
vbscript ×1
windows-10 ×1