2010-11-03 32 views
8

Tôi có chức năng trong ứng dụng yêu cầu quyền quản trị.Cửa sổ bật lên quyền quản trị trong ứng dụng C#

Điều tôi muốn là khi tôi nhấp vào nút để thực hiện chức năng đó, nó sẽ yêu cầu tên người dùng và mật khẩu quản trị viên. (Khởi chạy hộp thoại UAC. Cũng hiển thị biểu tượng trên nút đó.)

Có thể không?

alt text

PS: Tôi biết về tung ra ứng dụng với quyền admin bằng cách làm thay đổi trong file manifest.

Chức năng này cũng là một phần của chương trình lớn và không thể chuyển sang chương trình riêng biệt.

+0

Bạn phải khởi động lại ứng dụng của mình khi quyền truy cập quản trị đầy đủ đã được cấp để ứng dụng của bạn có thể tận dụng các quyền mới. Do đó tại sao @Rob đã gợi ý rằng bạn sử dụng một ứng dụng riêng biệt. Khuyến nghị tốt nhất tôi có thể đưa ra là bạn yêu cầu quyền truy cập đầy đủ khi ứng dụng của bạn khởi chạy ban đầu, nếu bạn thực sự cần nó. –

+0

Tôi đánh giá cao đề xuất của bạn nhưng ứng dụng của chúng tôi thậm chí có thể được thực thi bởi người dùng Khách (đó là yêu cầu) và đôi khi chúng tôi cần quyền quản trị. – Raj

+0

@Raj Tôi chắc rằng UAC không hoạt động như thế. Chúc may mắn :) –

Trả lời

4

Cách tốt nhất để đạt được điều này là có tệp thực thi phụ có chứa mã yêu cầu quyền quản trị, được hiển thị phù hợp. Khi ứng dụng của bạn cần thực thi mã yêu cầu quyền quản trị, hãy gọi chương trình đó.

Ví dụ:

MyProgram.exe - không có biểu hiện
MyProgramElevated.exe - có một biểu hiện cho biết nó đòi hỏi quyền quản trị

Khi MyProgram.exe nhu cầu để thực hiện một hành động khi được nâng nó thực thi MyProgramElevated.exe , chuyển các tham số dòng lệnh cho biết tác vụ được nâng lên là bắt buộc.

+0

Đó là điều đầu tiên tôi muốn làm nhưng chức năng này là một phần của một chương trình lớn và nó không thể được chuyển sang một chương trình riêng biệt. – Raj

+1

@Raj, tôi không biết bất kỳ cách nào để có được mã thông báo "đầy đủ" ngoài việc làm như tôi đã đề xuất. Tôi đã thêm một vài thẻ khác vào câu hỏi của bạn để hy vọng làm cho nó hiển thị rõ hơn khi ai đó có thể biết một giải pháp mà tôi không =) – Rob

+0

Cảm ơn bạn rất nhiều Rob .. :) – Raj

5

Bạn có thể nhận được biểu tượng bằng StockIcons.Shield từ Windows API Code Pack

Bạn có thể chạy một chương trình với quyền quản trị mà không thay đổi biểu hiện chương trình bằng cách sử dụng "runas" verb (bạn cũng có thể sử dụng để tái khởi động của bạn chương trình có quyền quản trị):

Process.Start(new ProcessStartInfo() 
    { 
     Verb = "runas", 
     FileName = "Notepad.exe", 
    }); 

Có một API COM cho phép bạn tạo đối tượng COM có quyền quản trị trong quy trình không phải quản trị viên, nhưng tôi cho rằng rất khó sử dụng ứng dụng này từ ứng dụng .net.

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