2011-11-29 56 views
14

我在c#中有一個控制檯應用程序,由Windows任務計劃程序在schuled時間啓動。 該應用程序需要來自其自己的目錄的一些物理文件,並使用System.IO.Directory.GetCurrentDirectory()如何在Windows任務計劃程序啓動程序時獲取應用程序文件夾

正常,當我自己啓動控制檯應用程序時,它完美地工作。但是,當它由Windows任務計劃程序啓動時,它將返回C:\Windows\System32

爲什麼這不是應用程序目錄,並有另一種方式我可以得到應用程序目錄?

回答

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

System.IO.Directory.GetCurrentDirectory()將返回執行過程中這是不是在這種情況下應用程序的當前目錄。以上就足夠了,讓你的執行目錄運行在執行目錄中。

+0

關於第二個想法是你的答案比較好,因爲你給我的目錄,多數民衆贊成我問:休息給了我路徑到裝配文件 –

+0

@Erik:你需要目錄名稱還是完整路徑? – abatishchev

+0

@abatishchev:我的問題的最後一行是:「我如何獲得應用程序目錄」,我需要應用程序目錄的完整路徑。你的回答很好,但它沒有給我目錄,它給了我程序集文件。 –

1

你可以嘗試一下這個返回?

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

GetCurrentDirectory返回該目錄,因爲當調度程序默認啓動應用程序時。如果你想知道你的二進制文件所在的目錄,你可以使用

Assembly.GetExecutingAssembly().Location 

我也很好奇,想知道你是否有一個「啓動」目錄設置在計劃任務 - 設置,還應該設置應用程序啓動時的當前目錄。

0

我用My.Application.Info.DirectoryPath是指向正確的目錄,你想在Windows任務調度程序中做什麼。

0

它是一個古老的線程,但對於有人在設置任務時查看,您可以通過設置可選項在任務的操作中分配位置:開始於「您的exe文件夾的值。GetCurrentDirectory將正常工作那麼,如果你想使用相對於安裝目錄中的文件

相關問題