Tôi muốn chạy một quy trình từ một máy khách mạng nội bộ ở phía dịch vụ WCF. Trong trường hợp của tôi, một khách hàng yêu cầu một máy chủ tạo một quy trình mới trên máy của máy chủ theo các thông tin được cung cấp. dịch vụ WCF được lưu trữ trên IIS 7.5 và tôi bắt đầu một quá trình sử dụng mã nàyLàm cách nào để bắt đầu quá trình từ dịch vụ WCF được lưu trữ trên IIS?
var processInfo = new ProcessStartInfo("C:\\Windows\\System32\\notepad.exe")
{
UserName = "some user",
Password = MakeSecureString("some password"),
UseShellExecute = false,
LoadUserProfile = true
};
Process process = Process.Start(processInfo);
Mã này hoạt động nếu tôi tổ chức dịch vụ WCF như một ứng dụng giao diện điều khiển tự lưu trữ chạy dưới dùng admin và tôi thấy notepad bắt đầu dưới người dùng khác . Nó không thành công trên IIS không có ngoại lệ, nhưng quá trình được ngay lập tức chấm dứt
process.HasExited = true;
process.ExitCode = -1073741502;
Mở ứng dụng IIS WCF đang chạy theo người sử dụng với quyền quản trị và đã có niềm tin đầy đủ theo quy định tại web.config. Tôi không thể sử dụng ứng dụng tự lưu trữ vì nó không hỗ trợ giao hàng liên tục dễ dàng (như WebDeploy với các trang web IIS).
Q: Làm cách nào để bắt đầu quá trình ở phía máy chủ từ dịch vụ WCF được lưu trữ trên IIS?
EDIT:
tôi stumbled khi post này, với các vấn đề tương tự và tôi đã thử tất cả các phương pháp đó, bao gồm tất cả các biến thể cho Process.Start và P/Invoke với CreateProcessWithLogonW và CreateProcessAsUser Tôi cũng đã cố gắng cấp giấy phép bổ sung cho người dùng. Không phải điều này sẽ làm việc với các thông báo lỗi giống với những thông báo mà anh chàng đã đăng.
bất kỳ giải pháp cuối cùng nào có mẫu mã nguồn đầy đủ? – Kiquenet
Nó không thể không có hack hacks. Tôi đã không làm điều đó. – oleksii
mà hacks bẩn? – Kiquenet