2010-07-19 11 views
5

Mam usługę Windows, która jest zainstalowana do C: \ Windows \ System32. Ma zwykły plik .config, w którym przechowywane są niektóre ustawienia aplikacji. Mam inną aplikację, która zapisuje niektóre wartości do tej konfiguracji. Kiedy uruchomić tę aplikację zgłasza wyjątek w tej liniiexePath jest niepoprawnym wyjątkiem w ConfigurationManager.OpenExeConfiguration

var config = ConfigurationManager.OpenExeConfiguration(serviceExePath);

Wyjątkiem mówi: Wystąpił błąd podczas ładowania pliku konfiguracji: Parametr „exePath” jest nieprawidłowy. Nazwa parametru: exePath

Po umieszczeniu usługi Windows w innym folderze wszystko jest w porządku! Czy to z powodu pewnych zasad naruszenia dostępu czy czegoś takiego? Czy istnieje sposób, aby użyć folderu System32 dla mojej usługi i otworzyć jego konfigurację?

OS: Windows 7 x64

+0

można wyjaśnić, dlaczego jesteś wprowadzenie to w systemie32? Zwykle umieścisz go w podreirze Program Files lub podobnym, więc wyjaśnienie celu korzystania z System32 może pomóc w uzyskaniu rekomendacji dla lepszej lokalizacji. –

Odpowiedz

6

jest złym wyborem dla lokalizacji pliku. Ten katalog należy do systemu Windows, nie nadaje się do własnych aplikacji. Po pierwsze, będziesz potrzebować uprawnień administratora, aby otwierać pliki w tym katalogu. Nie otrzymasz tego bez manifestu, który wyzwoli monit UAC.

Po drugie, ten katalog jest zwirtualizowany w wersji x64 systemu Windows. Aplikacja 32-bitowa próbująca uzyskać dostęp do plików zostanie przekierowana do c: \ windows \ syswow64.

Mogłem być dokładniejszy, jeśli opublikowałeś ślad stosu. Ale po prostu tego nie rób.

6

Należy pamiętać, że pomimo nazwy parametru będącego "exePath", należy podać nazwę pliku .config, więc może być konieczne dodanie ".config" na podstawie zawartości folderu serviceExePath.

http://msdn.microsoft.com/en-us/library/ms224437.aspx

exePath

Typ: System.String

ścieżka pliku konfiguracyjnego. Plik konfiguracyjny znajduje się w tym samym katalogu, co plik wykonywalny.

Jak się stoi, mam wrażenie, że próbuje załadować rzeczywistego .exe jako plik konfiguracyjny, który z pewnością wyjaśnia, dlaczego uważa je za nieważne :)

+1

Od .NET 3.5 i wyżej, komentarz do 'exePath' w linku provided to "Ścieżka pliku wykonywalnego (exe)." Sądzę, że udało im się znaleźć wystarczająco inteligentny plik .config. – Zack

+0

@Zack ładny, dobry połów. –

Powiązane problemy