ฉันจะเปิดพรอมต์คำสั่งโดยใช้บรรทัดคำสั่งบน cmd ปกติได้อย่างไร
ตัวอย่างเช่นฉันใช้runas /username:admin cmd
แต่ cmd ที่เปิดดูเหมือนจะไม่สูงขึ้น! วิธีแก้ปัญหาใด ๆ
ฉันจะเปิดพรอมต์คำสั่งโดยใช้บรรทัดคำสั่งบน cmd ปกติได้อย่างไร
ตัวอย่างเช่นฉันใช้runas /username:admin cmd
แต่ cmd ที่เปิดดูเหมือนจะไม่สูงขึ้น! วิธีแก้ปัญหาใด ๆ
คำตอบ:
ฉันพบปัญหาเดียวกันและวิธีเดียวที่ฉันสามารถเปิด CMD ในฐานะผู้ดูแลระบบจาก CMD ได้คือทำสิ่งต่อไปนี้:
powershell -Command "Start-Process cmd -Verb RunAs"
และกดEnterตามเอกสารรุ่นความปลอดภัยของ Windows ...
ไม่ให้สิทธิ์ระดับผู้ดูแลตลอดเวลา แม้แต่ผู้ดูแลระบบก็รันภายใต้สิทธิ์มาตรฐานเมื่อทำงานที่ไม่ใช่การดูแลระบบที่ไม่ต้องการสิทธิ์ระดับสูง
คุณมีตัวเลือกสร้างงานนี้ด้วยสิทธิ์ระดับผู้ดูแลระบบในกล่องโต้ตอบสร้างงานใหม่ ( ตัวจัดการงาน> ไฟล์> เรียกใช้งานใหม่ ) แต่ไม่มีวิธีในตัวในการยกระดับสิทธิ์อย่างมีประสิทธิภาพโดยใช้บรรทัดคำสั่ง
อย่างไรก็ตามมีเครื่องมือของบุคคลที่สาม (โดยอาศัย Windows API ภายใน) ที่คุณสามารถใช้เพื่อยกระดับสิทธิ์จากบรรทัดคำสั่ง:
nircmdc elevate cmd
npm install -g windosu
(ต้องติดตั้งnode.js )sudo cmd
nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1
ในที่สุดก็ทำงานได้ runas /user:...
วิธีอื่น ๆที่แจ้งให้ใส่รหัสผ่านแม้ว่าจะเป็นผู้ดูแลระบบอยู่แล้วก็ตาม (โหมดแบตช์ที่ถูกฆ่า)
nircmdc elevate cmd
nircmd
เพื่อให้มีการทำงานเช่น Linux sudo
สร้างไฟล์ในเส้นทางของคุณกับเนื้อหานี้:sudo.bat
nircmd elevate %*
จากนั้นคุณสามารถทำได้เช่นsudo net stop W3SVC
windosu
:)
ฉันไม่มีชื่อเสียงมากพอที่จะเพิ่มความคิดเห็นในคำตอบยอดนิยม แต่ด้วยพลังของนามแฝงคุณสามารถทำได้เพียงแค่พิมพ์ข้อความต่อไปนี้:
powershell "start cmd -v runAs"
นี่เป็นเพียงโซลูชันที่ยอดเยี่ยมสำหรับผู้ใช้ 3018703 เวอร์ชันสั้นกว่า
powershell -Command "Start-Process cmd -Verb RunAs"
sudo.bat
(คุณสามารถแทนที่sudo
ด้วยชื่อใดก็ได้ที่คุณต้องการ) โดยมีเนื้อหาต่อไปนี้
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
sudo.bat
ไปที่โฟลเดอร์ในPATH
; หากคุณไม่ทราบว่าหมายถึงอะไรเพียงแค่ย้ายไฟล์เหล่านี้ไปที่c:\windows\
sudo
จะทำงานในกล่องโต้ตอบ Run ( win+r) หรือในแถบที่อยู่ explorer (นี่คือส่วนที่ดีที่สุด :))sudo.bat
(คุณสามารถแทนที่sudo
ด้วยชื่อใดก็ได้ที่คุณต้องการ) โดยมีเนื้อหาต่อไปนี้
nircmdc elevate cmd /k "cd /d %cd%"
nircmdc.exe
และsudo.bat
ไปยังโฟลเดอร์ในPATH
; หากคุณไม่ทราบว่าหมายถึงอะไรเพียงแค่ย้ายไฟล์เหล่านี้ไปที่c:\windows\
sudo
จะทำงานในกล่องโต้ตอบ Run ( win+r) หรือในแถบที่อยู่ explorer (นี่คือส่วนที่ดีที่สุด :))ฉันใช้โปรแกรม nirsoft (เช่น nircmdc) และ sysinternals (เช่น psexec) ตลอดเวลา พวกเขามีประโยชน์มาก
แต่ถ้าคุณไม่ต้องการหรือไม่สามารถทำได้ dl โปรแกรมของบุคคลที่สามนี่เป็นอีกวิธีหนึ่งคือ Windows ที่บริสุทธิ์
คำตอบสั้น ๆ : คุณสามารถในขณะที่ยกระดับสร้างงานตามกำหนดเวลาด้วยสิทธิ์ระดับสูงซึ่งคุณสามารถเรียกใช้ในภายหลังได้ในขณะที่ไม่ได้ยกระดับ
คำตอบแบบยาวปานกลาง : ในขณะที่ยกระดับงานสร้างด้วย (แต่ฉันชอบ GUI ตัวกำหนดตารางเวลางาน):
schtasks /create /sc once /tn cmd_elev /tr cmd /rl highest /st 00:00
จากนั้นไม่จำเป็นต้องมีระดับความสูงให้เรียกใช้
schtasks /run /tn cmd_elev
คำตอบแบบยาว : มีรายละเอียดที่ไม่แน่นอนมากมาย ดูรายการบล็อกของฉัน"เริ่มโปรแกรมโดยไม่มี UAC มีประโยชน์เมื่อเริ่มระบบและในไฟล์แบตช์ (ใช้ตัวกำหนดตารางเวลางาน)"
ต่อไปนี้เป็นไฟล์แบตช์จะเปิดพรอมต์คำสั่งที่มีการยกระดับพร้อมกับพา ธ ไปยังไดเร็กทอรีเดียวกับที่เรียกใช้ไฟล์แบตช์
set OLDDIR=%CD%
powershell -Command "Start-Process cmd -ArgumentList '/K cd %OLDDIR%' -Verb RunAs "
วิธีที่ฉันชอบที่สุดคือใช้ PsExec.exe จาก SysInternals ซึ่งมีอยู่ที่ http://technet.microsoft.com/en-us/sysinternals/bb897553
.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe
สวิตช์ "-h" คือสวิตช์ที่ใช้เวทมนตร์:
-h หากระบบเป้าหมายเป็น Vista หรือสูงกว่าให้รันกระบวนการด้วยโทเค็นที่ยกระดับของบัญชีหากมี
ทำให้ไฟล์แบตช์บันทึกข้อมูลประจำตัวของบัญชีผู้ดูแลระบบจริงโดยใช้/savecred
สวิตช์ สิ่งนี้จะแจ้งให้ใส่ข้อมูลรับรองในครั้งแรกจากนั้นเก็บรหัสผ่านที่เข้ารหัสไว้ในตัวจัดการข้อมูลรับรอง จากนั้นในครั้งต่อ ๆ ไปที่แบตช์ทำงานมันจะทำงานในฐานะผู้ดูแลระบบเต็มรูปแบบ แต่จะไม่พร้อมท์สำหรับข้อมูลรับรองเนื่องจากถูกเก็บไว้ที่เข้ารหัสในตัวจัดการข้อมูลรับรองและผู้ใช้ปลายทางไม่สามารถรับรหัสผ่านได้ สิ่งต่อไปนี้ควรเปิด CMD ที่ยกระดับพร้อมสิทธิ์ของผู้ดูแลระบบเต็มรูปแบบและจะขอรหัสผ่านในครั้งแรกเท่านั้น:
START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe
แม้ว่าโซลูชันทั้งสองที่จัดทำโดย Dheeraj Bhaskar จะทำงานได้ แต่น่าเสียดายที่จะส่งผลให้กล่องโต้ตอบUACปรากฏขึ้นที่ด้านบน (z-order-wise) แต่ไม่ได้รับการโฟกัส (หน้าต่างที่โฟกัสคือหน้าต่าง cmd / powershell ของผู้โทร) ดังนั้นฉันจึงจำเป็นต้อง จับเมาส์แล้วคลิก "ใช่" หรือเพื่อเลือกหน้าต่าง UAC โดยใช้ Alt + Shift + Tab (ทดสอบบน Win10x64 v1607 build14393.447; UAC = "[... ] อย่าหรี่ [... ]" )
วิธีแก้ปัญหาต่อไปนี้ค่อนข้างอึดอัดเนื่องจากใช้สองไฟล์ แต่รักษาลำดับโฟกัสที่ถูกต้องดังนั้นจึงไม่จำเป็นต้องใช้เมาส์ / คีย์บอร์ดเพิ่มเติม (นอกเหนือจากการยืนยันกล่องโต้ตอบ UAC: Alt + Y )
%SystemRoot%\System32\cmd.exe /k "cd /d"
@start cmdadm.lnk %cd%
ทำงานด้วยsu
.
ฉันใช้ 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
กล่องโต้ตอบโดยเน้นที่การควบคุมแป้นพิมพ์อย่างเหมาะสมและเมื่อยอมรับกล่องโต้ตอบฉันจะกลับไปที่เชลล์ของฉัน
..
@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
บันทึกสคริปต์นี้เป็น "god.cmd" ใน system32 ของคุณหรืออะไรก็ตามที่คุณกำหนดเส้นทางไป ....
ถ้าคุณเปิด cmd ใน e: \ mypictures \ แล้วพิมพ์ god มันจะขอข้อมูลรับรองจากคุณและนำคุณกลับไปที่เดิมในฐานะผู้ดูแลระบบ ...
คล้ายกับวิธีแก้ปัญหาอื่น ๆ ข้างต้นฉันได้สร้างไฟล์ elevate
ไฟล์แบตช์ซึ่งเรียกใช้หน้าต่าง PowerShell ที่ยกระดับโดยข้ามนโยบายการดำเนินการเพื่อเปิดใช้งานการเรียกใช้ทุกอย่างตั้งแต่คำสั่งง่ายๆไปจนถึงไฟล์แบตช์ไปจนถึงสคริปต์ PowerShell ที่ซับซ้อน ขอแนะนำให้ติดไว้ในโฟลเดอร์ C: \ Windows \ System32 เพื่อความสะดวกในการใช้งาน
elevate
คำสั่งเดิมเรียกใช้งานจับเอาต์พุตปิดหน้าต่าง PowerShell ที่สร้างแล้วส่งกลับโดยเขียนเอาต์พุตที่บันทึกไปยังหน้าต่างเดิม
ฉันสร้างสองรูปแบบelevatep
และelevatex
ซึ่งตามลำดับจะหยุดและเปิดหน้าต่าง 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
)
นี่คือวิธีรวมเข้ากับ explorer จะปรากฏรายการเมนูพิเศษเมื่อคุณคลิกขวาในโฟลเดอร์ใด ๆ ภายใน Windows Explorer:
ขั้นตอนมีดังนี้
* ใช้ pushd แทน cd เพื่อให้ทำงานในไดรฟ์ใดก็ได้ :-)
สามารถใช้ตัวแปรสภาพแวดล้อมชั่วคราวเพื่อใช้กับทางลัดที่ยกระดับ (
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"
) (targetCmd ได้รับการดำเนินการในหน้าต่าง cmd ที่ยกระดับ)
แม้ว่าจะเป็น 3 ไฟล์ แต่คุณสามารถวางทุกอย่าง (รวมถึง TargetCmd) ในโฟลเดอร์ย่อยบางโฟลเดอร์ (อย่าลืมเพิ่มชื่อโฟลเดอร์ลงในแพตช์) และเปลี่ยนชื่อ "start.cmd" เป็นชื่อเดียวของเป้าหมาย
สำหรับฉันดูเหมือนวิธีดั้งเดิมที่สุดในการทำสิ่งนี้ในขณะที่ cmd ไม่มีคำสั่งที่จำเป็น
ฉันไม่แน่ใจว่าเครื่องมือExecElevated.exe (13KB) จะทำงานได้ .... แต่มันอาจจะ หรืออย่างน้อยก็เป็นประโยชน์สำหรับผู้อื่นที่มีความต้องการคล้าย ๆ กันที่เข้ามาในหน้านี้เหมือนที่ฉันทำ (แต่ฉันไม่พบวิธีแก้ปัญหาดังนั้นฉันจึงลงเอยด้วยการสร้างเครื่องมือด้วยตัวเองใน. Net)
มันจะเรียกใช้แอปพลิเคชันด้วยโทเค็นที่ยกระดับ (ในโหมดผู้ดูแลระบบ) แต่คุณจะได้รับกล่องโต้ตอบ UAC เพื่อยืนยัน! (อาจจะไม่ใช่ถ้า UAC ถูกปิดใช้งาน แต่ยังไม่ได้ทดสอบ)
และบัญชีที่เรียกเครื่องมือต้องมีผู้ดูแลระบบด้วย สิทธิแน่นอน
ตัวอย่างการใช้งาน:
ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
วิธีการของ Dheeraj Bhaskar กับ Powershell มีช่องว่างที่ขาดหายไปอย่างน้อยที่สุดสำหรับการเกิด Powershell ของ Windows 10
บรรทัดคำสั่งภายใน sudo.bat ควรเป็น
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"
สังเกตช่องว่างหลัง% cd%
;) Frode
คุณสามารถใช้ไวยากรณ์ต่อไปนี้ฉันมีคำถามเดียวกันและไม่คิดว่าจะต้องใช้สคริปต์
runas / profile / user: domain \ username cmd
สิ่งนี้ใช้ได้ผลสำหรับฉันอาจแตกต่างกันในเครือข่ายของคุณ
เพียงใช้คำสั่ง runas / noprofile / user: administrator cmd
ฉันทำได้อย่างง่ายดายโดยใช้คำสั่งต่อไปนี้ใน cmd
runas / netonly / user: Administrator \ Administrator cmd
หลังจากพิมพ์คำสั่งนี้คุณต้องป้อนรหัสผ่านผู้ดูแลระบบของคุณ (หากคุณไม่ทราบรหัสผ่านผู้ดูแลระบบของคุณให้เว้นว่างไว้แล้วกดEnterหรือพิมพ์บางอย่างก็ได้ผลสำหรับฉัน) ..
กดปุ่ม Windows + X และตอนนี้คุณสามารถเลือก Powershell หรือ Command Prompt ด้วยสิทธิ์ของผู้ดูแลระบบ ใช้งานได้ถ้าคุณเป็นผู้ดูแลระบบ ฟังก์ชันนี้ไม่สามารถใช้งานได้หากระบบไม่ใช่ของคุณ
ฉันใช้runas /user:domainuser@domain cmd
สิ่งที่เปิดพรอมต์ยกระดับสำเร็จ