2013-09-27 62 views
6

Trong Windows Vista trở lên, LogonUser trả lại mã thông báo không có đặc quyền, ngay cả khi người dùng đã cung cấp là quản trị viên. Do đó, khi bạn mạo danh sử dụng mã thông báo đó, bạn không được nâng cấp. Với tên người dùng và mật khẩu chính xác cho người dùng quản trị viên, làm cách nào để bạn chạy mã có đặc quyền nâng cao cho quản trị viên đó?Với tên người dùng và mật khẩu, bạn mạo danh người dùng đó như thế nào?

+0

Bạn có muốn mạo danh tài khoản AD hoặc tài khoản cục bộ không? – Botonomous

+1

Active Directory, chủ yếu - mặc dù nếu nó hoạt động cho địa phương cũng sẽ tuyệt vời! –

Trả lời

0

Nếu bạn đang viết một dịch vụ Windows, sử dụng LOGON32_LOGON_SERVICE thay vì LOGON32_LOGON_INTERACTIVE hoặc LOGON32_LOGON_NEW_CREDENTIALS sẽ dẫn đến một mã thông báo đặc quyền, miễn là người dùng bạn muốn mạo danh có quyền 'đăng nhập dưới dạng dịch vụ'.

Điều này không cung cấp giải pháp chung (nó sẽ không hoạt động nếu bạn đang viết một ứng dụng hướng đến người dùng), nhưng đủ để giải quyết vấn đề cụ thể mà tôi có.

1

Tôi chỉ làm việc với this example, Nó thực sự hoạt động tốt. Tôi đoán nếu bạn muốn chạy mã trong bối cảnh này, bạn sẽ phải thiết lập các chủ đề chính hiện tại bằng cách:

Thread.CurrentPrincipal = new System.Security.Principal.WindowsPrincipal(WindowsIdentity.GetCurrent()); 
Các vấn đề liên quan