2009-09-03 21 views
13

Tôi đang làm hương ở liên kết sau: http://msdn.microsoft.com/en-us/library/zt39148a%28VS.80%29.aspxC#: Simple Dịch vụ Windows cung cấp cho An ninh ngoại lệ

Tôi đã theo nó một cách chính xác, từng dòng. Tôi đã cài đặt dịch vụ thành công, tuy nhiên, khi tôi cố gắng chạy nó, thông báo lỗi sau xuất hiện:

"Một ngoại lệ chưa được xử lý (" System.Security.SecurityException ') xảy ra trong MyNewService.Exe [5292].

Tôi đã thấy rằng đối với nhiều người nó hoạt động, nhưng một số người có ngoại lệ này, mặc dù tôi không thể tìm thấy câu trả lời. Có ai có ý tưởng gì không? Cảm ơn.

+0

ID nào bạn đang sử dụng? Bạn đã cấp nó đăng nhập như một quyền dịch vụ chưa? – serialhobbyist

+0

Bạn có dòng mã nơi xảy ra lỗi trong Thông báo Lỗi không? Điều đó sẽ đưa ra một gợi ý về trường hợp ngoại lệ xảy ra và cho chúng tôi cung cấp cho bạn câu trả lời cụ thể hơn. – David

+0

Ngoại lệ được ném tại: System.Diagnostics.EventLog.CreateEventSource ("MySource", "MyNewLog"); Và ngoại lệ là: "Không tìm thấy nguồn, nhưng một số hoặc tất cả nhật ký sự kiện không thể tìm kiếm được. Nhật ký không thể truy cập: Bảo mật". – sbenderli

Trả lời

18

Phương pháp EventLog.SourceExists là những gì sẽ gây ra ngoại lệ này. Lý do phổ biến nhất là nó cố gắng truy cập TẤT CẢ các bản ghi sự kiện (bao gồm cả Nhật ký bảo mật) theo mặc định trong Vista, bạn sẽ không có quyền. Một lý do khác có thể là nếu nguồn bạn đang tìm kiếm không được tìm thấy trong bản ghi sự kiện (mà tôi thấy khá lạ!).

Một công việc xung quanh:

bool sourceFound = false; 
try 
{ 
    sourceFound = EventLog.SourceExists("MySource"); 
} 
catch (SecurityException) 
{ 
    sourceFound = false; 
} 

Một lựa chọn khác là chỉ cần nâng cao quyền của bạn, tuy nhiên, như bạn nơi sau khi bước hướng dẫn bước dịch vụ của bạn sẽ được chạy dưới tài khoản LocalService (mà một lần nữa giành' t có quyền đối với phương thức cụ thể này). Do đó, bạn sẽ tìm thấy trên tài liệu MSDN giải pháp là để kiểm tra xem nguồn sự kiện tồn tại trong ServiceInstaller và nếu không, hãy tạo nguồn trong trình cài đặt.

+0

cảm ơn bạn, điều này hoạt động hoàn hảo! – sbenderli

+0

Không vấn đề gì, tôi có cùng một vấn đề nên tôi đã điều tra một chút và dường như đây là nguyên nhân. trong trình cài đặt là bạn sẽ phải nâng cấp quyền của mình để bạn có thể có các yêu cầu riêng tư tại thời điểm đó – James

+0

ví dụ về cách cài đặt mã http://blog.kappasolutions.ca/blog/post/2010/07/ 04/Làm thế nào để tạo-một-Custom-Sự kiện-Đăng nhập-Windows-7.aspx – Sergio

0

Go nhận được một bản sao của Process Monitor và xem những gì sẽ xảy ra - bạn sẽ nhận được vấn đề hiển thị như là kết quả thất bại và bạn có thể tra từ đó ...

chỉnh sửa: Để làm rõ, một công cụ miễn phí từ microsoft (sysinternals) và nó làm những gì nó nói trên tin :)

+0

Tôi đã làm những gì bạn đề xuất, nhưng khi tôi thử và bắt đầu dịch vụ, không có gì hiển thị trong Process Monitor dưới tên MyNewService..một dịch vụ khác có được gọi không? – sbenderli

1

Bạn có phải là quản trị viên cục bộ trên máy của mình không? Nếu vậy, hãy đặt dòng sau mã ở trên cùng của các nhà xây dựng dịch vụ cửa sổ của bạn:

System.Diagnostics.Debugger.Break(); 

Khi dịch vụ bắt đầu chạy, nó sẽ nhấn breakpoint này, cho phép bạn nhảy vào Visual Studio. Sau đó bạn có thể gỡ lỗi từ đó cho đến khi bạn phát hiện ra nơi ngoại lệ xảy ra.

0

Chỉ cần đoán: Tệp .exe của bạn có nằm trong thư mục mạng không? Hoặc là được đánh dấu là "tải xuống từ Internet"? Bởi vì, trong trường hợp đó, Khuôn khổ .NET sẽ gán ít quyền hơn cho nó so với khi nó trực tiếp trên ổ đĩa cục bộ và không được đánh dấu là đã tải xuống từ internet.

+1

Exe thực sự được cài đặt trên máy tính. Tôi đã tạo trình cài đặt như được mô tả trong trang Microsoft gốc. – sbenderli

+0

theo như tôi biết trình cài đặt không ngăn bạn cài đặt dịch vụ vào một thư mục trên mạng chia sẻ. Có lẽ điều đó đã thay đổi vào năm 2008, tôi không có chuyên môn năm 2008 ở đây, chỉ có năm 2008 express (không thể xây dựng các dự án thiết lập) và năm 2005 prof. – mihi

+0

Tôi đã kiểm tra kỹ và cài đặt là cục bộ chứ không phải trong thư mục mạng. – sbenderli

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