2010-02-18 25 views
6

Sử dụng C# WMI Tôi bắt đầu một exe trên máy tính khác và exe này bắt đầu một exe bằng cách sử dụng lớp C# Process. Cuối cùng exe cố gắng gọi Directory.CreateDirectory sử dụng đường dẫn mạng (aka \\\\comp1\d$\dir\). Directory.CreateDirectory ném ngoại lệ này:C# WMI chạy một exe trên một máy tính từ xa mà sau đó chạy một exe trên cùng một máy tính mà sau đó gọi Directory.CreateDirectory trên một đường dẫn mạng và không thành công

Access to the path '\\\\blah\blah\blah' is denied. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, DirectorySecurity dirSecurity) 
    at System.IO.Directory.CreateDirectory(String path, DirectorySecurity directorySecurity) 

Nếu tôi chạy exe thứ ba trực tiếp vào một giao diện điều khiển trên máy tính nó tồn tại trên ngoại lệ này không được ném ra và tất cả mọi thứ hoạt động tốt.

Cài đặt bảo mật cho thư mục nơi thư mục đang được tạo có "Mọi người" được cấp toàn quyền.

Làm cách nào để khắc phục sự cố này?

+2

Bạn có chắc chắn rằng cài đặt bảo mật của thư mục mạng chia sẻ cho phép bạn đọc/ghi các đặc quyền không? – Aaron

+0

Theo như tôi có thể nói .. – jestro

+0

bất kỳ giải pháp về nó? – Kiquenet

Trả lời

1

Như Aaron cho biết, cửa sổ an ninh phần có hai thành phần thứ nhất là sự an toàn của các Chia sẻ riêng của mình. Thứ hai là bảo mật trên các tập tin và thư mục trong phần chia sẻ đó.

Cả hai đều phải cho phép truy cập thư mục tạo để hoạt động này hoạt động.

Bạn cũng nên biết rằng nhóm EVERYONE bao gồm tài khoản máy tính miền, tài khoản hệ thống tích hợp, người dùng miền, khách và người dùng được xác thực.

Điều này có nghĩa là điều đầu tiên bạn muốn làm là xem người dùng nào thực sự đang chạy dưới. Nếu nó đang chạy dưới tài khoản máy và nó không phải là một phần của một miền thì bạn sẽ cần phải cung cấp cho tài khoản máy đó truy cập vào hệ thống chia sẻ và tệp.

2

Cũng lưu ý rằng khi khởi chạy ứng dụng qua WMI, có một lớp quyền thứ ba. Ví dụ, nếu bạn gọi một phương thức trên một đối tượng WMI hiện có, nó có thể không ủy quyền các quyền của người gọi, hoặc thậm chí các quyền của exe chủ, nhưng sẽ có một Hiệu trưởng trống. Điều này có thể xảy ra với bạn.

Đi tới Quản lý máy tính và trong Dịch vụ và ứng dụng, nhấp chuột phải vào nút Điều khiển WMI và chọn Thuộc tính. Đi đến Tab bảo mật, và sau đó điều hướng đến đúng không gian tên WMI (rất có thể là root \ CIMV2) và đảm bảo rằng người dùng bạn đang sử dụng có các quyền thích hợp ở đó.

+0

Nếu tôi thêm tất cả mọi người vào thư mục gốc \ CIMV2 và cấp cho nó toàn quyền, điều đó có thể thực hiện được không? – jestro

+1

Có thể. Tôi không chắc chắn những gì đang xảy ra ở đây. Tôi chỉ muốn bạn biết rằng khi bạn đang thực hiện một hành động được khởi chạy qua WMI, bạn thực sự có một nhóm quyền thứ ba để xử lý. – Nick

+0

Phải, cảm ơn những người đứng đầu. Đó là một tình huống đau đớn cho chắc chắn. – jestro

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