2011-11-29 24 views
14

Mam app konsoli w C#, który uruchamia się w czasach schuled przez program do planowania zadań systemu Windows. Aplikacja wymaga pewnych fizycznych plików z własnego katalogu i używa do tego System.IO.Directory.GetCurrentDirectory().Jak uzyskać folder aplikacji, gdy program jest uruchamiany przez Harmonogram zadań systemu Windows

Normalnie, gdy sama uruchamiam aplikację konsolową, działa idealnie. Ale kiedy jest uruchamiany przez Windows Task Scheduler, zwraca C:\Windows\System32.

Dlaczego to nie jest katalog aplikacji i czy istnieje inny sposób uzyskania katalogu aplikacji?

Odpowiedz

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

System.IO.Directory.GetCurrentDirectory() powróci bieżącego katalogu procesu wykonującego, który nie jest aplikacja w tej instancji. Powyższe będzie wystarczające w pobieraniu katalogu wykonawczego, w którym działa twój plik wykonywalny.

+0

na drugim myśli jest odpowiedź lepiej, ponieważ dają mi katalog, i to jest to co ja Zapytany o. Rest daje mi ścieżki do pliku zespołu –

+0

@Erik: Czy potrzebujesz tylko nazwy katalogu lub pełnej ścieżki? – abatishchev

+0

@abatishchev: Cóż, ostatnia linia mojego pytania brzmiała: "w jaki sposób mogę uzyskać katalog aplikacji", potrzebuję pełnej ścieżki do katalogu aplikacji. Twoja odpowiedź jest dobra, ale nie dała mi katalogu, dała mi plik z montażem. –

1

można spróbować, co to zwróci?

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

GetCurrentDirectory zwraca ten katalog, ponieważ gdy program planujący domyślnie uruchamia aplikację. Jeśli chcesz dowiedzieć się katalog, że binarny jest w, można użyć

Assembly.GetExecutingAssembly().Location 

Byłbym też ciekaw, czy masz „Rozpocznij w” Spisie się w zaplanowanym zadaniu - ustawienie, które powinny również ustawić bieżący katalog aplikacji po uruchomieniu.

0

Używam My.Application.Info.DirectoryPath wskazuje na właściwy katalog, co chcesz w harmonogramie zadań Windows.

0

Jest to stary wątek, ale dla kogoś, kto szuka, podczas konfigurowania zadania, można przypisać lokalizację w akcji zadania, ustawiając opcjonalny: Uruchom w "wartość do folderu exe." GetCurrentDirectory będzie działać dobrze potem.

Powiązane problemy