Chạy với tư cách quản trị viên từ dòng lệnh trên Windows 8


11

Tôi đang cố gắng chạy Notepad với tư cách quản trị viên để tôi có thể chỉnh sửa tệp máy chủ của mình từ dòng lệnh.

Tôi đã thử runas /user:(myusername)\administrator "notepad c:\windows\system32\drivers\etc\hosts"tôi sau đó nhập mật khẩu của tôi và tôi nhận được

RUNAS ERROR: Không thể chạy - notepad c: \ windows \ system32 \ driver \ etc \ hosts 1327: Hạn chế tài khoản đang ngăn người dùng này đăng nhập. Ví dụ: sswords trống không được phép, thời gian đăng nhập bị hạn chế, hoặc một hạn chế chính sách đã được thi hành.

PS: Tôi biết nếu tôi cấp quyền cho tài khoản người dùng của mình, tôi có thể chỉnh sửa nó mà không cần chạy với tư cách quản trị viên. Nhưng tôi muốn biết làm thế nào để làm điều này mà không phải thay đổi quyền trên tệp máy chủ.

Câu trả lời:


7

Ok, lý do điều này không hoạt động là mô hình bảo mật trong Windows Vista và mới hơn. Một tài khoản trong nhóm quản trị viên vẫn chạy mọi thứ không được nâng cao rõ ràng là người dùng bị giới hạn. Ngoại lệ là Administratortài khoản, chạy mọi thứ nâng cao. Vì lý do này, việc sử dụng làm tài khoản đăng nhập của bạn thường bị coi là xấu và thường bị vô hiệu hóa.

Bạn có thể kích hoạt nó và sau đó runasgọi tài khoản đó. Điều đó giới thiệu một vài vấn đề - hiện tại bạn đang chạy với môi trường của một người dùng khác, có thể có các biến môi trường khác nhau được đặt. 1

Cách tốt hơn để làm điều này sẽ thực sự nâng cao như người dùng hiện tại của bạn thông qua UAC. Thật không may, dấu nhắc lệnh tiêu chuẩn không bao gồm khả năng đó - nhưng cả chương trình của bên thứ ba và PowerShell và WSHell (VBScript) tích hợp đều có thể làm như vậy.


Mượn từ câu trả lời khác của tôi , bạn có thể gọi lệnh PowerShell trực tiếp bằng powershell -c:

powershell -c start -verb runas notepad C:\Windows\System32\drivers\etc\hosts

về cơ bản cho PowerShell chạy các phần sau ( startđược đặt bí danh Start-Process):

Start-Process -Verb "runas" notepad C:\Windows\System32\drivers\etc\hosts

Thủ thuật ở đây là chuyển động từ runas, kích hoạt UAC.

Cả Start-Process -Verb runascmd tiêu chuẩn cũng không runasvượt qua thư mục làm việc hiện tại , vì vậy hãy luôn sử dụng đường dẫn đầy đủ trong bất kỳ lệnh nào bạn nâng lên theo cách này.

Cũng lưu ý rằng một số đối số như -ccó thể xung đột với các Start-Processđối số, vì vậy cách an toàn nhất là:

powershell "-c start -verb runas commandname -argumentlist 'arg1 arg2'"

1 Lưu ý: điều này chỉ áp dụng cho các biến môi trường của người dùng . Các biến môi trường bạn đặt trong quy trình cha không được truyền qua bởi UAC ! Điều này cũng áp dụng cho runas, và nó thậm chí còn tồi tệ hơn bởi vì bạn thậm chí sẽ không nhận được bình chính xác của người dùng.


Nó không làm việc cho tôi với dấu ngoặc kép.
Vince

@Ghodmode Bạn có thể cho một ví dụ về dòng bạn đã cố chạy không? Nếu bạn đang đề cập đến ví dụ cuối cùng, hãy thử chuyển trích dẫn đầu tiên sang sau -c. (vì vậy -c "startthay vì "-c start)
Bob

Lưu ý rằng quy trình powershell không cần phải được nâng lên để chạy chương trình với tư cách quản trị viên.
jiggunjer

Điều kỳ lạ là nó đã hoạt động trước bản cập nhật Windows 10 2019-03.
Qwerty


-1

Một điều mà bạn có thể thử là mở dấu nhắc lệnh với tư cách quản trị viên và chạy notepad thông qua đó. Chỉ cần gõ Notepad. Sau khi bạn làm điều đó từ đó bạn có thể nhấp vào tệp, sau đó mở và điều hướng đến tệp máy chủ và mở nó. Cuối cùng, bạn chỉ có thể tiết kiệm như bình thường.

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.