2011-12-23 33 views
6

Trong một ứng dụng Windows tôi có, tôi đang thực hiện một số thay đổi trong registry như xóa một khóa cụ thể, trong một số kịch bản thử nghiệm như trong một máy Vista với UAC của nó, tôi nhận được System.UnauthorizedAccessException . Mã của tôi sẽ trông giống như sau:Làm thế nào để xử lý UnauthorizedAccessException trong User Code

try 
{ 
    //delete registry keys 
} 
catch (UnauthorizedAccessException ex) 
{ 
    //handling 
} 
catch (Exception genEx) 
{ 
    //handling 
} 

Nhưng ứng dụng sẽ vẫn bị lỗi., Không được xử lý bởi khối catch. Có cách nào tôi có thể xử lý nó?

+0

Bạn có chắc chắn mã khiến ứng dụng của bạn gặp sự cố không? –

+0

http://www.codeproject.com/KB/vista-security/MakingAppsUACAware.aspx –

+0

Bạn phải có khả năng bắt ngoại lệ này. Có lẽ bạn có thể cung cấp cho chúng tôi nhiều mã hơn (ý tôi là ít nhất là cuộc gọi ném ngoại lệ) để giúp khắc phục sự cố. – ken2k

Trả lời

1

Có thể bạn đang ném một ngoại lệ khác từ khối catch. Hãy thử nhận xét tất cả các dòng trong khối catch và nó sẽ hoạt động tốt.

+0

+1 hãy xây dựng một chút, cuối cùng câu trả lời này là ** đúng ** và @niranjan có thể/nên chấp nhận nó! –

+0

Tôi đã tìm thấy vấn đề này vào ngày đăng câu hỏi và thêm nó làm nhận xét ... Tôi đã quên đánh dấu nó là đã trả lời .. :(xin lỗi các bạn ... nếu nó gây nhầm lẫn :) @Adriano: Cảm ơn để nhắc nhở .. Tôi sẽ đánh dấu nó là câu trả lời .. :) – Niranjan

0

Lý do phổ biến nhất và rõ ràng là chương trình đường dẫn/tệp đang cố truy cập không có quyền truy cập vào danh tính mà nó đang chạy.

đọc thêm ở đây trên MSDN

+0

tại sao -1? ai đó có thể nói chuyện đó không? – Baljeetsingh

+0

+1 .. Vâng đó là vấn đề .. Tôi đã thêm một bình luận trong câu hỏi của chính tôi .. mặc dù tôi không thêm câu trả lời và đánh dấu nó :(.. – Niranjan

+0

Tôi không nhận thấy nhận xét nhưng đánh dấu có thể giúp người khác người dùng tìm câu trả lời đúng .. – Baljeetsingh

0

bạn phải thiết lập quyền truy cập quản trị cho ứng dụng của bạn

cho rằng chỉ việc kích chuột phải và chọn thuộc tính

và kiểm tra Run as séc Administrator và chạy ứng dụng của bạn

để chạy với tư cách quản trị viên cho tất cả người dùng nhấp vào nút tất cả người dùng và chọn chạy với tư cách là quản trị viên cho tất cả người dùng, điều này sẽ luôn chạy ứng dụng của bạn với quyền truy cập quản trị cho tất cả người dùng

enter image description here

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