Làm cách nào để mở dấu nhắc lệnh nâng cao bằng các dòng lệnh trên cmd bình thường?
Ví dụ, tôi sử dụng runas /username:admin cmd
nhưng cmd đã được mở dường như không được nâng lên! Bất kỳ giải pháp?
Làm cách nào để mở dấu nhắc lệnh nâng cao bằng các dòng lệnh trên cmd bình thường?
Ví dụ, tôi sử dụng runas /username:admin cmd
nhưng cmd đã được mở dường như không được nâng lên! Bất kỳ giải pháp?
Câu trả lời:
Tôi đã gặp phải vấn đề tương tự và cách duy nhất tôi có thể mở CMD với tư cách quản trị viên từ CMD là làm như sau:
powershell -Command "Start-Process cmd -Verb RunAs"
và bấmEnterTheo tài liệu , mô hình bảo mật Windows ...
không cấp đặc quyền quản trị mọi lúc. Ngay cả các quản trị viên cũng chạy theo các đặc quyền tiêu chuẩn khi họ thực hiện các tác vụ phi quản trị không yêu cầu các đặc quyền nâng cao.
Bạn có tùy chọn Tạo tác vụ này với đặc quyền quản trị trong hộp thoại Tạo tác vụ mới ( Trình quản lý tác vụ> Tệp> Chạy tác vụ mới ), nhưng không có cách tích hợp nào để nâng cao đặc quyền một cách hiệu quả bằng dòng lệnh.
Tuy nhiên, có một số công cụ của bên thứ ba (nội bộ dựa trên Windows API) mà bạn có thể sử dụng để nâng cao đặc quyền từ dòng lệnh:
nircmdc elevate cmd
npm install -g windosu
(yêu cầu cài đặt node.js )sudo cmd
nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1
cuối cùng đã làm việc. Các runas /user:...
cách khác được nhắc nhập mật khẩu mặc dù đã là quản trị viên (chế độ hàng loạt bị giết).
nircmdc elevate cmd
nircmd
, để có nó làm việc như Linux sudo
, tạo một sudo.bat
file trong đường dẫn của bạn với nội dung này: nircmd elevate %*
. Sau đó, bạn có thể làm, chẳng hạn,sudo net stop W3SVC
windosu
:)
Tôi không có đủ danh tiếng để thêm nhận xét vào câu trả lời hàng đầu, nhưng với sức mạnh của bí danh, bạn có thể thoát ra chỉ bằng cách gõ như sau:
powershell "start cmd -v runAs"
Đây chỉ là một phiên bản ngắn hơn của user3018703 giải pháp tuyệt vời:
powershell -Command "Start-Process cmd -Verb RunAs"
sudo.bat
(bạn có thể thay thế sudo
bằng bất kỳ tên nào bạn muốn) với nội dung sau
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
sudo.bat
đến một thư mục trong của bạn PATH
; nếu bạn không biết điều đó có nghĩa là gì, chỉ cần chuyển các tệp này sangc:\windows\
sudo
sẽ hoạt động trong hộp thoại Run ( win+r) hoặc trong thanh địa chỉ trình khám phá (đây là phần tốt nhất :))sudo.bat
(bạn có thể thay thế sudo
bằng bất kỳ tên nào bạn muốn) với nội dung sau
nircmdc elevate cmd /k "cd /d %cd%"
nircmdc.exe
và sudo.bat
đến một thư mục trong của bạn PATH
; nếu bạn không biết điều đó có nghĩa là gì, chỉ cần chuyển các tệp này sangc:\windows\
sudo
sẽ hoạt động trong hộp thoại Run ( win+r) hoặc trong thanh địa chỉ trình khám phá (đây là phần tốt nhất :))Tôi sử dụng các chương trình nirsoft (ví dụ: nircmdc) và sysinternals (ví dụ: psexec) mọi lúc. Họ rất hữu ích.
Nhưng nếu bạn không muốn hoặc không thể sử dụng chương trình của bên thứ 3, thì đây là một cách khác, thuần Windows.
Câu trả lời ngắn gọn : bạn có thể tạo một tác vụ đã lên lịch trong khi nâng cao với các đặc quyền nâng cao mà bạn có thể gọi sau khi không nâng cao.
Câu trả lời có độ dài trung bình : trong khi nâng cao tạo tác vụ với (nhưng tôi thích GUI của trình lập lịch tác vụ):
schtasks /create /sc once /tn cmd_elev /tr cmd /rl highest /st 00:00
Sau đó, không cần độ cao, gọi bằng
schtasks /run /tn cmd_elev
Câu trả lời dài : Có rất nhiều chi tiết khó hiểu; xem mục blog của tôi "Khởi động chương trình KHÔNG CÓ UAC, hữu ích khi khởi động hệ thống và trong các tệp hàng loạt (sử dụng bộ lập lịch tác vụ)"
Cách yêu thích của tôi để làm điều này là sử dụng PsExec.exe từ SysInternals, có sẵn tại http://technet.microsoft.com/en-us/sysinternals/bb897553
.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe
Công tắc "-h" là một công cụ thực hiện điều kỳ diệu:
-h Nếu hệ thống đích là Vista hoặc cao hơn, hãy chạy quá trình với mã thông báo nâng cao của tài khoản, nếu có.
Làm cho tệp hàng loạt lưu thông tin đăng nhập của tài khoản quản trị viên thực bằng cách sử dụng /savecred
nút chuyển. Điều này sẽ nhắc nhập thông tin đăng nhập lần đầu tiên và sau đó lưu trữ mật khẩu được mã hóa trong trình quản lý thông tin xác thực. Sau đó, đối với tất cả các lần chạy tiếp theo, lô sẽ chạy với tư cách quản trị viên đầy đủ nhưng không được nhắc nhập thông tin đăng nhập vì chúng được lưu trữ mã hóa trong trình quản lý thông tin xác thực và người dùng cuối không thể lấy được mật khẩu. Thao tác sau sẽ mở CMD nâng cao với đầy đủ đặc quyền của quản trị viên và sẽ chỉ nhắc nhập mật khẩu lần đầu tiên:
START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe
Trong khi cả hai giải pháp được cung cấp bởi Dheeraj Bhaskar làm việc, tiếc là họ sẽ dẫn đến việc UAC thoại hiển thị trên đầu trang (z-trật tự-khôn ngoan) nhưng không bị tập trung (cửa sổ tập trung là người gọi cmd / powershell cửa sổ), như vậy tôi hoặc là cần phải lấy chuột và nhấp vào "có" hoặc để chọn cửa sổ UAC bằng cách sử dụng Alt + Shift + Tab. (Đã thử nghiệm trên Win10x64 v1607 build14393.447; UAC = "[...] không làm mờ [...]" .)
Giải pháp sau đây hơi khó xử vì nó sử dụng hai tệp, nhưng nó bảo toàn thứ tự tiêu điểm chính xác, vì vậy không cần thêm thao tác chuột / bàn phím nào (ngoài việc xác nhận hộp thoại UAC: Alt + Y ).
%SystemRoot%\System32\cmd.exe /k "cd /d"
@start cmdadm.lnk %cd%
Chạy với su
.
Tôi đã sử dụng Elevate
một thời gian rồi.
Đó là mô tả - This utility executes a command with UAC privilege elevation. This is useful for working inside command prompts or with batch files.
Tôi sao chép bin.x86-64\elevate.exe
từ .zip
vào C:\Program Files\elevate
và thêm đường dẫn đó vào của tôi PATH
.
Sau đó, tôi có thể chạy GitBash elevate sc stop W3SVC
để tắt IIS
dịch vụ.
Chạy lệnh cung cấp cho tôi UAC
hộp thoại, được tập trung đúng cách với điều khiển bàn phím và khi chấp nhận hộp thoại, tôi quay lại trình bao của mình.
..
@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
lưu tập lệnh này dưới dạng "god.cmd" trong system32 của bạn hoặc bất cứ điều gì mà đường dẫn của bạn hướng đến ....
nếu bạn mở một cmd trong e: \ mypictures \ và nhập god, nó sẽ yêu cầu bạn cung cấp thông tin đăng nhập và đưa bạn trở lại nơi đó giống như quản trị viên ...
Tương tự như một số giải pháp khác ở trên, tôi đã tạo một elevate
tệp lô chạy cửa sổ PowerShell nâng cao, bỏ qua chính sách thực thi để cho phép chạy mọi thứ từ các lệnh đơn giản đến các tệp hàng loạt đến các tập lệnh PowerShell phức tạp. Tôi khuyên bạn nên gắn nó vào thư mục C: \ Windows \ System32 để dễ sử dụng.
Lệnh gốc elevate
thực thi tác vụ của nó, ghi lại đầu ra, đóng cửa sổ PowerShell đã tạo và sau đó quay trở lại, ghi đầu ra đã bắt vào cửa sổ ban đầu.
Tôi đã tạo hai biến thể elevatep
và elevatex
tương ứng tạm dừng và giữ cho cửa sổ PowerShell mở để làm việc nhiều hơn.
https://github.com/jt-github/elevate
Và trong trường hợp liên kết của tôi bị chết, đây là mã cho tệp lô nâng cấp ban đầu:
@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
)
Có thể sử dụng một biến môi trường tạm thời để sử dụng với một phím tắt nâng cao (
start.cmd
setx valueName_betterSpecificForEachCase %~dp0
"%~dp0ascladm.lnk"
ascladm.lnk (phím tắt)
_ properties\advanced\"run as administrator"=yes
(để thực hiện các thay đổi đường dẫn, bạn cần tạm thời tạo 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 được thực thi trong cửa sổ cmd nâng cao)
Mặc dù đó là 3 tệp, bạn có thể đặt mọi thứ (bao gồm cả targetCmd) trong một số thư mục con (đừng quên thêm tên folderName vào các bản vá lỗi) và đổi tên "start.cmd" thành một tên của mục tiêu
Đối với tôi, có vẻ như hầu hết cách thực hiện điều này tự nhiên, trong khi cmd không có lệnh cần thiết
Tôi không chắc công cụ ExecEleised.exe (13KB) sẽ thực hiện công việc .... nhưng nó có thể. Hoặc ít nhất là hữu ích cho những người khác có nhu cầu tương tự đã truy cập trang này như tôi đã làm (nhưng tôi không tìm thấy giải pháp nên cuối cùng tôi đã tự tạo công cụ trong .Net).
Nó sẽ thực thi một ứng dụng với mã thông báo nâng cao (ở chế độ quản trị). Nhưng bạn sẽ nhận được một hộp thoại UAC để xác nhận! (có thể không nếu UAC đã bị vô hiệu hóa, chưa thử nghiệm nó).
Và tài khoản gọi công cụ cũng phải có admin. tất nhiên.
Ví dụ sử dụng:
ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
Phương pháp của Dheeraj Bhaskar với Powershell có một khoảng trống trong đó, ít nhất là đối với phiên bản Windows 10 của Powershell.
Dòng lệnh bên trong sudo.bat của anh ấy phải là
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"
Lưu ý khoảng trống thừa sau% cd%
;) Frode
Đây là một cách để tích hợp với explorer. Nó sẽ bật lên một mục menu bổ sung khi bạn nhấp chuột phải vào bất kỳ thư mục nào trong Windows Explorer:
Đây là các bước:
* Sử dụng pushd thay vì cd để cho phép nó hoạt động trong bất kỳ ổ đĩa nào. :-)
Bạn có thể sử dụng cú pháp sau, tôi cũng có câu hỏi tương tự và không nghĩ rằng cần có script.
runas / profile / user: domain \ username cmd
Điều này hiệu quả với tôi, nó có thể khác trên mạng của bạn.
Tôi đã làm điều đó dễ dàng bằng cách sử dụng lệnh sau đây trong cmd
runas / netonly / user: Administrator \ Administrator cmd
Sau khi gõ lệnh này, bạn phải nhập mật khẩu Quản trị viên của mình (nếu bạn không biết mật khẩu Quản trị viên của mình, hãy để trống và nhấn Enter hoặc nhập một cái gì đó, đã làm việc cho tôi) ..
Có một số cách để mở cmd nâng cao, nhưng chỉ phương pháp của bạn hoạt động từ dấu nhắc lệnh chuẩn. Bạn chỉ cần đặt user
không username
:
runas /user:machinename\adminuser cmd
Xem trợ giúp liên quan từ cộng đồng Microsoft .
Tôi đã sử dụng runas /user:domainuser@domain cmd
nó đã mở một lời nhắc nâng cao thành công.