2011-11-17 23 views
5

Tôi đã có mã sử dụng đối tượng C# TaskManager để tạo một tác vụ. Trên Windows 7 nó hoạt động tốt nhưng trên Windows XP (và có lẽ là Windows khác) nó không hoạt động chút nào vì người dùng mặc định cho nhiệm vụ là hệ thống và do đó không có phiên nào cho GUI được hiển thị. Nếu tôi sửa đổi tác vụ được tạo theo cách thủ công trong tiện ích bảng điều khiển để đặt công việc chỉ chạy khi người dùng đăng nhập và chỉ cho người dùng cụ thể, thì mọi thứ hoạt động hoàn hảo. Nhưng mặc dù giờ tìm kiếm, tôi thấy không có tùy chọn để thiết lập các tùy chọn này trong các đối tượng C#. Bất cứ ai biết một giải pháp với các đối tượng hiện có? Tôi ghét phải viết lại tất cả mọi thứ để tự chạy EXE lên lịch và truyền tải thông tin bằng dòng lệnh.Làm cách nào để đặt "chỉ chạy nếu đã đăng nhập" và "chạy dưới dạng" với TaskScheduler trong C#?

Q

+1

Giao diện lập lịch tác vụ dựa trên COM, bạn sẽ cần IScheduledWorkItem :: SetFlags() chẳng hạn. Không có "đối tượng C# TaskManager". Có lẽ bạn nên đăng một liên kết đến mã bạn tìm thấy ở đâu đó? –

+0

Cảm ơn! Cuối cùng tôi đã tự mình khám phá ra nó, nhưng tất nhiên bạn đã đúng về việc tôi đã sử dụng trình bao bọc của bên thứ ba, tôi đã không nhận ra điều đó! Tôi đã đăng giải pháp. –

+0

@QuinxyvonBesiex Bạn nên thêm câu trả lời của bạn dưới đây và sau đó sau khi lượng thời gian yêu cầu, hãy chọn nó làm câu trả lời - giữ mọi thứ sạch sẽ – Prescott

Trả lời

4

OK, tôi đã tìm ra câu trả lời!

Tôi không nhận ra nhưng tôi đã sử dụng một bên thứ ba Task Scheduler Managed Wrapper (đã lâu rồi tôi viết một phần mã của tôi) và điều đó giải thích tại sao sự giúp đỡ khó tìm! Tôi tình cờ gặp trang đó một lúc trước và ngay tại đó trong các ví dụ của họ chỉ là những gì tôi cần! detailed solution in context can be found here, nhưng phần quan trọng là:

// Create a new task definition and assign properties 
TaskDefinition td = ts.NewTask(); 
td.Principal.UserId = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
td.Principal.LogonType = TaskLogonType.InteractiveToken; 

Cảm ơn bạn đã cố giúp đỡ!

+0

Có nhiều điều hơn là chỉ thiết lập loại Đăng nhập trong một số trường hợp. Nếu câu trả lời này một mình không nhận được mã của bạn làm việc, hãy xem câu hỏi này: http: //stackoverflow.com/questions/43599271/how-to-set-run-only-if-logged-in-and-run-as- với-taskcheduler-in-c/43767201 # 43767201 – MadTigger

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