首页 文章

如何使用Windows命令行打开高架cmd?

提问于
浏览
82

如何使用普通cmd上的命令行打开提升的命令提示符?

例如,我使用 runas /username:admin cmd 但是打开的cmd似乎没有提升!有解决方案吗

18 回答

  • -1

    我遇到了同样的问题,我能够以CMD的管理员身份打开CMD的唯一方法是执行以下操作:

    • 打开CMD

    • 写入 powershell -Command "Start-Process cmd -Verb RunAs" 并按Enter键

    • 将出现一个弹出窗口,要求以管理员身份打开CMD

  • 16

    根据documentation,Windows安全模型......

    不会始终授予管理权限 . 甚至管理员在执行不需要提升权限的非管理任务时也会在标准权限下运行 .

    您可以在“创建新任务”对话框中选择“使用管理权限创建此任务”选项(“任务管理器”>“文件”>“运行新任务”),但没有内置方法可以使用命令行有效提升权限 .

    但是,您可以使用一些第三方工具(内部依赖Windows API)从命令行提升权限:

    NirCmd:

    • 下载并解压缩 .

    • nircmdc elevate cmd

    windosu:

    • 安装它: npm install -g windosu (需要安装node.js

    • sudo cmd

  • 31

    我在这里尝试其他答案后做的简单方法

    方法1:没有第三方程序(我用过这个)

    • 使用以下内容创建一个名为 sudo.bat 的文件(您可以用您想要的任何名称替换 sudopowershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"

    • sudo.bat 移至 PATH 中的文件夹;如果您不知道这意味着什么,只需将这些文件移动到 c:\windows\

    • 现在 sudo 将在运行对话框(win r)或资源管理器地址栏中工作(这是最好的部分:))

    方法2:使用第三方程序

    • 下载NirCmd并解压缩 .

    • 使用以下内容创建名为 sudo.bat 的文件(您可以使用任何名称替换 sudonircmdc elevate cmd /k "cd /d %cd%"

    • nircmdc.exesudo.bat 移至 PATH 中的文件夹;如果您不知道这意味着什么,只需将这些文件移至 c:\windows\

    • 现在 sudo 将在运行对话框(win r)或资源管理器地址栏中工作(这是最好的部分:))

  • 2

    我一直使用nirsoft程序(例如nircmdc)和sysinternals(例如psexec) . 他们非常有帮助 .

    但是,如果你不想或不想,那就是第三方程序,这是另一种方式,纯粹的Windows .

    Short answer :您可以在提升时创建具有提升权限的计划任务,然后您可以在不提升时调用 .

    Middle-length answer :提升创建任务时(但我更喜欢任务调度程序GUI):

    schtasks /create /sc once /tn cmd_elev /tr cmd /rl highest /st 00:00
    

    然后,不需要提升,调用

    schtasks /run /tn cmd_elev
    

    Long answer :有很多烦躁的细节;看我的博客文章"Start program WITHOUT UAC, useful at system start and in batch files (use task scheduler)"

  • -4

    我没有足够的声誉来为最佳答案添加评论,但凭借别名的强大功能,只需输入以下内容即可获得:

    powershell "start cmd -v runAs"
    

    这只是user3018703优秀解决方案的缩短版本:

    powershell -Command "Start-Process cmd -Verb RunAs"
    
  • 2

    以下作为批处理文件将打开一个提升的命令提示符,其路径设置为与调用批处理文件的目录相同的目录

    set OLDDIR=%CD%
    powershell -Command "Start-Process cmd -ArgumentList '/K cd %OLDDIR%' -Verb RunAs "
    
  • 2

    我现在已经使用了Elevate一段时间了 .

    它的描述 - This utility executes a command with UAC privilege elevation. This is useful for working inside command prompts or with batch files.

    我将 bin.x86-64\elevate.exe.zip 复制到 C:\Program Files\elevate 并将该路径添加到我的 PATH .

    然后GitBash我可以运行类似 elevate sc stop W3SVC 的东西来关闭 IIS 服务 .

    运行该命令给我 UAC 对话框,正确地集中了键盘控制,并在接受对话框后返回我的shell .

  • -4

    使用 /savecred 开关使批处理文件保存实际管理员帐户的凭据 . 这将首次提示凭据,然后将加密的密码存储在凭证管理器中 . 然后,对于批次运行的所有后续时间,它将作为完整管理员运行但不提示凭证,因为它们以加密方式存储在凭证管理器中,并且最终用户无法获取密码 . 以下应该以完全管理员权限打开提升的CMD,并且仅在第一次提示输入密码时:

    START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe
    
  • 0

    我最喜欢的方法是使用SysInternals的PsExec.exe,可在http://technet.microsoft.com/en-us/sysinternals/bb897553获取

    .\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe
    

    “-h”开关是做魔术的开关:

    -h如果目标系统是Vista或更高版本,则运行该进程使用帐户的提升令牌(如果可用) .

  • 136

    虽然Dheeraj Bhaskar提供的两种解决方案都可以工作,但不幸的是它们会导致 UAC 对话框显示在顶部(z顺序)但是 not 得到 focused (聚焦窗口是调用者cmd / powershell窗口),因此我需要 grab 鼠标并单击"yes",或使用Alt Shift Tab选择UAC窗口 . (在Win10x64 v1607 build14393.447上测试; UAC = "[...] do not dim [...]" . )

    以下解决方案有点尴尬,因为它使用两个文件,但它保留了正确的焦点顺序,因此不需要额外的鼠标/键盘操作(除了确认UAC对话框:Alt Y) .

    • cmdadm.lnk(快捷方式属性/高级... /以管理员身份运行=开启) %SystemRoot%\System32\cmd.exe /k "cd /d"

    • su.bat @start cmdadm.lnk %cd%

    运行 su .

  • 10

    与上面的其他一些解决方案类似,我创建了一个 elevate 批处理文件,该文件运行一个提升的PowerShell窗口,绕过执行策略以启用从简单命令到批处理文件到复杂PowerShell脚本的所有操作 . 我建议将其粘贴在C:\ Windows \ System32文件夹中以便于使用 .

    原始 elevate 命令执行其任务,捕获输出,关闭生成的PowerShell窗口,然后返回,将捕获的输出写出到原始窗口 .

    我创建了两个变体 elevatepelevatex ,它们分别暂停并保持PowerShell窗口打开以进行更多工作 .

    https://github.com/jt-github/elevate

    如果我的链接死了,这里是原始提升批处理文件的代码:

    @Echo Off
    REM Executes a command in an elevated PowerShell window and captures/displays output
    REM Note that any file paths must be fully qualified!
    
    REM Example: elevate myAdminCommand -myArg1 -myArg2 someValue
    
    if "%1"=="" (
        REM If no command is passed, simply open an elevated PowerShell window.
        PowerShell -Command "& {Start-Process PowerShell.exe -Wait -Verb RunAs}"
    ) ELSE (
        REM Copy command+arguments (passed as a parameter) into a ps1 file
        REM Start PowerShell with Elevated access (prompting UAC confirmation)
        REM     and run the ps1 file
        REM     then close elevated window when finished
        REM Output captured results
    
        IF EXIST %temp%\trans.txt del %temp%\trans.txt
        Echo %* ^> %temp%\trans.txt *^>^&1 > %temp%\tmp.ps1
        Echo $error[0] ^| Add-Content %temp%\trans.txt -Encoding Default >> %temp%\tmp.ps1
        PowerShell -Command "& {Start-Process PowerShell.exe -Wait -ArgumentList '-ExecutionPolicy Bypass -File ""%temp%\tmp.ps1""' -Verb RunAs}"
        Type %temp%\trans.txt
    )
    
  • 3

    ..

    @ECHO OFF
    SETLOCAL EnableDelayedExpansion EnableExtensions
    NET SESSION >nul 2>&1
    IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
    GOTO :EOF
    
    :ELEVATE
    SET this="%CD%"
    SET this=!this:\=\\!
    
    MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('CMD', '/K CD /D \"!this!\"', '', 'runas', 1);close();"
    EXIT 1
    

    将此脚本保存为system32中的“god.cmd”或您的路径指向的任何内容....

    如果你在e:\ mypictures \中打开一个cmd并输入god,它会询问你的凭据并让你回到与管理员相同的地方......

  • 8

    可以使用临时环境变量与提升的快捷方式一起使用(

    start.cmd

    setx valueName_betterSpecificForEachCase %~dp0
    "%~dp0ascladm.lnk"
    

    ascladm.lnk(快捷方式)

    _ properties\advanced\"run as administrator"=yes
    

    (要进行路径更改,您需要暂时创建 env.Variable

    _ properties\target="%valueName_betterSpecificForEachCase%\ascladm.cmd"
    
    _ properties\"start in"="%valueName_betterSpecificForEachCase%"
    

    ascladm.cmd

    setx valueName_betterSpecificForEachCase=
    reg delete HKEY_CURRENT_USER\Environment /F /V valueName_betterSpecificForEachCase
    "%~dp0fileName_targetedCmd.cmd"
    

    )(targetedCmd在高架cmd窗口中执行)

    虽然它是3个文件,但您可以将所有内容(包括targetedCmd)放在某个子文件夹中(不要忘记将folderName添加到补丁中)并将“start.cmd”重命名为target的一个名称

    对我来说,这看起来像是大多数本地方式,而cmd没有所需的命令

  • 3

    我不确定工具ExecElevated.exe(13KB)是否可以完成这项任务....但它可能会 . 或者至少对那些有类似需求的人有用,他们像我一样来到这个页面(但是我找不到解决方案,所以我最终在.Net中创建了这个工具) .

    它将使用提升的令牌(在管理模式下)执行应用程序 . 但是你会得到一个UAC对话框来确认! (如果UAC已被禁用,可能没有,但尚未对其进行测试) .

    调用该工具的帐户还必须具有admin . 权利当然 .

    使用示例:

    ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
    
  • 2

    按Windows X键,您现在可以选择具有管理员权限的Powershell或命令提示符 . 如果您是管理员,则可以使用 . 如果系统不是您的,则该功能可能无法使用 .

  • 0

    我在 cmd 中使用以下命令轻松完成了

    runas /netonly /user:Administrator\Administrator cmd

    输入此命令后,您必须输入您的管理员密码(如果您不知道您的管理员密码,请将其留空并按 Enter 或键入内容,为我工作)..

  • 0

    有几种方法可以打开高架cmd,但只有您的方法可以在标准命令提示符下运行 . 你只需要把 userusername

    runas /user:machinename\adminuser cmd
    

    请参阅Microsoft community的相关帮助 .

  • 3

    我使用 runas /user:domainuser@domain cmd 成功打开了一个提升的提示 .

相关问题