2012-08-14 28 views
6

Tôi đang phát triển ứng dụng C# cần phát hiện xem người dùng có đang chạy với tư cách quản trị viên nâng cao hay không. Tôi đã thử số solution do Steven đề xuất.Không thể phát hiện xem người dùng có đang chạy với đặc quyền cao hay không, khi không có cửa sổ bật lên UAC

Tôi đã kiểm tra giải pháp trên 5 máy và hoạt động tốt trên 4 máy.

Có một máy không bao giờ hiển thị thông báo thông báo UAC, mặc dù tôi đã đặt Điều khiển tài khoản người dùng thành Always notify me.

Khi kiểm tra mã trên máy đó, ngay cả khi tôi chọn run as administrator, nó không hoạt động và phương thức IsProcessElevated trả về sai.

Có vấn đề gì với máy cụ thể đó không?

Có cách nào để xác định xem người dùng có được nâng lên hay không, trên loại nền tảng đó?

+0

Tôi sẽ kiểm tra xem máy có tất cả các gói dịch vụ mới nhất, v.v. sau đó thử lại. –

+0

có một số giải pháp thay thế để kiểm tra UAC [ở đây] (http://stackoverflow.com/questions/95912/how-can-i-detect-if-my-process-is-running-uac-elevated-or-not). Có thể thử một trong số đó và xem liệu nó có hiệu quả không? – Default

+1

Nghe có vẻ như tôi có điều gì đó sai với máy tính đó, không phải mã. Bạn sẽ nhận được nhắc nhở UAC nếu bạn cấu hình nó một cách rõ ràng để nhắc. Bạn không phải. Điều đó chỉ ra một vấn đề với chính hệ thống. –

Trả lời

10

Sau một nghiên cứu tôi phát hiện ra rằng từ Windows 7 và trên nhằm xác định liệu một người dùng là một admin cao hay không, bạn chỉ cần kiểm tra như sau:

WindowsIdentity identity = WindowsIdentity.GetCurrent(); 
WindowsPrincipal principal = new WindowsPrincipal(identity); 
return principal.IsInRole (WindowsBuiltInRole.Administrator); 

(Phần còn lại của mã kiểm tra Mã thông báo có thể được sử dụng trong trường hợp tùy chọn này không thành công) Tôi đã kiểm tra mã trên một số máy và nó hoạt động tốt.

ứng dụng của tôi chỉ chạy trên win7 trở lên để giải pháp này đủ tốt cho tôi.

+1

+1 Công việc tuyệt vời. Câu hỏi mà OP liên kết đã khiến tôi lúng túng một chút khi quét nó vì nó có một tiêu đề rất gây hiểu lầm. –

+0

Mã này hoạt động tốt trên Windows 8.1. – codechurn

0

Có thể ngớ ngẩn khi hỏi, nhưng sau khi bạn thay đổi UAC để luôn thông báo cho tôi, bạn đã khởi động lại máy chưa?

Tôi gặp vấn đề tương tự và sự cố xảy ra trong Windows vì trạng thái UAC không thay đổi trừ khi bạn khởi động lại máy.

Hãy thử, đồng thời kiểm tra this linkthis.

Các vấn đề liên quan