Câu hỏi Có lệnh 'sudo' cho Windows không?


Tôi luôn làm việc trên tài khoản không phải quản trị viên trên máy tính Windows của mình. Đôi khi tôi cần phải cài đặt các chương trình yêu cầu quyền truy cập của quản trị viên. Khi tôi chủ yếu sử dụng dấu nhắc lệnh Windows, có một lệnh Windows để leo thang đặc quyền, tương tự như lệnh thiết bị đầu cuối Linux sudo?


414
2017-09-17 09:24


gốc


Tôi tin rằng thuật ngữ bạn đang tìm kiếm là quyền truy cập "cao". Mặc dù thông tin đăng nhập của bạn có quyền quản trị, các quy trình trong thông tin xác thực của bạn không có quyền quản trị cho đến khi bạn "sudo" lệnh. Trong Windows, họ gọi nó là "nâng cao". - surfasb
Chỉ dùng su và lệnh của bạn. Nó mở ra phiên bản mới của PowerShell đang chạy với tư cách quản trị viên. - IGRACH
@IGRACH không thuộc quyền hạn của tôi ... - jiggunjer


Các câu trả lời:


Các chạy như chỉ huy.

runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program

Chỉ cần chạy:

runas /noprofile /user:Administrator cmd 

để bắt đầu một lệnh shell làm quản trị viên


254
2017-09-17 09:29



Bạn có thể thấy bạn muốn tải hồ sơ (ví dụ: bao gồm các biến môi trường) cho bất kỳ việc sử dụng mở rộng nào. Trong trường hợp nào rơi xuống /noprofile. - Richard
Điều này không làm việc cho tôi. Sau khi tôi gõ mật khẩu, dấu nhắc lệnh sẽ bị đóng. - Jonas
không phải là điều này yêu cầu mật khẩu của quản trị viên? sudo đang yêu cầu của bạn mật khẩu! - n611x007
Thật không may, đây là lỗi thời nghiêm trọng. Runas chỉ chạy các lệnh dưới một bộ thông tin đăng nhập khác. Mặc dù thông tin đăng nhập của bạn có quyền quản trị, điều đó không có nghĩa là tất cả các quy trình trong thông tin xác thực của bạn đều chạy dưới dạng quản trị viên. - surfasb
+1 cho "lỗi thời" vì runas không thể bỏ qua UAC. Thay vào đó, nhấn nút Windows, gõ cmd và nhấn Ctrl + Shift + Enter. - mellow-yellow


tôi đa kham pha ra nâng hôm nay "thực hiện một lệnh với độ cao đặc quyền UAC. Điều này rất hữu ích để làm việc bên trong các lệnh nhắc hoặc với các tệp batch." Nó không giống như sudo, nó thay đổi người dùng thực thi thành Quản trị viên, nhưng cú pháp của nó dễ sử dụng hơn rất nhiều runasvà nó có thể giữ thư mục hiện tại, cho phép sử dụng các đường dẫn tương đối.

Synopsis:
  elevate [(-c | -k) [-n] [-u]] [-w] command

Options:
  -c  Launches a terminating command processor; equivalent to "cmd /c command".
  -k  Launches a persistent command processor; equivalent to "cmd /k command".
  -n  When using -c or -k, do not pushd the current directory before execution.
  -u  When using -c or -k, use Unicode; equivalent to "cmd /u".
  -w  Waits for termination; equivalent to "start /wait command".

Mục đích của Elevate không phải là để làm việc xung quanh hoặc bỏ qua UAC (User Account Control), nhưng để làm việc với nó. Miễn là UAC được kích hoạt ở đó  là một loại nhắc nhở tại một số điểm trong tiến trình. Nếu bạn cần loại bỏ hoàn toàn, bạn phải Vô hiệu hóa uac.

Độ cao của điểm giảm đau làm giảm đi một quá trình cụ thể từ một vỏ không có đặc quyền, và sau đó tiếp tục như bình thường. Nếu không có điều này, bạn cần phải bắt đầu một dấu nhắc lệnh đặc quyền với nhấp chuột phải> "Chạy với tư cách quản trị viên", không thể dễ dàng viết kịch bản, trước khi thử lệnh đặc quyền.


112
2018-04-12 06:42



Điều này hoàn hảo với "Elevate without prompting" trong secpol.msc. Cùng nhau, họ làm tương tự như %wheel ALL=(ALL) NOPASSWD: ALL trong sudo. - sayap
@sayap, chỉ để được rõ ràng, bạn có nghĩa là điều này: ss64.com/nt/syntax-uac.html? - matt wilkie
Vấn đề duy nhất tôi tìm thấy với nâng cao (v1.3.0) là nó không trả lại mã lỗi từ chương trình nó đang nâng lên. - Ken
Sudo.bat: @elevate %* => lợi nhuận! - Joe DF
Sẽ được tốt đẹp để đề cập đến đó là một tiện ích bên ngoài, thiếu OOTB. - Hi-Angel


Bạn có thể dùng chạy như lệnh tương tự, hoặc bạn có thể kiểm tra sudo dành cho Windows dự án qua tại SourceForge thêm lệnh sudo.

Sự khác biệt là tinh tế:

Giả sử bạn có hai người dùng. Bob là người dùng bình thường và James là quản trị viên.

Nếu bạn đăng nhập với tư cách là Bob và sử dụng "runas james acommand" thì lệnh được chạy như thể nó được điều hành bởi James, vì vậy nó truy cập cài đặt người dùng của James và bất kỳ thay đổi nào của người dùng đều đi vào James Tai liệu của tôi & các thư mục cài đặt, vv Vì vậy, nếu bạn đang cài đặt một ứng dụng, nói rằng, nó sẽ được cài đặt như James, không phải là Bob.

Nếu mặt khác, Bob thực hiện "sudo acommand" lệnh vẫn chạy như Bob, nhưng với các quyền nâng cao - giống như lệnh sudo Linux. Để ngăn không cho bất kỳ người dùng nào có thể sudo bạn phải định nghĩa một nhóm người dùng sudoers chứa danh sách những người dùng bình thường có quyền nâng cao bằng sudo. Người dùng vẫn phải cung cấp thông tin đăng nhập trước khi nâng cao.

Đôi khi sự khác biệt không quan trọng, đôi khi nó là, và tôi thấy rằng cả hai lệnh có thể hữu ích.


66
2017-09-17 09:28



Bạn có chắc không? Khi tôi chạy sudo trong ubuntu, nếu chủ đề hiện tại của tôi là ~/.themes sau đó ứng dụng sudo-ed sẽ không thể truy cập chủ đề đó, vì nó không có trong /home/root/.themesvà sẽ sử dụng chủ đề gtk xấu xí mặc định. - hasen
@ hasen j - vấn đề của bạn chỉ vì ~ / .themes đánh giá trước khi lệnh được chạy (và do đó trước khi nó chuyển sang root). - Jared
Một giải pháp khác, ngoại trừ được lưu trữ trên GitHub, là windosu: github.com/tehsenaus/windosu Tôi chỉ tìm thấy nó, và nó có vẻ làm việc tuyệt vời. Điều yêu thích là nó rất dễ cài đặt. Chỉ cần "npm install -g windosu". - Venryx


Bạn cũng có thể sử dụng Kịch bản PowerToys độ cao.


39
2017-09-17 13:11



Tuyệt vời - chính xác những gì tôi đang tìm kiếm. Tôi không muốn chạy như một lệnh có một người dùng khác nhau, chỉ để chạy nó với các đặc quyền nâng cao. - orip
Giải pháp chính xác cho vấn đề này! Ai muốn Runas với cú pháp lộn xộn của nó? - Stabledog
Tôi thường muốn lệnh nâng cao được xây dựng trong cửa sổ. Đó là một công cụ tuyệt vời. - nhinkle♦
bây giờ có một Bộ sưu tập PowerToys độ cao bởi cùng một tác giả từ đó Tạo một kịch bản tự nâng cao đặc biệt có liên quan. - matt wilkie
@ barlop tất nhiên là không. Điều đó sẽ đánh bại mục đích của UAC. - nhinkle♦


Nếu bạn đã sẵn sàng chuyển sang bàn điều khiển thay thế, có ConEmu (Tôi là tác giả). Một trong những tính năng của nó - khả năng chạy cả các tab cao và không nâng cao trong cửa sổ ConEmu. Các tab cũng có thể được bắt đầu bằng các thông tin đăng nhập khác nhau.

Để thuận tiện cho người dùng, có tập tin theo lô csudo.cmd (có thể dễ dàng được chấp nhận để bash). Đọc mô tả đầy đủ bằng wiki của dự án. Tóm lại, khi bạn chạy một số lệnh từ tab không nâng cao hiện tại, ví dụ

csudo dism /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess

ConEmu sẽ bắt đầu dism trong bảng điều khiển / tab nâng cao mới (với dấu nhắc UAC trước trong Vista hoặc hộp Đăng nhập trong XP).

Theo mặc định csudo bắt đầu giao diện điều khiển mới trong phần chia nhỏ (có thể thay đổi thông qua chỉnh sửa csudo.cmd nội dung).

Và tất nhiên bạn có thể đổi tên thành sudo.cmd nếu bạn thích "cổ điển" sudo từ.

sudo in ConEmu/Windows


25
2017-10-26 07:52



csudo từ lâu đã được bao gồm trong phân phối ConEmu. Không cần liên kết nào cả. - Maximus
vấn đề ở đây là tab console mới trở nên không sử dụng được sau lệnh sudo'd. Vì vậy, bạn không thể tiếp tục làm việc trong tab nâng cao, chỉ cần có được press enter or esc to exit thông điệp. - jiggunjer
Tất nhiên bạn không thể. Ngay cả trên Unix bạn quay trở lại thiết bị đầu cuối không nâng cao sau sudo lệnh được thực hiện công việc của nó! Bạn đang đi sai đường. - Maximus
1) nếu bạn sẽ mở một cửa sổ hoặc tab mới, bạn cũng có thể giữ nó, hãy để người dùng chọn nếu họ muốn tiếp tục. 2) Trên ubuntu của tôi tôi không phải sudo mỗi lần, độ cao kéo dài một vài phút tôi nghĩ. 3) ứng dụng này có một triệu tùy chọn, nhưng không có gì cho điều này? Có lẽ tôi đã hư hỏng. - jiggunjer


Phương thức nhanh:

Ba bước để thêm sudo.

  1. Mở PowerShell.

  2. Sao chép tập lệnh sau (Ctrl + C) và dán vào PowerShell (Alt + Space + E + P):

$script_path="$HOME\Documents\Scripts"; if (!(test-path $script_path)) {New-Item -ItemType directory $script_path} if (!(test-path $profile)) { new-item -path $profile -itemtype file -force }". $script_path\sudo.ps1" | Out-File $profile -append; "function sudo(){if (`$args.Length -eq 1){start-process `$args[0] -verb `"runAs`"} if (`$args.Length -gt 1){start-process `$args[0] -ArgumentList `$args[1..`$args.Length] -verb `"runAs`"}}" | Out-File $script_path\sudo.ps1; powershell
  1. Đánh Đi vào.

Nó sẽ bật vĩnh viễn sudo trong PowerShell.

Sử dụng:

sudo <process-name> [param1 [param2 [param3]]]

Ví dụ:

sudo explorer
sudo notepad
sudo powershell
sudo cmd
sudo taskmgr
sudo tasklist
sudo taskkill /IM Skype.exe /PID 8496

Phương pháp học tập dài:

Lưu ý: Tôi đã trộn tập lệnh từ cả hai bài viết để tạo tập lệnh nói trên. Thay vì dán thủ công tập lệnh trong notepad, tôi đã thêm Out-File báo cáo để lưu ps1 và $profile tệp từ tập lệnh.

Mẹo: Nếu bạn không phải là một fan hâm mộ rất lớn của các cửa sổ bật lên UAC (như tôi), hãy lưu phần sau trong tệp * .reg và chạy nó:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000

23
2017-08-28 10:36



Tôi yêu các giải pháp powershell cho câu hỏi này. Đây phải là cách dễ nhất để nâng cao thứ gì đó. Các tệp .bat hiện có có thể dễ dàng được chuyển đổi sang POSH - Mitchell Skurnik
Có lỗi này trên windows 10: . : File C:\Users\User\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 cannot be loaded because running scripts is disabled on this system. - sowrov
@sowrov, xem [bài viết này] (www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/). Theo mặc định, các kịch bản PowerShell bị tắt trên mọi cài đặt Windows. Bạn cần phải kích hoạt nó bằng lệnh này set-executionpolicy remotesigned. Các tùy chọn khác ngoài remotesigned được mô tả trong tài liệu chính thức. - vulcan raven
Độc giả lưu ý tập lệnh ps này là một trình bao bọc cho powershell -c start -verb runas program.exe chức năng. Cũng lưu ý bạn không thể nâng cao như thế này với dấu nhắc cmd (nguyên bản). Powershell là tùy chọn gốc tốt nhất. - jiggunjer


Nếu bạn đang làm điều này trên Windows, thì ngoài lệnh Run As như đã đề cập trong một vài câu trả lời khác, cũng có nhiều cách để làm điều này bằng chuột.

Nếu bạn giữ Shift khi bạn nhấp chuột phải vào hầu hết các tệp thi hành trong Windows, bạn sẽ thấy một vài tùy chọn nâng cao hơn. Một trong số đó là "Run As..."tùy chọn (tôi nghĩ nó được gọi là"Run As Administrator"từ Vista trở đi).

Bạn cũng có thể tải xuống phiên bản cao cấp hơn của RunAs từ Microsoft, được gọi là ShellRunAs, điều này có những cải tiến so với lệnh RunAs tích hợp, cả trong dòng lệnh và chế độ đồ họa, kể cả cho phép bạn lưu thông tin đăng nhập tài khoản


20
2017-09-17 11:22





Surun là ứng dụng mã nguồn mở miễn phí cho phép các chương trình nhất định chạy với quyền quản trị, mà không cung cấp mật khẩu mà không thay đổi sổ đăng ký người dùng hoặc sửa đổi các biến môi trường.

Khi tôi đang sử dụng Windows XP, ứng dụng này giúp tôi rất nhiều. Beta hoạt động trong Windows 7.


3
2017-11-17 15:24



surun làm một công việc tuyệt vời. Tuy nhiên đôi khi theo Windows 8 và 8.1 mặc định của nó không phải là lý tưởng. Bởi vì nó thay thế chạy của Windows như là chức năng, bạn không thể bắt đầu một dấu nhắc lệnh với kích chuột phải vào màn hình bắt đầu. - Wolf