2009-12-10 72 views
5

Tôi đã có một ứng dụng WinForms mà tôi đang làm việc. Có một phần nhỏ chức năng cần được chạy với tư cách quản trị viên trong Vista/Win7. Tôi hiểu cách tôi có thể đặt requestExecutionLevel cho ứng dụng trong tệp kê khai. Bí quyết là, tôi không muốn yêu cầu người dùng chạy toàn bộ ứng dụng với tư cách quản trị viên, chỉ là một phần của nó. Vì vậy, tôi muốn có hầu hết các chức năng chạy asInvoker.Cấp thực hiện được yêu cầu cho một dll

Nếu tôi đặt chức năng quản trị trong một dll, có cách nào để đánh dấu nó là requireAdministrator không? Tôi đã cố gắng sử dụng MT để thêm một biểu hiện vào dll, nhưng điều đó dường như không hoạt động. Tôi cần phải làm gì?

Trả lời

4

Không có cách nào để phân biệt cấp độ thực thi của một ứng dụng trên cơ sở DLL theo DLL. Đây là một quá trình thiết lập rộng. Bạn sẽ phải gọi một quá trình khác trong ứng dụng của bạn chạy mã trong DLL đó với các priv nâng cao.

Một tùy chọn bạn có mặc dù là sử dụng chương trình rundll hoặc rundll32 để chạy DLL trực tiếp. Đây là một chương trình cửa sổ độc lập được thiết kế để tải và chạy một DLL cụ thể. Bạn có thể nâng cao quy trình rundll và nhận được sự cô lập mà bạn mong muốn.

Googling for rundll sẽ cung cấp cho bạn nhiều lời khuyên về cách sử dụng :).

+0

DLL có thể được thực hiện như là quá trình riêng của nó hay không nó phải được đưa ra từ một EXE? – epotter

+0

@epotter Tôi đã cập nhật câu trả lời của mình một chút về chủ đề này. – JaredPar

3

Độ cao theo mỗi quá trình, vì vậy, bạn không thể tự mình nâng cấp DLL. Bạn cần phải nhìn vào lưu trữ các DLL trong một quá trình riêng biệt, nâng cao; hoặc bạn có thể nhìn vào biệt danh COM độ cao và thực hiện theo cách đó.

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