Tôi có một exe C# cần chạy bằng WMI và truy cập một mạng chia sẻ. Tuy nhiên, khi tôi truy cập vào phần chia sẻ, tôi nhận được một UnauthorizedAccessException. Nếu tôi chạy exe trực tiếp chia sẻ có thể truy cập. Tôi đang sử dụng cùng một tài khoản người dùng trong cả hai trường hợp.Xác thực mạng khi chạy exe từ WMI
Có hai phần trong ứng dụng của tôi, một trình khách GUI chạy trên máy tính cục bộ và một quy trình phụ trợ chạy trên máy tính từ xa. Khi máy khách cần kết nối với backend, đầu tiên nó khởi chạy quá trình từ xa bằng WMI (mã được sao chép dưới đây). Quá trình từ xa thực hiện một số thứ bao gồm việc truy cập một mạng chia sẻ bằng cách sử dụng Directory.GetDirectories() và báo cáo lại cho máy khách.
Khi quá trình từ xa được khởi chạy tự động bởi ứng dụng khách bằng WMI, nó không thể truy cập vào mạng chia sẻ. Tuy nhiên, nếu tôi kết nối với máy từ xa bằng Remote Desktop và khởi động thủ công quá trình phụ trợ, truy cập vào mạng chia sẻ thành công.
Người dùng được chỉ định trong cuộc gọi WMI và người dùng đã đăng nhập cho phiên Máy tính từ xa giống nhau, vì vậy quyền sẽ giống nhau, phải không?
Tôi thấy trong mục MSDN cho Directory.Exists() nó nói "Phương thức tồn tại không thực hiện xác thực mạng. Nếu bạn truy vấn chia sẻ mạng hiện có mà không được xác thực trước, phương thức Exists sẽ trả về false". Tôi cho rằng điều này có liên quan? Làm cách nào để đảm bảo người dùng được xác thực chính xác trong phiên WMI?
ConnectionOptions opts = new ConnectionOptions();
opts.Username = username;
opts.Password = password;
ManagementPath path = new ManagementPath(string.Format("\\\\{0}\\root\\cimv2:Win32_Process", remoteHost));
ManagementScope scope = new ManagementScope(path, opts);
scope.Connect();
ObjectGetOptions getOpts = new ObjectGetOptions();
using (ManagementClass mngClass = new ManagementClass(scope, path, getOpts))
{
ManagementBaseObject inParams = mngClass.GetMethodParameters("Create");
inParams["CommandLine"] = commandLine;
ManagementBaseObject outParams = mngClass.InvokeMethod("Create", inParams, null);
}
vấn đề tương tự http://stackoverflow.com/questions/2291921/c-wmi-runs-an-exe-on-a-remote-computer-that-then-runs-another-exe-on-the- same-co/2291991 # 2291991 – lsalamon
Cảm ơn, tìm kiếm của tôi đã không hiển thị điều đó. Tôi sẽ đọc và xem nó có giúp ích gì không. – Andy
Tôi đã thêm người dùng và được cấp đầy đủ, nhưng nó không tạo ra bất kỳ sự khác biệt nào: ( – Andy