Làm thế nào tôi có thể luôn luôn chạy dấu nhắc lệnh với tư cách quản trị viên?


104

Là một nhà phát triển, tôi thường có nhu cầu mở một dấu nhắc lệnh cho các mục đích khác nhau. Ví dụ, tôi sử dụng iisresetđể khởi động lại máy chủ web cục bộ của mình.

Tôi thường mở cửa sổ lệnh theo một trong hai cách:

  1. Nhấn Win, gõ "cmd" và nhấnEnter
  2. Khi ở trong Explorer, giữ Shiftvà nhấp chuột phải vào một thư mục và chọn "Mở cửa sổ lệnh tại đây"

Tuy nhiên, khi tôi mở cửa sổ lệnh theo một trong hai cách sau, tôi không có các đặc quyền quản trị viên đầy đủ mà tôi cảm thấy mình có quyền.

Tôi là quản trị viên, nhưng cmd.exe không biết rằng

Để chạy các ứng dụng chỉ dành cho quản trị viên, tôi phải mở dòng lệnh theo cách tương đối tốn công sức này:

  1. Nhấn Win, gõ "cmd"
  2. Đợi menu xuất hiện
  3. Nhấc tay khỏi bàn phím và đặt lên chuột
  4. Nhấp chuột phải vào mục menu "cmd.exe"
  5. Chọn "Chạy với tư cách quản trị viên"

Điều này không được chấp nhận vì nhiều lý do:

  • Cửa sổ luôn mở trong C: \ windows \ system32, thay vì Usersthư mục của tôi (như trong kỹ thuật được phê duyệt 1) hoặc thư mục tôi muốn ở (như trong kỹ thuật được phê duyệt 2). Vì vậy, tôi thường phải thay đổi thư mục để đến nơi tôi muốn.
  • Quá trình này chậm hơn vài mili giây so với các phương pháp ưa thích của tôi. Thực hiện nhiều lần trong ngày, mỗi ngày trong phần còn lại của sự nghiệp của tôi, nó cộng thêm khoảng mười ngày mất thời gian dành cho việc nhấp và chờ đợi và thay đổi thư mục.
  • Là một lập trình viên, thực hiện một nhiệm vụ robot vô nghĩa khiến tôi đau đớn về cảm xúc.
  • Là một lập trình viên, nâng tay tôi là một công việc vất vả khiến tôi đau đớn về thể xác.

Đó là lý do tại sao tôi đang tìm kiếm một giải pháp một lần và sẽ cho phép các kỹ thuật được phê duyệt 1 & 2 mở ra.

Nhiều chương trình cho phép bạn thay đổi vĩnh viễn cấp đặc quyền mặc định của chúng từ menu Thuộc tính. Command Prompt không phải là một trong những chương trình đó.

nhập mô tả hình ảnh ở đây

Làm cách nào để làm cho cửa sổ lệnh chạy với tư cách quản trị viên theo mặc định (ngay cả khi sử dụng tùy chọn trình đơn ngữ cảnh "Mở cửa sổ lệnh tại đây")?


Tại sao không chỉ thay đổi UAC để nâng lên mà thôi?
Surfasb

Tôi không thấy tùy chọn "chỉ nâng cao" trên thanh trượt UAC của mình. Bạn đang đề cập đến một cái gì đó ngoài cửa sổ Cài đặt kiểm soát tài khoản người dùng?
Kevin

6
Tôi nghĩ rằng Giờ Búa của nó ...
ThunderToes

Câu trả lời:


88

Để trả lời phần đầu tiên của câu hỏi của bạn, khi bạn nhấn phím Windows và nhập "CMD", bạn có thể nhấn Ctrl+ Shift+ Enterđể mở với tư cách quản trị viên.

Để trả lời phần thứ hai của câu hỏi của bạn, hãy dán phần sau vào notepad và lưu nó với phần mở rộng ".reg":

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

Sau đó chạy tệp. Nó sẽ hợp nhất các thay đổi vào sổ đăng ký và thêm tùy chọn vào các menu ngữ cảnh của bạn. (Không cần phím shift.)


7
Ghi chú; bạn vẫn sẽ phải chấp nhận lời nhắc UAC trong cả hai trường hợp.
Synetech

1
Chỉnh sửa sổ đăng ký không hoạt động trong windows 8.
Biker John

Bản vá đăng ký hoạt động cho Server 2012 R2
fiat

Nó không hoạt động với tôi trên Windows 7
Hello Universe

1
Nếu bạn không thấy lệnh sau khi chạy tệp reg, hãy đăng xuất khỏi Windows và đăng nhập lại.
trebormf

38

Nhiều chương trình cho phép bạn thay đổi vĩnh viễn cấp đặc quyền mặc định của chúng từ menu Thuộc tính. Command Prompt không phải là một trong những chương trình đó.

Các Compatibility tab là hoàn toàn vô hiệu hóa cho tất cả các thực thi của Windows:

nhập mô tả hình ảnh ở đây

Để đặt đặc quyền quản trị viên cho các tệp thực thi của Windows, bạn cần tạo một lối tắt và sử dụng tab Phím tắtAdvanced(mục nhắc lệnh trong menu Bắt đầu đã là một phím tắt):

nhập mô tả hình ảnh ở đây

Cửa sổ luôn mở trong C: \ windows \ system32, thay vì thư mục Người dùng của tôi (như trong kỹ thuật được phê duyệt 1) hoặc thư mục tôi muốn ở (như trong kỹ thuật được phê duyệt 2). Vì vậy, tôi thường phải thay đổi thư mục để đến nơi tôi muốn.

Điều đó là bình thường và có ý nghĩa vì nếu bạn đang mở một dấu nhắc lệnh quản trị viên, có lẽ bạn đang thực hiện một số hành động hệ thống mà bạn cần đặc quyền quản trị viên thay vì hành động người dùng mà bạn đã có quyền cho dù sao đi nữa.

Bạn có thể đặt thư mục mặc định trên toàn cầu bằng cách thêm / chỉnh sửa Autorunmục đăng ký (nó thậm chí không phải là một chuỗi có thể mở rộng để sử dụng các biến môi trường):

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"Autorun"="cd /d \"%userprofile%\""

Bây giờ, bất cứ khi nào bạn mở một dấu nhắc lệnh bằng bất kỳ phương thức nào cũng sẽ tự động mặc định (tốt, thư mục thay đổi kỹ thuật ) vào thư mục hồ sơ người dùng của bạn.

Thậm chí tốt hơn, bạn có thể thêm các lệnh khác để tự động chạy bất cứ khi nào bạn mở một dấu nhắc lệnh bằng cách sử dụng &toán tử (ví dụ cd /d %userprofile% & cls & dir:). Ngoài ra, bạn có thể đặt cùng một giá trị trong cùng một khóa bên dưới HKLMnhánh để đặt giá trị đó cho tất cả người dùng.


Lưu ý rằng bạn vẫn sẽ phải chấp nhận lời nhắc UAC. Thật không may, hiện tại (không có?) Không có cách nào để tạo một danh sách trắng các chương trình đáng tin cậy của UAC, để các dấu nhắc lệnh có thể được chạy như một quản trị viên mà không phải chấp nhận lời nhắc. Điều này để lại cho bạn (a) một vài lựa chọn.

Trong trường hợp đầu tiên, bạn tránh hoàn toàn UAC trong khi ở hai trường hợp sau, bạn chỉ nhập thông tin đăng nhập của mình một lần khi tạo lối tắt.


Có vấn đề với việc thiết lập thư mục hiện tại thông qua autorun. Với giá trị đó được đặt, cd /d "%userprofile%"tự động chạy không chỉ khi mở cửa sổ giao diện điều khiển mới mà còn mỗi khi một luồng thực thi mới được gọi. Điều này có thể gây ra vấn đề, ví dụ, với for /fcác vòng lặp. Hãy thử điều này tại một dấu nhắc cmd: cd "\Program Files"sau đó for /f "delims=" %I in ('cmd /c cd') do @echo %I. Bạn sẽ thấy for /fvòng lặp nghĩ rằng thư mục làm việc hiện tại của nó là $ home, không phải Tệp Chương trình. An toàn hơn để sửa đổi cmdphím tắt và đặt mục tiêu là "%comspec%" /k cd /d "%userprofile%".
rojo

Nếu bạn muốn giữ lại phiên bản Windows và thông tin bản quyền khi mở cửa sổ bảng điều khiển mới, hãy đặt mục tiêu của phím tắt thành%comspec% /c cd /d "%USERPROFILE%" & %comspec%
rojo

+1 cho câu trả lời chỉnh sửa không đăng ký. Câu trả lời khác có thể đã ổn trong năm 2012, nhưng tôi không muốn thử nó trên Windows 10 ngày hôm nay.
Alan

19

Giải pháp tôi sử dụng là mở dấu nhắc lệnh bằng cách mở menu start, gõ 'cmd' và nhấn Ctrl+ Shift+ Enter. Điều này sẽ khiến chương trình được chọn sẽ được khởi chạy với tư cách quản trị viên.


1
Có một sự thay thế không yêu cầu "tìm kiếm"? (bởi vì từ những gì tôi biết gõ nội dung trong hộp thực sự tìm kiếm)
Pacerier

Chỉ có cách khác tôi biết là câu trả lời của Luke, vô hiệu hóa UAC. Việc tìm kiếm cmd khá nhanh, thậm chí không thể quản lý để nhấn Ctrl + Shift + Enter trước khi tìm thấy nó.
Dracs

Tôi làm điều đó mọi lúc trên máy tính của khách hàng. Nó tìm thấy CMD khá nhanh chết tiệt
Canada Luke

Điều này sẽ tải nó như là Quản trị viên?
barlop

@barlop Có, phím nóng đó (Ctrl + Shift + Enter) sẽ khởi chạy chương trình được tô sáng trong menu Bắt đầu với tư cách quản trị viên.
Dracs

12

Để tự động chạy CMDvới tư cách quản trị viên mỗi lần nhấp chuột đơn giản (không cần nhấp chuột phải hoặc tạo các phím tắt bổ sung), có một cách khắc phục dễ dàng cho việc này:

  1. Trong Registry Editor , điều hướng đến:
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

    • Nếu không có Layersthư mục , bạn sẽ phải tạo một thư mục và đặt tên cho nó:
      Nhấp chuột phải vào AppCompatFlagsthư mục chọn NewKey
  2. Nhấp chuột phải Layers, chọn NewString Value. Đặt Tên của giá trị chuỗi mới của bạn thành CMD.EXEdấu nhắc lệnh đường dẫn đầy đủ ( C:\Windows\System32\cmd.exe)

  3. Bấm đúp vào giá trị chuỗi mới để sửa đổi nó và đặt "Dữ liệu giá trị" thành RUNASADMIN.

Tôi đã có cùng một phiền toái, và điều này làm việc cho tôi.


11

Nếu bạn muốn CMD.exe luôn được chạy với tư cách quản trị viên, chỉ cần thêm mã reg dưới đây vào Registry của bạn:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\System32\\cmd.exe"="~ RUNASADMIN"
"C:\\Windows\\SysWOW64\\cmd.exe"="~ RUNASADMIN"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\System32\\cmd.exe"="~ RUNASADMIN"
"C:\\Windows\\SysWOW64\\cmd.exe"="~ RUNASADMIN"

2
Điều này làm việc cho tôi trên Windows 8.1. Bây giờ tôi chỉ cần nhấn Windows-R, cmd, Enter. Nó cũng hoạt động để mở cửa sổ lệnh từ File Explorer thông qua Shift-RightClick> Mở cửa sổ lệnh tại đây.
Troy Gizzi

1
Nếu điều này hoạt động, đây là câu trả lời chính xác, mặc dù phiên bản dài hơn nhiều hiện đang được chấp nhận.
Xodarap777

Điều này cũng hoạt động cho Windows 10. Đặt nội dung vào notepad, lưu nó với phần mở rộng .reg và chạy nó
Chris Halcrow

Không làm việc cho tôi. Phần HKLM thậm chí không đăng ký, vì một số lý do. Tranh luận về việc liệu điều này có còn hoạt động hay không: superuser.com/questions/961573/ , với các lựa chọn thay thế.
Ray Woodcock

4

Đã có một vài công cụ mà tôi đã sử dụng là các cách giải quyết khác (ngoài những gì Jesse đã đề cập).

Quay trở lại khi Vista lần đầu tiên ra mắt, Microsoft đã phát hành một powerToy " nâng cao " khá hữu ích và vẫn hoạt động, tôi tin rằng (chưa thử nghiệm) hoạt động cho Windows 7. Thả nó vào môi trường đường dẫn của bạn và bạn có thể chạy "Nâng cao iisreset" từ một dấu nhắc lệnh thông thường (hoặc thậm chí "nâng cao cmd" từ khi bắt đầu / chạy hoặc tạo một lối tắt)


Đây là một liên kết trực tiếp để tải về.
ashleedawg

4

Cách dễ nhất để vượt qua tất cả sự đau buồn của UAC, v.v. là thiết lập mục nhập Lịch biểu nhiệm vụ để chạy cmd.exe bằng các đặc quyền cao nhất. Không tạo sự kiện Kích hoạt cho nó và đảm bảo rằng hộp kiểm Cho phép thực hiện theo yêu cầu được chọn trong tab Cài đặt. Ngoài ra, trong tab Cài đặt, đảm bảo rằng thả xuống "Nếu tác vụ đang chạy, thì áp dụng Quy tắc sau" được đặt thành Không bắt đầu một trường hợp mới.

Sau đó tạo một lối tắt đến cái này trên máy tính để bàn của bạn và chạy nó từ đó, hoặc thông qua một phím tắt phím tắt hoặc ghim phím tắt vào thanh Tác vụ.

Tôi đã thực hiện nó trên hệ thống Windows 7 của mình và nó hoạt động hoàn hảo.


1
Rất tiếc, tôi quên chỉ định một điều quan trọng. Đây là đường dẫn đích cho lối tắt đến Nhiệm vụ. Dấu nhắc lệnh C: \ Windows \ System32 \ scht task.exe / run / TN "không có UAC". Văn bản bên trong dấu ngoặc kép là bất cứ điều gì bạn đặt tên cho Tác vụ khi bạn tạo Tác vụ.
Peter sẽ làm việc vào

không kèm theo id email của bạn trong câu trả lời của bạn
Blueberry - Vignesh4303

2

Chỉ cần sao chép và dán cmd.exe và đổi tên thành "cmda.exe" trong thư mục \ system32 \ (337 KB thậm chí không phải là vấn đề lớn ...). Tùy chọn "chạy với tư cách quản trị viên" trong các thuộc tính của cmda.exe sẽ không còn màu xám nữa và bạn có thể đặt tùy chọn này luôn chạy với tư cách quản trị viên. Bây giờ bạn sẽ có hai dấu nhắc lệnh: đầu tiên là thông thường, thứ hai có đặc quyền (a) dmin. Thật dễ dàng để gõ "cmda" trong Winthanh tìm kiếm như bạn làm với "cmd"!

Đối với cmd trong menu ngữ cảnh với đặc quyền quản trị viên, hãy đảm bảo rằng bạn đã có cmda.exe, thêm tệp này vào tệp .reg mới và khởi chạy nó

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmda]
@="Open command window here (Administrator)"
"HasLUAShield"=""
"Extended"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmda\Command]
@="cmda.exe /s /k pushd \"%V\""

Bạn sẽ thấy hai dòng giống nhau trong menu ngữ cảnh (shift); một Dấu nhắc lệnh không nâng cao và một lệnh khác có "(Quản trị viên)" được thêm vào.

Đó là nó...


1

Tạo lối tắt đến cmd.exe, nhấp chuột phải và chọn thuộc tính, trên tab Phím tắt chọn Nâng cao, kiểm tra Chạy với tư cách Quản trị viên.


1

Tôi nghĩ cách dễ nhất để luôn chạy cmd với tư cách quản trị viên là tạo tệp .reg với mã bên dưới:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
@="C:\\Windows\\System32\\cmd.exe"="RUNASADMIN"

Dán nó trong notepad hoặc một cái gì đó và lưu dưới dạng tệp .reg. Lưu ý: Điều này làm cho dấu nhắc lệnh chạy với tư cách quản trị viên cho tất cả người dùng. Để luôn luôn chạy với tư cách quản trị viên trên người dùng của bạn, chỉ cần thay đổi HKEY_LOCAL_MACHINE thành HKEY_CURRENT_USER


1

Tất cả là nhờ Jesse Brohinsky

Một phiên bản cải tiến hơn. Điều này cũng bao gồm thư mục nền cho phép bạn opencmd từ bên trong thư mục. Ngoài ra, vì lợi ích của nó, bạn có thể mở Commandpromt với tư cách là quản trị viên không.

Ngoài ra, bạn có thể vô hiệu hóa AdminApprovalMode. Bằng cách này, bạn không cần phải chạy như quản trị viên khi bạn là quản trị viên. http://helpdeskgeek.com/windows-7/turn-off-admin-approval-mode-in-windows-7/

Windows Registry Editor Version 5.00
;write minus before to unreg example: [-HKEY_CLASSES_ROOT\Directory\shell\cmdhere]

[HKEY_CLASSES_ROOT\Directory\shell\cmdhere]
@="Open Command Window Here"

[HKEY_CLASSES_ROOT\Directory\shell\cmdhere\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmdhere]
@="Open Command Window Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmdhere\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\Background\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

0

Cách duy nhất khác, ngoài những gì Dracs đề cập, là vô hiệu hóa hoàn toàn UAC


0

Các công việc sau đây cho tôi

@echo off
:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

bạn sẽ nhận được cùng một dấu nhắc uac xác nhận với quản trị viên runas .. đã tìm thấy nó một thời gian trước đây @ stackexchange

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.