Environment.GetFolderPath(… CommonApplicationData)仍然返回Vista上的“C:\ Documents and Settings \”

据我了解,你应该使用Environment.GetFolderPath方法,所以你有独立于操作系统的代码…

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上生成的。 一旦我将我的log4netconfiguration固定为“Vista兼容”。 Environment.GetFolderPath正在返回预期的结果。 因此,我正在closures这个post。

以下SpecialFolderpath引用可能是有用的:

输出在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上输出 – >使用单声道2.10.8.1的Ubuntu 12.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.System: SpecialFolder.Personal: /home/$USER 

输出在Ubuntu 16.04与单声道4.2.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.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是当前用户

在Android 6上使用Xamarin 7.2输出

 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)

在iOS模拟器10.3上使用Xamarin 7.2输出

 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 

在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: 

代码片段,如果你想logging自己的

 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