2010-05-07 3 views
7

Tôi đang cố khởi động ứng dụng bảng điều khiển từ Dịch vụ .NET Windows. Dịch vụ đang chạy trên máy chủ Windows 2008.bắt đầu quá trình từ dịch vụ .NET windows

Tôi sử dụng Process.Start để chạy ứng dụng giao diện điều khiển và nó chạy (tôi có thể nhìn thấy nó trong nhiệm vụ mgr), nhưng tôi không bao giờ lấy lại quá trình id và cuộc gọi đến Process.Start chỉ bị treo. Nếu tôi chạy cùng một dịch vụ từ máy tính Windows 7 của mình, quy trình sẽ chạy và tôi sẽ không nhận được quá trình Id.

Tôi đang bối rối ..

+4

Bạn đã đặt UseShellExecute thành false? Bạn đang chuyển hướng đầu ra của nó? –

Trả lời

1

Có thể quá trình bạn đang sinh sản đang cố gắng nhắc cửa sổ cho người dùng nhập liệu? Trong trường hợp này, nó có thể treo ...

Bạn đang bắt đầu quy trình nào? Nó là một phần của nền tảng/hệ điều hành (như cmd.exe) hoặc một cái gì đó tùy chỉnh?

+0

nó là một quá trình tùy chỉnh bắt đầu lắng nghe trên một cổng tcp cụ thể. Nó không lắng nghe nhưng tôi không thể nhận được id quá trình trở lại dịch vụ windows đã bắt đầu nó. –

5

Tôi đã có chính xác cùng một vấn đề này. Đối với tôi, chìa khóa là thiết lập StartInfo.UseShellExecute = false;

0

Sau một thời gian dài tìm kiếm giải pháp cho điều này, tôi đã tìm thấy những viên đá khôn ngoan cho vấn đề của mình.

Tôi đã tạo một chương trình dựa trên WindowsForm mới, với cùng lệnh Process.Start, và sau đó hộp thoại "Windows Warning Security" tiêu chuẩn xuất hiện, và đó là lý do tại sao nó hoạt động hiệu quả.

Sau khi tắt "Kiểm soát truy cập người dùng", Dịch vụ Windows hoạt động chính xác.