[c#] Environment.GetFolderPath (… CommonApplicationData)가 Vista에서 여전히 “C : \ Documents and Settings \”를 반환합니다.

내가 이해했듯이, 당신은 Environment.GetFolderPathOS 독립적 인 코드를 가지도록이 방법 을 사용해야한다 .

Windows XP는 C:\Documents and Settings\. Windows Vista는 C:\ProgramDataC:\Users.

Windows Vista 컴퓨터에서 아래 코드를 사용하고 있는데 C:\Documents and Settings\디렉토리가 아닌 대신 반환됩니다. C:\ProgramData아이디어가 있습니까?

    string commonAppData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
    try
    {
        File.CreateText(
            Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) +
            "\\mycompany\\uid");
        log.Debug("Created file successfully");
    }
    catch (Exception ex)
    {
        log.Error("Unable to create the uid file: ", ex);
    }



답변

내 설치 프로그램은 XP 컴퓨터에서 생성 된 log.txt 파일을 복사했습니다. 나는 그것이 Vista에서 생성되었다고 생각하는 로그 파일을보고 있었다. 내 log4net 구성을 “Vista 호환”으로 수정했습니다. Environment.GetFolderPath가 예상 한 결과를 반환했습니다. 따라서이 게시물을 닫겠습니다.

다음 SpecialFolder 경로 참조가 유용 할 수 있습니다.

Windows Server 2003의 출력 :

SpecialFolder.ApplicationData : C : \ Documents and Settings \ blake \ Application Data
SpecialFolder.CommonApplicationData : C : \ Documents and Settings \ All Users \ Application Data
SpecialFolder.ProgramFiles : C : \ Program Files
SpecialFolder.CommonProgramFiles : C : \ Program Files \ Common Files
SpecialFolder.DesktopDirectory : C : \ Documents and Settings \ blake \ Desktop
SpecialFolder.LocalApplicationData : C : \ Documents and Settings \ blake \ Local Settings \ Application Data
SpecialFolder.MyDocuments : C : \ Documents and Settings \ blake \ My Documents
SpecialFolder.System : C : \ WINDOWS \ system32`

Vista에서의 출력 :

SpecialFolder.ApplicationData : C : \ Users \ blake \ AppData \ Roaming
SpecialFolder.CommonApplicationData : C : \ ProgramData
SpecialFolder.ProgramFiles : C : \ Program Files
SpecialFolder.CommonProgramFiles : C : \ Program Files \ Common Files
SpecialFolder.DesktopDirectory : C : \ Users \ blake \ Desktop
SpecialFolder.LocalApplicationData : C : \ Users \ blake \ AppData \ Local
SpecialFolder.MyDocuments : C : \ Users \ blake \ Documents
SpecialFolder.System : C : \ Windows \ system32


답변

Ubuntu 9.10-> Ubuntu 12.04 (mono 2.10.8.1 포함)에서 출력 :

SpecialFolder.ApplicationData: /home/$USER/.config
SpecialFolder.CommonApplicationData: /usr/share
SpecialFolder.ProgramFiles:
SpecialFolder.DesktopDirectory: /home/$USER/Desktop
SpecialFolder.LocalApplicationData: /home/$USER/.local/share
SpecialFolder.MyDocuments: /home/$USER
SpecialFolder.System:

SpecialFolder.Personal: /home/$USER

모노 4.2.1이있는 Ubuntu 16.04의 출력

SpecialFolder.ApplicationData: /home/$USER/.config
SpecialFolder.CommonApplicationData: /usr/share
SpecialFolder.ProgramFiles:
SpecialFolder.DesktopDirectory: /home/$USER/Desktop
SpecialFolder.LocalApplicationData: /home/$USER/.local/share
SpecialFolder.MyDocuments: /home/$USER
SpecialFolder.Desktop: /home/$USER/Desktop
SpecialFolder.Personal: /home/$USER

SpecialFolder.System:
SpecialFolder.Programs:
SpecialFolder.Favorites:
SpecialFolder.Startup:
SpecialFolder.Recent:
SpecialFolder.SendTo:
SpecialFolder.StartMenu:
SpecialFolder.MyMusic: /home/$USER/Music
SpecialFolder.MyVideos: /home/$USER/Videos
SpecialFolder.MyComputer:
SpecialFolder.NetworkShortcuts:
SpecialFolder.Fonts: /home/$USER/.fonts
SpecialFolder.Templates: /home/$USER/Templates
SpecialFolder.CommonStartMenu:
SpecialFolder.CommonPrograms:
SpecialFolder.CommonStartup:
SpecialFolder.CommonDesktopDirectory:
SpecialFolder.PrinterShortcuts:
SpecialFolder.InternetCache:
SpecialFolder.Cookies:
SpecialFolder.History:
SpecialFolder.Windows:
SpecialFolder.MyPictures: /home/$USER/Pictures
SpecialFolder.UserProfile: /home/$USER
SpecialFolder.SystemX86:
SpecialFolder.ProgramFilesX86:
SpecialFolder.CommonProgramFiles:
SpecialFolder.CommonProgramFilesX86:
SpecialFolder.CommonTemplates: /usr/share/templates
SpecialFolder.CommonDocuments:
SpecialFolder.CommonAdminTools:
SpecialFolder.AdminTools:
SpecialFolder.CommonMusic:
SpecialFolder.CommonPictures:
SpecialFolder.CommonVideos:
SpecialFolder.Resources:
SpecialFolder.LocalizedResources:
SpecialFolder.CommonOemLinks:
SpecialFolder.CDBurning:

여기서 $ USER는 현재 사용자입니다.

dotnet 코어 (3.0.100)를 사용하는 Ubuntu 16.04의 출력

ApplicationData: /home/$USER/.config
CommonApplicationData: /usr/share
ProgramFiles:
DesktopDirectory: /home/$USER/Desktop
LocalApplicationData: /home/$USER/.local/share
MyDocuments: /home/$USER
System:
Personal: /home/$USER

Xamarin 7.2를 사용하여 Android 6에서 출력

Environment.SpecialFolder.ApplicationData: /data/user/0/$APPNAME/files/.config
Environment.SpecialFolder.CommonApplicationData: /usr/share
Environment.SpecialFolder.ProgramFiles:
Environment.SpecialFolder.DesktopDirectory: /data/user/0/$APPNAME/files/Desktop
Environment.SpecialFolder.LocalApplicationData: /data/user/0/$APPNAME/files/.local/share
Environment.SpecialFolder.MyDocuments: /data/user/0/$APPNAME/files
Environment.SpecialFolder.Desktop: /data/user/0/$APPNAME/files/Desktop
Environment.SpecialFolder.Personal: /data/user/0/$APPNAME/files

Environment.SpecialFolder.Startup:
Environment.SpecialFolder.Recent:
Environment.SpecialFolder.SendTo:
Environment.SpecialFolder.StartMenu:
Environment.SpecialFolder.MyMusic: /data/user/0/$APPNAME/files/Music
Environment.SpecialFolder.MyVideos: /data/user/0/$APPNAME/files/Videos
Environment.SpecialFolder.MyComputer:
Environment.SpecialFolder.NetworkShortcuts:
Environment.SpecialFolder.Fonts: /data/user/0/$APPNAME/files/.fonts
Environment.SpecialFolder.Templates: /data/user/0/$APPNAME/files/Templates
Environment.SpecialFolder.CommonStartMenu:
Environment.SpecialFolder.CommonPrograms:
Environment.SpecialFolder.CommonStartup:
Environment.SpecialFolder.CommonDesktopDirectory:
Environment.SpecialFolder.PrinterShortcuts:
Environment.SpecialFolder.InternetCache:
Environment.SpecialFolder.Cookies:
Environment.SpecialFolder.History:
Environment.SpecialFolder.Windows:
Environment.SpecialFolder.MyPictures: /data/user/0/$APPNAME/files/Pictures
Environment.SpecialFolder.UserProfile: /data/user/0/$APPNAME/files
Environment.SpecialFolder.SystemX86:
Environment.SpecialFolder.ProgramFilesX86:
Environment.SpecialFolder.CommonProgramFiles:
Environment.SpecialFolder.CommonProgramFilesX86:
Environment.SpecialFolder.CommonTemplates: /usr/share/templates
Environment.SpecialFolder.CommonDocuments:
Environment.SpecialFolder.CommonAdminTools:
Environment.SpecialFolder.AdminTools:
Environment.SpecialFolder.CommonMusic:
Environment.SpecialFolder.CommonPictures:
Environment.SpecialFolder.CommonVideos:
Environment.SpecialFolder.Resources:
Environment.SpecialFolder.LocalizedResources:
Environment.SpecialFolder.CommonOemLinks:
Environment.SpecialFolder.CDBurning:

$ APPNAME은 Xamarin 애플리케이션의 이름입니다 (예 : MyApp.Droid).

Xamarin 7.2를 사용하는 iOS Simulator 10.3의 출력

ApplicationData: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/.config
CommonApplicationData: /usr/share
ProgramFiles: /Applications
DesktopDirectory: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/Desktop
LocalApplicationData: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents
MyDocuments: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents
Desktop: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/Desktop
MyDocuments: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents
Startup:
Recent:
SendTo:
StartMenu:
MyMusic: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/Music
MyVideos: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/Videos
MyComputer:
NetworkShortcuts:
Fonts: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/.fonts
Templates: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/Templates
CommonStartMenu:
CommonPrograms:
CommonStartup:
CommonDesktopDirectory:
PrinterShortcuts:
InternetCache: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Library/Caches
Cookies:
History:
Windows:
MyPictures: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/Pictures
UserProfile: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID
SystemX86:
ProgramFilesX86:
CommonProgramFiles:
CommonProgramFilesX86:
CommonTemplates: /usr/share/templates
CommonDocuments:
CommonAdminTools:
AdminTools:
CommonMusic:
CommonPictures:
CommonVideos:
Resources: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Library
LocalizedResources:
CommonOemLinks:
CDBurning:

$ DEVICEGUID는 시뮬레이터 GUID (선택한 시뮬레이터에 따라 다름)

Xamarin 7.2를 사용하는 iPad 10.3의 출력

SpecialFolder.MyDocuments: /var/mobile/Containers/Data/Application/$APPLICATIONGUID/Documents

Xamarin 16.4를 사용하는 iPad 13.3의 출력

SpecialFolder.MyDocuments: /var/mobile/Containers/Data/Application/$APPLICATIONGUID/Documents
SpecialFolder.UserProfile: /private/var/mobile/Containers/Data/Application/$APPLICATIONGUID/Documents

.net core 3.1을 사용하는 Windows 10의 출력

SpecialFolder.MyDocuments: C:\Users\$USER\Documents

.net core 3.1을 사용하는 Ubuntu 18.04의 출력

SpecialFolder.MyDocuments: /home/$USER

.net core 3.1을 사용하는 MacOS Catalina에서 출력

SpecialFolder.MyDocuments: /Users/$USER


답변

Windows 10의 출력

Fonts: C:\Windows\Fonts
CommonStartMenu: C:\ProgramData\Microsoft\Windows\Start Menu
CommonPrograms: C:\ProgramData\Microsoft\Windows\Start Menu\Programs
CommonStartup: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
CommonDesktopDirectory: C:\Users\Public\Desktop
CommonApplicationData: C:\ProgramData
Windows: C:\Windows
System: C:\Windows\system32
ProgramFiles: C:\Program Files (x86)
SystemX86: C:\Windows\SysWOW64
ProgramFilesX86: C:\Program Files (x86)
CommonProgramFiles: C:\Program Files (x86)\Common Files
CommonProgramFilesX86: C:\Program Files (x86)\Common Files
CommonTemplates: C:\ProgramData\Microsoft\Windows\Templates
CommonDocuments: C:\Users\Public\Documents
CommonAdminTools: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
CommonMusic: C:\Users\Public\Music
CommonPictures: C:\Users\Public\Pictures
CommonVideos: C:\Users\Public\Videos
Resources: C:\Windows\resources
LocalizedResources:
CommonOemLinks:

직접 로그하려는 경우 코드 조각

foreach(Environment.SpecialFolder f in Enum.GetValues(typeof(Environment.SpecialFolder)))
{
    string commonAppData = Environment.GetFolderPath(f);
    Console.WriteLine("{0}: {1}", f, commonAppData);
}
Console.ReadLine();


답변

Windows 7 (64 비트)의 출력

SpecialFolder.CommonApplicationData: C:\ProgramData
SpecialFolder.CommonDesktopDirectory: C:\Users\Public\Desktop
SpecialFolder.CommonStartMenu: C:\ProgramData\Microsoft\Windows\Start Menu
SpecialFolder.CommonPrograms: C:\ProgramData\Microsoft\Windows\Start Menu\Programs
SpecialFolder.CommonProgramFiles: C:\Program Files\Common Files
SpecialFolder.CommonProgramFilesX86: C:\Program Files (x86)\Common Files
SpecialFolder.CommonStartup: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
SpecialFolder.ProgramFiles: C:\Program Files
SpecialFolder.ProgramFilesX86: C:\Program Files (x86)
SpecialFolder.System: C:\Windows\system32
SpecialFolder.SystemX86: C:\Windows\SysWOW64

Windows XP에서 출력

SpecialFolder.CommonApplicationData: C:\Documents and Settings\All Users\Application Data
SpecialFolder.CommonDesktopDirectory: C:\Documents and Settings\All Users\Desktop
SpecialFolder.CommonPrograms: C:\Documents and Settings\All Users\Start Menu\Programs
SpecialFolder.CommonProgramFiles: C:\Program Files\Common Files
SpecialFolder.CommonProgramFilesX86:
SpecialFolder.CommonStartMenu: C:\Documents and Settings\All Users\Start Menu
SpecialFolder.CommonStartup: C:\Documents and Settings\All Users\Start Menu\Programs\Startup
SpecialFolder.ProgramFiles: C:\Program Files
SpecialFolder.ProgramFilesX86:
SpecialFolder.System: C:\WINDOWS\system32
SpecialFolder.SystemX86: C:\WINDOWS\system32


답변

macOS 목록을 찾고 있었지만 아무것도 찾지 못했습니다. 누군가에게 도움이 될 수 있습니다.

net5.0을 사용하는 macOS Catalina (10.15.7)에서 출력

# SpecialFolders (Only with value)
SpecialFolder.ApplicationData: /Users/$USER/.config
SpecialFolder.CommonApplicationData: /usr/share
SpecialFolder.Desktop: /Users/$USER/Desktop
SpecialFolder.DesktopDirectory: /Users/$USER/Desktop
SpecialFolder.Favorites: /Users/$USER/Library/Favorites
SpecialFolder.Fonts: /Users/$USER/Library/Fonts
SpecialFolder.InternetCache: /Users/$USER/Library/Caches
SpecialFolder.LocalApplicationData: /Users/$USER/.local/share
SpecialFolder.MyDocuments: /Users/$USER
SpecialFolder.MyMusic: /Users/$USER/Music
SpecialFolder.MyPictures: /Users/$USER/Pictures
SpecialFolder.ProgramFiles: /Applications
SpecialFolder.System: /System
SpecialFolder.UserProfile: /Users/$USER

# SpecialFolders (All)
SpecialFolder.AdminTools:
SpecialFolder.ApplicationData: /Users/$USER/.config
SpecialFolder.CDBurning:
SpecialFolder.CommonAdminTools:
SpecialFolder.CommonApplicationData: /usr/share
SpecialFolder.CommonDesktopDirectory:
SpecialFolder.CommonDocuments:
SpecialFolder.CommonMusic:
SpecialFolder.CommonOemLinks:
SpecialFolder.CommonPictures:
SpecialFolder.CommonProgramFiles:
SpecialFolder.CommonProgramFilesX86:
SpecialFolder.CommonPrograms:
SpecialFolder.CommonStartMenu:
SpecialFolder.CommonStartup:
SpecialFolder.CommonTemplates:
SpecialFolder.CommonVideos:
SpecialFolder.Cookies:
SpecialFolder.Desktop: /Users/$USER/Desktop
SpecialFolder.DesktopDirectory: /Users/$USER/Desktop
SpecialFolder.Favorites: /Users/$USER/Library/Favorites
SpecialFolder.Fonts: /Users/$USER/Library/Fonts
SpecialFolder.History:
SpecialFolder.InternetCache: /Users/$USER/Library/Caches
SpecialFolder.LocalApplicationData: /Users/$USER/.local/share
SpecialFolder.LocalizedResources:
SpecialFolder.MyComputer:
SpecialFolder.MyDocuments: /Users/$USER
SpecialFolder.MyMusic: /Users/$USER/Music
SpecialFolder.MyPictures: /Users/$USER/Pictures
SpecialFolder.MyVideos:
SpecialFolder.NetworkShortcuts:
SpecialFolder.PrinterShortcuts:
SpecialFolder.ProgramFiles: /Applications
SpecialFolder.ProgramFilesX86:
SpecialFolder.Programs:
SpecialFolder.Recent:
SpecialFolder.Resources:
SpecialFolder.SendTo:
SpecialFolder.StartMenu:
SpecialFolder.Startup:
SpecialFolder.System: /System
SpecialFolder.SystemX86:
SpecialFolder.Templates:
SpecialFolder.UserProfile: /Users/$USER
SpecialFolder.Windows:

내 사용자 이름을 $ USER로 바 꾸었습니다.

pogosama의 코드 스 니펫 .

foreach(Environment.SpecialFolder f in Enum.GetValues(typeof(Environment.SpecialFolder)))
{
    string commonAppData = Environment.GetFolderPath(f);
    Console.WriteLine("{0}: {1}", f, commonAppData);
}
Console.ReadLine();


답변