2011-11-29 31 views
14

Tôi có một ứng dụng bàn điều khiển trong C# thats bắt đầu vào thời gian được lên lịch bởi bộ lập lịch tác vụ Windows. Ứng dụng cần một số tệp vật lý từ thư mục riêng của nó và sử dụng System.IO.Directory.GetCurrentDirectory() cho điều đó.Cách lấy thư mục ứng dụng khi chương trình được khởi động bởi Windows Task Scheduler

Bình thường khi tôi tự khởi động ứng dụng bảng điều khiển, nó hoạt động hoàn hảo. Nhưng khi nó được khởi động bởi Windows Task Scheduler, nó trả về C:\Windows\System32.

Tại sao đây không phải là thư mục ứng dụng và có cách nào khác để tôi có thể nhận được thư mục ứng dụng không?

Trả lời

23
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

System.IO.Directory.GetCurrentDirectory() sẽ trở lại thư mục hiện hành của quá trình thực hiện mà không phải là ứng dụng của bạn trong trường hợp này. Ở trên sẽ đủ để nhận được thư mục thực thi mà tệp thực thi của bạn đang chạy.

+0

Ngày nghĩ thứ hai là câu trả lời của bạn tốt hơn, kể từ khi bạn đưa cho tôi thư mục, và đó là những gì tôi Phần còn lại cho tôi đường dẫn đến tệp lắp ráp –

+0

@Erik: Bạn chỉ cần tên thư mục hoặc đường dẫn đầy đủ? – abatishchev

+0

@abatishchev: Dòng cuối cùng trong câu hỏi của tôi là: "cách tôi có thể lấy thư mục ứng dụng", tôi cần đường dẫn đầy đủ đến thư mục ứng dụng. Câu trả lời của bạn là tốt, nhưng nó không cho tôi thư mục, nó cho tôi tập tin lắp ráp. –

1

Bạn có thể thử cách này trả về không?

System.IO.Path.GetDirectoryName(Application.ExecutablePath) 
4

GetCurrentDirectory trả về thư mục đó vì khi trình lên lịch khởi động ứng dụng theo mặc định. Nếu bạn muốn biết những thư mục đó nhị phân của bạn là, bạn có thể sử dụng

Assembly.GetExecutingAssembly().Location 

Tôi cũng sẽ tò mò muốn biết nếu bạn có một "Start Trong" thư mục cài đặt trong nhiệm vụ theo lịch trình của bạn - thiết lập đó cũng nên đặt thư mục hiện tại của ứng dụng khi nó bắt đầu.

0

Tôi sử dụng My.Application.Info.DirectoryPath trỏ đến đúng thư mục bạn muốn trong bộ lập lịch tác vụ Windows.

0

Chủ đề cũ của nó, nhưng đối với người đang tìm kiếm, trong khi thiết lập tác vụ, bạn có thể gán vị trí trong Hành động của tác vụ, bằng cách đặt tùy chọn: Bắt đầu "giá trị vào thư mục exe của bạn. GetCurrentDirectory sẽ hoạt động tốt sau đó.

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