2009-12-16 30 views
10

Tôi đã viết một dịch vụ mà một trang web có thể thực hiện lệnh trên điều khiển từ xa bằng phương thức ExecuteCommand. Tôi đã nhận thấy rằng nếu trang web không chạy dưới một người dùng đó là một quản trị viên trên máy từ xa sau đó tôi nhận được một sự cho phép bị từ chối ngoại lệ về cố gắng thực thi lệnh.quyền đối với bộ điều khiển

Lớp servicecontroller thậm chí không cho phép bạn chỉ định bất kỳ thông số xác thực nào. Thê nay đung không? Có một tập hợp cụ thể của tư nhân người dùng cần chứ không phải là quản trị viên, vì tôi không muốn thêm tất cả người dùng máy chủ web trong cụm của chúng tôi làm quản trị viên cục bộ trên máy dịch vụ?

Trả lời

5

Bạn sẽ phải mạo danh người dùng quản trị cho luồng hiện tại tạm thời sau đó hoàn nguyên trở lại. Tra cứu WindowsIdentity.Impersonate() trong MSDN.

ServiceController sẽ sử dụng nguyên tắc của luồng hiện tại để thực hiện cuộc gọi đăng ký và quản lý kiểm soát dịch vụ và bạn phải đảm bảo nó được đặt thành người dùng quản trị nếu bạn muốn thao tác dịch vụ. Nhược điểm là bạn sẽ cần lưu trữ mật khẩu ở đâu đó cho tài khoản, đảm bảo bạn đang sử dụng SecureString và không lưu trữ mật khẩu ở dạng văn bản thuần túy.

+0

Nếu có thể, tôi khuyên người dùng nên nhập mật khẩu quản trị của họ mỗi lần họ chạy lệnh. Bằng cách đó bạn tránh lưu trữ nó. Tuy nhiên, điều này có thể không khả thi trong trường hợp của bạn. – John

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