Używając tego:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Otrzymuję ten wynik:
"C:\\Documents and Settings\\[USER]\\Application Data"
Jak mogę uzyskać katalog główny wszystkich użytkowników? to znaczy:
"C:\\Documents and Settings\\[USER]\\"
Odpowiedzi:
Może to będzie dobre rozwiązanie: biorąc pod uwagę czy to Vista / Win7 czy XP i bez użycia zmiennych środowiskowych:
Chociaż użycie zmiennej środowiskowej jest znacznie bardziej przejrzyste.
źródło
Próbować:
Edytować:
Jeśli używana wersja .NET to 4 lub nowsza, możesz użyć
Environment.SpecialFolder
wyliczenia:źródło
Możesz uzyskać ścieżkę UserProfile za pomocą tego:
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
źródło
Również bardzo pomocny podczas badania
Environment.SpecialFolder
enum. Użyj LINQPad lub utwórz rozwiązanie i wykonaj ten kod:Oto wynik na moim komputerze:
(„fisch” to pierwsze 5 liter mojego nazwiska. Jest to nazwa użytkownika przypisywana podczas logowania się za pomocą konta Microsoft).
źródło
Próba przejścia w górę z nazwanego folderu specjalnego jest podatna na problemy. Istnieje wiele powodów, dla których foldery nie będą tam, gdzie ich oczekujesz - użytkownicy mogą je przenosić samodzielnie, GPO może je przenosić, przekierowywanie folderów do ścieżek UNC itp.
Użycie zmiennej środowiskowej dla profilu użytkownika powinno odzwierciedlać każdy z tych możliwych problemów.
źródło
Próbować:
źródło
Majstrowanie przy zmiennych środowiskowych lub zakodowanych na stałe przesunięciami folderu nadrzędnego nigdy nie jest dobrym pomysłem, gdy istnieje interfejs API do pobierania żądanych informacji, wywołaj
SHGetSpecialFolderPath(...,CSIDL_PROFILE,...)
źródło
źródło
możesz użyć następującego kodu:
więcej informacji zobacz: Pobierz bieżącą ścieżkę do katalogu w WinXP i WinCE z C #
źródło