it-swarm-vi.com

Làm cách nào để mở cmd nâng cao bằng dòng lệnh cho Windows?

Làm cách nào để mở lệnh nâng cao Nhắc sử dụ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! Giải pháp nào?

85
user2633882

Tôi gặp vấn đề tương tự và cách duy nhất tôi có thể mở CMD khi quản trị viên từ CMD thực hiện như sau:

  1. Mở CMD
  2. Viết powershell -Command "Start-Process cmd -Verb RunAs" và nhấn Enter
  3. Một cửa sổ bật lên sẽ xuất hiện yêu cầu mở CMD với tư cách quản trị viên
142
Gui

Theo tài liệ , mô hình bảo mật Windows ...

không cấp đặc quyền hành chính mọi lúc. Ngay 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 hành chính không yêu cầu đặc quyền nâng cao.

Bạn có Tạo tác vụ này với tùy chọ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 hiệu quả các đặc quyền bằng cách sử dụng dòng lệnh.

Tuy nhiên, có một số công cụ của bên thứ ba (dựa vào API Windows) mà bạn có thể sử dụng để nâng cao các đặc quyền từ dòng lệnh:

NirCmd :

  1. Tải về và giải nén nó.
  2. nircmdc elevate cmd

Windos :

  1. Cài đặt nó: npm install -g windosu (yêu cầu node.js đã cài đặt)
  2. Sudo cmd
33
Ricardo Stuven

Cách đơn giản tôi đã làm sau khi thử các câu trả lời khác ở đây

Phương pháp 1: KHÔNG CÓ chương trình bên thứ 3 (Tôi đã sử dụng chương trình này)

  1. Tạo một tệp có tên Sudo.bat (bạn có thể thay thế Sudo bằng bất kỳ tên nào bạn muốn) bằng nội dung sau powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
  2. Di chuyển Sudo.bat vào một thư mục trong PATH của bạn; nếu bạn không biết điều đó có nghĩa là gì, chỉ cần di chuyển các tệp này sang c:\windows\
  3. Bây giờ Sudo sẽ hoạt động trong hộp thoại Run (win+r) hoặc trong thanh địa chỉ Explorer (đây là phần tốt nhất :))

Phương pháp 2: VỚI chương trình bên thứ 3

  1. Tải xuống NirCmd và giải nén nó.
  2. Tạo một tệp có tên Sudo.bat (bạn có thể thay thế Sudo bằng bất kỳ tên nào bạn muốn) bằng nội dung sau nircmdc elevate cmd /k "cd /d %cd%"
  3. Di chuyển nircmdc.exeSudo.bat vào một thư mục trong PATH của bạn; nếu bạn không biết điều đó có nghĩa là gì, chỉ cần di chuyển các tệp này sang c:\windows\
  4. Bây giờ Sudo sẽ hoạt động trong hộp thoại Run (win+r) hoặc trong thanh địa chỉ Explorer (đây là phần tốt nhất :))
20
Dheeraj Bhaskar

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 khỏi 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"
13
Stiegler

Tôi sử dụng các chương trình nirsoft (ví dụ nircmdc) và sysiternals (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ể, dl một chương trình của bên thứ 3, thì đây là một cách khác, Windows thuần túy.

Câu trả lời ngắn : bạn có thể trong khi nâng cao tạo một tác vụ theo lịch với các đặc quyền nâng cao mà sau đó bạn có thể gọi sau đó trong 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 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 với

schtasks /run /tn cmd_elev

Câu trả lời dài : Có rất nhiều chi tiết hay thay đổi; xem mục blog của tôi "Chương trình khởi động KHÔNG CÓ UAC, hữu ích khi khởi động hệ thống và trong các tệp bó (sử dụng trình lập lịch tác vụ)"

11
john v kumpf

Sau đây là một tệp bó sẽ mở một lệnh nâng cao Nhắc với đường dẫn được đặt vào cùng thư mục với một tệp mà từ đó tệp bó được gọi

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

Tôi đã sử dụng ElevateNAME _ trong một lúc.

Đó 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 PATHcủa tôi.

Sau đó, GitBash Tôi có thể chạy một cái gì đó như elevate sc stop W3SVC để tắt dịch vụ IISname__.

Chạy lệnh mang lại cho tôi hộp thoại UACname__, tập trung chính xác 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 Shell của mình.

3
seangwright

Tạo tệp bó lưu thông tin đăng nhập của tài khoản quản trị viên thực tế bằng cách sử dụng khóa chuyển /savecred. Điều này sẽ nhắc nhở thông tin đăng nhập lần đầu tiên và sau đó lưu mật khẩu được mã hóa trong trình quản lý thông tin xác thực. Sau đó, trong tất cả các lần tiếp theo, đợt chạy sẽ chạy với tư cách quản trị viên đầy đủ nhưng không nhắc nhở thông tin đăng nhập vì chúng được lưu trữ được 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 mật khẩu. Sau đây sẽ mở một CMD nâng cao với đầy đủ đặc quyền của quản trị viên và sẽ chỉ Nhắc mật khẩu lần đầu tiên:

START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe
3
Stefan Gadecki

..

@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ì đường dẫn của bạn hướng đến ....

nếu bạn mở một cmd trong e:\mypictures\và gõ thượng đế, nó sẽ yêu cầu bạn cung cấp thông tin đăng nhập và đưa bạn trở lại cùng địa điểm với quản trị viên ...

3
jOte-

Tương tự như một số giải pháp khác ở trên, tôi đã tạo tệp bó elevate 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 tệp bó cho các tập lệnh PowerShell phức tạp. Tôi khuyên bạn nên dán nó vào thư mục C:\Windows\System32 để dễ sử dụng.

Lệnh elevate ban đầu thực thi nhiệm vụ của nó, bắt đầu ra, đóng cửa sổ PowerShell được sinh ra và sau đó trả về, ghi ra đầu ra đã chụp vào cửa sổ ban đầu.

Tôi đã tạo hai biến thể, elevatepelevatex, 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 bó nâng cao 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
)
2
Shadow Lynx

Mặc dù cả hai giải pháp được cung cấp bởi Dheeraj Bhaskar đều hoạt động, nhưng thật không may, chúng sẽ dẫn đến hộp thoại UAC hiển thị trên đầu (z-order-khôn ngoan) nhưng không nhận tập trung (cửa sổ tập trung là cửa sổ người gọi cmd/powershell), do đó tôi cần phải lấy chuột và nhấp vào "có" hoặc chọn cửa sổ UAC bằng Alt + Shift + Tab. (Đã thử nghiệm trên Win10x64 v1607 build14393.447; UAC = "[...] không mờ [...]" .)

Giải pháp sau đây hơi khó xử vì nó sử dụng hai tệp, nhưng nó giữ đúng thứ tự tiêu điểm chính xác, do đó không cần thêm hành động chuột/bàn phím (bên cạnh việc xác nhận hộp thoại UAC: Alt + Y ).

  1. cmdadm.lnk (thuộc tính phím tắt/Nâng cao .../Chạy với tư cách quản trị viên = ON) %SystemRoot%\System32\cmd.exe /k "cd /d"
  2. su.bat @start cmdadm.lnk %cd%

Chạy với su.

2
Ogmios

Cách ưa thích của tôi để làm điều này là sử dụng PsExec.exe từ SysIternals, có sẵn tại http://technet.Microsoft.com/en-us/sysi INTERNals/bb89755

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

Công tắc "-h" là công cụ thực hiện phép thuật:

-h Nếu hệ thống đích là Vista hoặc cao hơn, quy trình sẽ chạy với mã thông báo nâng cao của tài khoản, nếu có.

2
David Rodriguez

Có thể sử dụng biến môi trường tạm thời để sử dụng với phím tắt nâng cao (

bắt đầu.cmd

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

ascladm.lnk (phím tắt)

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

(để thực hiện 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) vào một số thư mục con (đừng quên thêm thư mụcName vào các bản vá) và đổi tên "start.cmd" thành một tên được nhắm mục tiêu

Đối với tôi có vẻ như hầu hết cách làm việc bản địa này, trong khi cmd không có lệnh cần thiết

0
ilia

Tôi không chắc công cụ ExecElevated.exe (13KB) sẽ thực hiện công việc .... nhưng 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ự đã đến 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 ra công cụ này trong .Net).

Nó sẽ thực thi một ứng dụng có mã thông báo nâng cao (trong chế độ quản trị viên). 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 kiểm tra nó).

Và tài khoản gọi công cụ cũng phải có admin. quyền của khóa học.

Ví dụ sử dụng:

ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
0
MrCalvin

Nhấn phím Windows + X và bây giờ bạn có thể chọn Powershell hoặc Command Prompt với quyền quản trị viên. Hoạt động nếu bạn là quản trị viên. Chức năng có thể không sử dụng được nếu hệ thống không phải của bạn.

0
Tom