用这个:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
我得到这个输出:
"C:\\Documents and Settings\\[USER]\\Application Data"
我怎样才能得到所有用户的根目录? 例如:
"C:\\Documents and Settings\\[USER]\\"
Try:
System.IO.Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName/
试试:
System.Environment.GetEnvironmentVariable("USERPROFILE");
编辑:
如果所使用的.NET 版本为4或以上,则可以使用 Environment.SpecialFolder枚举:
Environment.SpecialFolder
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
Environment.GetEnvironmentVariable("userprofile")
尝试从命名的 SpecialFolder 导航很容易出现问题。有很多原因导致文件夹不在你期望的位置——用户可以自己移动它们,GPO 可以移动它们,文件夹重定向到 UNC 路径等等。
对用户配置文件使用 环境变量应该能够反映任何可能的问题。
也许这将是一个好的解决方案: 考虑到这是否是 Vista/Win7或 XP,而不使用环境变量:
string path = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName; if ( Environment.OSVersion.Version.Major >= 6 ) { path = Directory.GetParent(path).ToString(); }
不过使用环境变量更为明确。
当有一个 API 来获取您想要的信息时,使用环境变量或硬编码的父文件夹偏移量从来都不是一个好主意,请调用 SHGetSpecialFolderPath(...,CSIDL_PROFILE,...)
SHGetSpecialFolderPath(...,CSIDL_PROFILE,...)
你可使用以下代码:
if(Platform.Equals("WinCE")) { m_CurrentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); } else if(Platform.Equals("Win32NT")) { m_CurrentPath = Directory.GetCurrentDirectory(); }
更多信息见: 使用 c # 在 WinXP 和 winCE 中获取工作目录路径
您可以通过以下方式获得 UserProfile 路径:
$env:USERPROFILE = "C:\\Documents and Settings\\[USER]\\"
在研究 Environment.SpecialFolder枚举时也很有帮助。使用 LINQPad 或创建一个解决方案并执行以下代码:
Enum.GetValues(typeof(Environment.SpecialFolder)) .Cast<Environment.SpecialFolder>() .Select(specialFolder => new { Name = specialFolder.ToString(), Path = Environment.GetFolderPath(specialFolder) }) .OrderBy(item => item.Path.ToLower())
这是我机器上的结果:
MyComputer LocalizedResources CommonOemLinks ProgramFiles C:\Program Files (x86) ProgramFilesX86 C:\Program Files (x86) CommonProgramFiles C:\Program Files (x86)\Common Files CommonProgramFilesX86 C:\Program Files (x86)\Common Files CommonApplicationData C:\ProgramData CommonStartMenu C:\ProgramData\Microsoft\Windows\Start Menu CommonPrograms C:\ProgramData\Microsoft\Windows\Start Menu\Programs CommonAdminTools C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools CommonStartup C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup CommonTemplates C:\ProgramData\Microsoft\Windows\Templates UserProfile C:\Users\fisch LocalApplicationData C:\Users\fisch\AppData\Local CDBurning C:\Users\fisch\AppData\Local\Microsoft\Windows\Burn\Burn History C:\Users\fisch\AppData\Local\Microsoft\Windows\History InternetCache C:\Users\fisch\AppData\Local\Microsoft\Windows\INetCache Cookies C:\Users\fisch\AppData\Local\Microsoft\Windows\INetCookies ApplicationData C:\Users\fisch\AppData\Roaming NetworkShortcuts C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Network Shortcuts PrinterShortcuts C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Printer Shortcuts Recent C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Recent SendTo C:\Users\fisch\AppData\Roaming\Microsoft\Windows\SendTo StartMenu C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Start Menu Programs C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Start Menu\Programs AdminTools C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools Startup C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup Templates C:\Users\fisch\AppData\Roaming\Microsoft\Windows\Templates Desktop C:\Users\fisch\Desktop DesktopDirectory C:\Users\fisch\Desktop Favorites C:\Users\fisch\Favorites MyMusic C:\Users\fisch\Music MyDocuments C:\Users\fisch\OneDrive\Documents MyDocuments C:\Users\fisch\OneDrive\Documents MyPictures C:\Users\fisch\OneDrive\Pictures MyVideos C:\Users\fisch\Videos CommonDesktopDirectory C:\Users\Public\Desktop CommonDocuments C:\Users\Public\Documents CommonMusic C:\Users\Public\Music CommonPictures C:\Users\Public\Pictures CommonVideos C:\Users\Public\Videos Windows C:\Windows Fonts C:\Windows\Fonts Resources C:\Windows\resources System C:\Windows\system32 SystemX86 C:\Windows\SysWoW64
(“ fish”是我姓的前5个字母。这是用 Microsoft 帐户登录时分配的用户名。)