TL; DR - Tùy chọn duy nhất là sinh ra một quy trình khác. (Một cái mới cmd.exe
.) Trong trường hợp Dấu nhắc Lệnh, bắt đầu một phiên bản mới với mã thông báo truy cập có quyền cao hơn sẽ luôn dẫn đến một cửa sổ mới được tạo.
Không thể cấp quyền bổ sung cho quy trình đã chạy .
Khi người dùng có quyền quản trị đăng nhập vào máy Windows có bật Kiểm soát tài khoản người dùng (UAC), hai mã thông báo truy cập riêng biệt được tạo :
- Một người có quyền truy cập quản trị viên đầy đủ và
- "Mã thông báo được lọc" thứ hai với quyền truy cập người dùng chuẩn
Tại thời điểm một quy trình (ví dụ CMD.EXE
) được tạo, nó được gán một trong hai mã thông báo truy cập này . Nếu quy trình được chạy "nâng cao" với tư cách Quản trị viên, mã thông báo truy cập chưa được lọc sẽ được sử dụng. Nếu quy trình không được cấp quyền quản trị, mã thông báo người dùng chuẩn, được lọc sẽ được sử dụng.
Khi một quá trình đã được tạo, không thể thay thế mã thông báo truy cập của nó . 1 Trong luồng Bảo mật Ứng dụng MSDN cho Windows Desktop này , một người đăng tự nhận mình là thành viên của Nhóm Hạt nhân Windows tuyên bố:
Hạt nhân NT không bao giờ có ý định cho phép chuyển đổi mã thông báo khi một quá trình bắt đầu chạy. Điều này là do các thẻ điều khiển, v.v. có thể đã được mở trong bối cảnh bảo mật cũ, các hoạt động trên máy bay có thể sử dụng bối cảnh bảo mật không nhất quán, v.v. Như vậy, thường không có ý nghĩa gì khi chuyển đổi mã thông báo của quy trình một khi nó đã bắt đầu thực thi. Tuy nhiên, điều này đã không được thi hành cho đến Vista . [tôi nhấn mạnh] (Nguồn nhờ đến @Ben N )
Lưu ý: Kiểm soát tài khoản người dùng được giới thiệu cùng với việc phát hành Windows Vista .
Câu trả lời Siêu người dùng này trích dẫn hai nguồn bổ sung xác nhận giống nhau:
Do đó, đơn giản là không thể nâng cao Dấu nhắc Lệnh hoặc bất kỳ quy trình nào khác tại chỗ. Tùy chọn duy nhất là sinh ra một quy trình khác với mã thông báo truy cập mới (có thể là một phiên bản khác của quy trình ban đầu nếu muốn). Trong trường hợp Dấu nhắc Lệnh, bắt đầu một phiên bản mới với mã thông báo truy cập có quyền cao hơn sẽ luôn dẫn đến một cửa sổ mới được tạo và nếu lời nhắc UAC được bật trên hệ thống, chúng cũng sẽ được kích hoạt.
1 Bạn có thể điều chỉnh các đặc quyền trong mã thông báo truy cập hiện có bằng chức năng TuneTokenPriv đặc quyền , nhưng theo MSDN :
Chức năng TuneTokenPriv đặc quyền không thể thêm đặc quyền mới vào mã thông báo truy cập. Nó chỉ có thể kích hoạt hoặc vô hiệu hóa các đặc quyền hiện có của mã thông báo.