sudo
?#1 楼
runas命令。runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program
只需运行:
runas /noprofile /user:Administrator cmd
以管理员身份启动命令外壳
评论
您可能会发现想要加载配置文件(例如包含环境变量)以进行任何扩展使用。在这种情况下,请删除/ noprofile。
–理查德
09年9月17日在9:38
这对我不起作用。输入密码后,命令提示符将关闭。
–乔纳斯(Jonas)
2010-12-09 13:44
这不是在问管理员密码吗? sudo要求您输入密码!
–n611x007
2012-09-18 8:42
不幸的是,这已经严重过时了。 Runas仅在一组不同的凭据下运行命令。即使您的凭据具有管理员权限,也不意味着您的凭据下的所有进程都以admin身份运行。
– surfasb
2014年1月25日,0:59
+1为“过时”,因为符文无法绕过UAC。而是按Windows按钮,键入cmd,然后按Ctrl + Shift + Enter。
–醇黄色
16年1月22日在12:06
#2 楼
提升-“执行具有UAC特权提升的命令。这对于在命令提示符内部或使用批处理文件很有用。”它与sudo
不同,它将执行用户更改为Administrator,但其语法比runas
更易于使用,并且可以保留当前目录,从而允许使用相对路径。Synopsis:
elevate [(-c | -k) [-n] [-u]] [-w] command
Options:
-c Launches a terminating command processor; equivalent to "cmd /c command".
-k Launches a persistent command processor; equivalent to "cmd /k command".
-n When using -c or -k, do not pushd the current directory before execution.
-u When using -c or -k, use Unicode; equivalent to "cmd /u".
-w Waits for termination; equivalent to "start /wait command".
Elevate的目的不是解决或绕过UAC(用户帐户控制),而是与其一起工作。只要启用了UAC,过程中的某些时候都必须有某种提示。如果您需要完全摆脱提示,则必须禁用UAC。
减轻痛苦的痛点是从非特权外壳升级特定进程,然后正常进行。否则,您需要先通过右键单击>“以管理员身份运行”来启动特权命令提示符,然后再尝试特权命令,该命令无法轻松编写脚本。
与“无提示地提升”有效在
secpol.msc
中。总之,它们与sudo中的%wheel ALL=(ALL) NOPASSWD: ALL
相同。已知的限制是它不会从正在提升的程序中返回错误代码。
如果您的肌肉记忆力卡在sudo上,使用Doskey创建别名:
doskey sudo=elevate -w
或PATH中的批处理文件:
@elevate -w %*
Elevate是Johannes Passing编写的第三方工具。这是一个11kb的下载文件,可移植(无需安装):http://code.kliu.org/misc/elevate/
评论
这与secpol.msc中的“在没有提示的情况下提升”非常完美。它们在一起的作用与%wheel ALL =(ALL)NOPASSWD:sudo中的ALL相同。
–sayap
2012年2月20日上午9:40
@sayap,请澄清一下,您的意思是:ss64.com/nt/syntax-uac.html?
–马特·威尔基
2012-2-20在18:45
我发现elevate(v1.3.0)的唯一问题是它没有从正在提升的程序中返回错误代码。
–肯
13年8月14日在18:41
Sudo.bat:@elevate%* =>赚钱!
–乔DF
2014年12月12日5:06
值得一提的是,它是一个外部实用程序,缺少OOTB。
– Hi-Angel
16 Dec 27 '16:18
#3 楼
您可以使用类似的runas命令,也可以在SourceForge上检出Windows项目的sudo,其中添加了sudo命令。区别很细微:
假设您有两个用户。 Bob是普通用户,James是管理员。
如果您以Bob身份登录并使用“ runas james acommand”,则该命令就像由James运行一样运行,因此它将访问James的用户设置和任何用户更改都进入“我的文档和设置”文件夹,等等。因此,如果要安装应用程序,则说该应用程序将以James而不是Bob的身份安装。
如果另一方面Bob执行“ sudo acommand”命令仍以Bob的身份运行,但是具有提升的权限-就像Linux sudo命令一样。为了防止任何用户能够使用sudo进行sudo,您必须定义一个sudoers用户组,其中包含有权使用sudo进行提升的普通用户的列表。用户仍然必须在提升高度之前提供凭据。
有时差异并不重要,有时却并不重要,我发现这两个命令都可能有用。
评论
你确定吗?当我在ubuntu中运行sudo时,如果当前主题在〜/ .themes中,则sudo-ed应用程序将无法访问该主题,因为它不在/home/root/.themes中,并且将使用默认的丑陋gtk主题。
–hasen
09年11月19日在22:28
@hasen j-您的问题仅是因为〜/ .themes在命令运行之前(因此在切换到根之前)进行求值。
–讨厌
2011-12-15 18:52
除了托管在GitHub上之外,另一个解决方案是windosu:github.com/tehsenaus/windosu我刚刚找到了它,它似乎工作得很好。最喜欢的是它非常易于安装。只需“ npm install -g windosu”。
– Venryx
17年6月6日在7:52
这是管理员中用户帐户的提升;须藤是另一回事。
–马西莫
1月13日10:12
@Massimo,您能解释一下其中的区别吗?
–西蒙·史蒂文斯(Simon P Stevens)
1月13日14:50
#4 楼
您也可以使用脚本高程PowerToys。评论
很棒-正是我想要的。我不想以不同的用户身份运行命令,而只是以提升的特权运行它。
–orip
2010-3-14在12:55
正是针对此问题的正确解决方案!谁想要Runas的语法混乱?
–稳定狗
10 Mar 29 '10在14:14
我经常希望elevate命令内置在Windows中。这是一个很棒的工具。
–nhinkle
2010年11月11日23:43
现在有同一位作者的Elevation PowerToys集合,与创建自提升脚本特别相关。
–马特·威尔基
2011年9月7日23:22
@barlop当然不是。那会破坏UAC的目的。
–nhinkle
2014年3月15日17:07
#5 楼
如果您准备切换到其他控制台,可以使用ConEmu(我是作者)。它的功能之一-能够在一个ConEmu窗口中同时运行提升和非提升选项卡。选项卡也可以使用不同的凭据开始。为了便于用户使用,有批处理文件csudo.cmd(可以轻松地用于bash)。阅读项目Wiki中的完整描述。简而言之,当您从现有的非高架选项卡运行一些命令时,例如,
csudo dism /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess
ConEmu将在新的高架控制台/选项卡中启动
dism
(带有UAC提示符) 默认情况下,
csudo
会拆分启动新控制台(可能通过编辑csudo.cmd
内容进行更改)。当然,您可以如果您喜欢“经典”
sudo.cmd
单词,则将其重命名为sudo
。评论
csudo很久以前就包含在ConEmu发行版中。完全不需要链接。
– Maximus
2014年12月12日在8:16
问题出在sudo'd命令之后,新的控制台选项卡变得不可用。因此,您无法继续在提升的选项卡中工作,只需按Enter或esc键即可退出消息。
– Jiggunjer
16年1月17日在15:25
当然不能。即使在Unix上,在sudo命令完成其工作后,您也将返回非高架终端!你走错路了。
– Maximus
16年1月17日在17:45
1)如果您要打开新窗口或标签,则最好保留它,让用户选择是否要继续。 2)在我的ubuntu上,我不必每次都进行sudo,我认为海拔持续了几分钟。 3)此应用程序有上百万个选项,对此没有用吗?也许我被宠坏了。
– Jiggunjer
16 Jan 18'在2:31
#6 楼
快速方法:添加sudo的三个步骤。
打开PowerShell。
复制以下脚本(Ctrl + C)并将其粘贴到PowerShell中(Alt + Space + E + P):
$script_path="$HOME\Documents\Scripts"; if (!(test-path $script_path)) {New-Item -ItemType directory $script_path} if (!(test-path $profile)) { new-item -path $profile -itemtype file -force }". $script_path\sudo.ps1" | Out-File $profile -append; "function sudo(){if (`$args.Length -eq 1){start-process `$args[0] -verb `"runAs`"} if (`$args.Length -gt 1){start-process `$args[0] -ArgumentList `$args[1..`$args.Length] -verb `"runAs`"}}" | Out-File $script_path\sudo.ps1; powershell
按Enter。
它将在PowerShell中永久启用
sudo
命令。用法:
sudo <process-name> [param1 [param2 [param3]]]
示例:
sudo explorer
sudo notepad
sudo powershell
sudo cmd
sudo taskmgr
sudo tasklist
sudo taskkill /IM Skype.exe /PID 8496
学习:
阅读本文。
阅读评论。
看看Stephen的git仓库和自述文件。
注意:我混合了两篇文章的脚本来创建上述脚本。而不是手动将脚本粘贴到记事本中,我添加了
Out-File
语句以保存脚本中的ps1
和$profile
文件。提示:如果您不是UAC弹出窗口的忠实拥护者(如我),请保存在* .reg文件中执行以下操作并运行它:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000
评论
我喜欢这个问题的Powershell解决方案。这必须是提升某些东西的最简单方法。现有的.bat文件可以轻松转换为POSH
– Mitchell Skurnik
13年2月14日在18:05
在Windows 10上出现此错误:。 :无法加载文件C:\ Users \ User \ Documents \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1,因为在此系统上禁用了运行脚本。
–sowrov
15年11月19日在9:51
@sowrov,请参阅[本文](www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/)。默认情况下,在所有Windows安装中都禁用PowerShell脚本。您需要使用此命令set-executionpolicy remotesigned启用它。官方文档中介绍了除remotesigned之外的其他选项。
–火神乌鸦
15年11月22日在9:54
读者请注意,此ps脚本是powershell -c start -verb runas program.exe功能的包装。另请注意,您不能使用cmd提示(本机)进行这样的举升。 Powershell是最好的本机选项。
– Jiggunjer
16年1月17日在13:58
可以在cmd.exe中代替Powershell env进行相同的操作吗? Powershell不使用clink进行计算,没有clink则根本不进行计算...
– PJJ
19年2月26日在7:39
#7 楼
如果您是在Windows上执行此操作,则除了几个其他答案中提到的“运行方式”命令外,还有其他方法可以使用鼠标来执行此操作。如果按住右键单击Windows中的大多数可执行文件时,请按Shift键,您应该会注意到一些其他高级选项。其中之一是“
Run As...
”选项(从Vista开始,我认为它称为“ Run As Administrator
”)。您还可以从Microsoft下载更高级的RunAs版本,称为ShellRunAs,它在命令行和图形模式下的内置RunAs命令,包括让您保存帐户凭据的操作
评论
这是管理员中用户帐户的提升;须藤是另一回事。
–马西莫
1月13日10:11
问题是关于提升命令! F.e.当检测到某些操作需要提升时,从批处理文件中获取。
– AnrDaemon
3月24日17:26
@AnrDaemon我惊讶于十年前我在这里留下的答案的相关性而感到惊讶!
–GAThrawn
3月30日16:23
#8 楼
我写了gsudo,这是Windows的sudo,感觉像*nix sudo
,它具有一些杀手级功能:在当前控制台中运行(附带),而不会破坏Tab键的自动完成功能。或添加
-n
以在新窗口中启动。可靠地处理所有要在脚本上使用的方案。 (ExitCodes,StdIn / Out / Err重定向/捕获)
支持Cmd / PowerShell / PowerShell Core
凭据缓存:如果
gsudo
在几分钟内被调用了几次,则仅显示一次UAC弹出窗口。 /> 用法
gsudo
在当前控制台中打开一个提升的外壳。gsudo [options] {command} [arguments]
执行指定的具有较高权限的命令。
最相关的
[options]
:-n | --new
在具有提升权限的新控制台中启动命令(并立即返回)。 -w | --wait
强制等待进程结束(并返回退出代码)。-s | --system
以本地系统身份运行帐户(“ NT AUTHORITY \ SYSTEM”)。--copyev
在执行之前将所有环境变量复制到提升的会话。安装
使用瓢:
scoop install gsudo
使用巧克力色:
choco install gsudo
手动安装
PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex"
或查看最新版本
评论
这看起来不错,但是它是否依赖于UAC图形提示符?我正在通过SSH登录,并希望某些完全在命令行模式下工作的东西。
–寡核苷酸
3月30日12:09
是。至少会出现一个UAC弹出窗口。
– Gerardo Grignoli
3月30日18:03
#9 楼
Surun是免费的开放源代码应用程序,它允许某些程序以管理权限运行,而无需提供密码而无需更改用户注册表或修改环境变量。当我使用Windows XP时,此应用程序对我有很大帮助。 Beta在Windows 7下工作。
评论
苏伦做得很好。但是有时在Windows 8和8.1下,其默认设置并不理想。因为它代替了Windows的运行方式功能,所以您无法在开始屏幕上单击鼠标右键来启动命令提示符。
–狼
15年1月15日在11:15
这是最好的答案,应该被接受。其他大多数答案都与管理员中用户帐户的提升有关:不是sudo。
–马西莫
1月13日在10:13
#10 楼
正如您可能已经发现的那样,runas可以让您以其他用户身份运行,但是它无法进行提升,并且不传递当前目录,环境变量或长命令行。Hamilton C shell通过以下方式解决了该问题:真正的su和sudo。 su允许您以其他用户身份运行命令; sudo(实际上是su的别名)使您可以运行提升权限的命令。您也可以同时以较高的用户身份运行。当前目录,环境变量和长命令行通过在调用者上下文中运行的su与自身副本之间的共享内存握手方式传递,作为与新凭据的插入而运行,然后启动子凭据。完全公开:我是作者。
#11 楼
我认为最简单的解决方案是利用powershell进行工作,该工作具有可移植性,并会提示用户使用UAC。您可以在任何shell(cmd或powershell)中运行它
/>
powershell Start-Process -verb runAs path-to-your.exe "-all -args -in -quotes"
#12 楼
有一个带有方便名称sudo的巧克力包装。您可以使用以下命令使用Chocolatey安装软件包: choco install -y sudo
然后在任何Windows /您必须使用MS shell,可以按预期使用
sudo
。评论
这是管理员中用户帐户的提升;须藤是另一回事。
–马西莫
1月13日10:11
#13 楼
Cygwin的sudo
终端的一个可行的mintty
替代品是将以下脚本放置在用户的PATH中:$!/bin/bash
cygstart --action=runas mintty -e `which bash` -lc \"$@\"
对我来说,这是唯一可行的替代品,可提高程序特权,例如在Windows的终端上工作时,请执行
vim
或cygrunsrv
。#14 楼
该脚本可以完成此任务:@echo Set objShell = CreateObject("Shell.Application") > %temp%\sudo.tmp.vbs
@echo args = Right("%*", (Len("%*") - Len("%1"))) >> %temp%\sudo.tmp.vbs
@echo objShell.ShellExecute "%1", args, "", "runas" >> %temp%\sudo.tmp.vbs
@cscript //NoLogo %temp%\sudo.tmp.vbs
将其另存为
sudo.cmd
,然后将其添加到您的PATH中注意:
runas
在此上下文中表示“ “以管理员身份运行”而不是“以其他用户身份运行” 从这里进行修改,从输出中删除cscript.exe标头
评论
这将创建一个新的控制台。 sudo'd命令完成后,新窗口将消失-因此您甚至无法读取输出。
– Jiggunjer
16年1月17日在14:09
可悲的是。但是它可以用于一些基本命令(复制),GUI工具或打开admin cmd。
–Charles Milette
16年1月17日在18:04
这是管理员中用户帐户的提升;须藤是另一回事。
–马西莫
1月13日10:10
#15 楼
以下vbs脚本允许启动带有带高程参数的给定命令,并在有限的一组用例中模拟原始unixsudo
命令的行为(它不会缓存凭据,也不能真正执行具有不同凭据的命令)。我将其放在C:\Windows\System32
上。 Set objArgs = WScript.Arguments
exe = objArgs(0)
args = ""
IF objArgs.Count >= 2 Then
args = args & objArgs(1)
End If
For it = 2 to objArgs.Count - 1
args = args & " " & objArgs(it)
Next
Set objShell = CreateObject( "WScript.Shell")
windir=objShell.ExpandEnvironmentStrings("%WINDIR%")
Set objShellApp = CreateObject("Shell.Application")
objShellApp.ShellExecute exe, args, "", "runas", 1
set objShellApp = nothing
在命令提示符下使用示例
sudo net start service
评论
Downvoters:解释为什么以及什么对您不起作用。该脚本已经过测试,可以为我工作。
–ceztko
19年11月6日,19:56
这是管理员中用户帐户的提升;须藤是另一回事。
–马西莫
1月13日10:11
@Massimo当然将这个脚本称为sudo只是一个小小的命名滥用:它没有并且不会具有与原始sudo相同的功能,但是默认情况下,在Unix中,它将以超级用户(root)模拟来执行,前提是在sudoers,所以对我提供的示例的模仿非常清楚。在Windows中创建完整的sudo替代品时,不能访问Windows内部,也不能定义该命令可以做什么和不能做什么的明确语义。如果此快速且肮脏的脚本不起作用,则应找到其他解决方案
–ceztko
1月13日10:34
#16 楼
另一个选项是TakeCommand的START /ELEVATED …
开关。该套件的非交互式(TCC-RT)版本是免费提供的。
“ sudo.btm”批处理文件如下所示:
@START "" /ELEVATED %*
,该格式也支持
sudo /wait <someprogram> /params
#17 楼
不久前,我创建了wsudo
,这是一个类似于sudo
的开源CLI工具,用于Windows以在当前目录的上下文中运行具有提升权限的程序或命令。它可以作为Chocolatey软件包免费提供。我经常使用它来配置构建代理,管理诸如
sfc /scannow
,dism /online /cleanup-image /restorehealth
之类的东西,或者仅用于安装/更新我的本地Chocolatey软件包(例如wasudo cup all -y
)。使用风险自负。安装
choco install wsudo
必须已安装巧克力。
目的
wsudo
是类似于Linux的sudo
工具,Windows可以通过该工具调用程序。从非管理员Shell命令提示符处提升权限(以管理员身份),并保留其当前目录。此实现不依赖于旧版Windows脚本宿主(
CScript
)。而是使用帮助程序PowerShell 5.1脚本来调用"Start-Process -Wait -Verb runAs ..."
cmdlet。您的系统很可能已经安装了PowerShell 5.x,否则,系统会为您提供依赖项来安装它。用法
wsudo
在当前目录中运行具有提升权限的程序或内联命令。例如:wsudo .\myAdminScript.bat
wsudox "del C:\Windows\Temp\*.* && pause"
wasudo cup all -y
wasudox start notepad C:\Windows\System32\drivers\etc\hosts
我经常从Windows运行框(Win + R)或通过在Windows资源管理器地址栏中输入
wasudo
Enter(Alt + D)来调用它。后者会在资源管理器的当前文件夹中打开一个管理命令提示符。有关更多详细信息,请访问GitHub repro。
评论
我相信您要查找的术语是“高架”访问权限。即使您的凭据具有管理员权限,在您“ sudo”命令之前,您凭据下的进程也没有管理员权限。在Windows中,他们称之为“提升”。@IGRACH不在我的Powershell上...
我使用此doskey sudo = runas / user:管理员“ cmd / k cd \”%cd%\“&$ *”
gsudo可在cmd / powershell / windows终端中使用,并具有一些不错的功能。
现在这可能是个老新闻,但是我在启用Windows-subsystem-for-linux的情况下运行Windows 10。对于我的wsl终端,我使用Ubuntu。我从没想过我会以linux用户的身份去追求这样的东西,但是它实际上非常方便,并且可以与VS代码一起很好地使用。