好吧,我查过Environment.SpecialFolder了,但里面什么都没有。
我想要获取当前用户在C#中的主目录。(例如XP下的c:\documents and settings\user
、Vista下的c:\users\user
和Unix下的/home/user
。)
我知道我可以读取环境变量来找出这一点,但我想以一种跨平台的方式来做这件事。
有没有什么办法可以用.NET (最好是mscorlib)做到这一点?
更新:好的,这是我最终使用的代码:
string homePath = (Environment.OSVersion.Platform == PlatformID.Unix ||
Environment.OSVersion.Platform == PlatformID.MacOSX)
? Environment.GetEnvironmentVariable("HOME")
: Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%");
发布于 2009-07-17 14:48:25
Environment.SpecialFolder.Personal
实际上并不返回主文件夹,而是返回My Documents文件夹。在Win32上获取主文件夹的最安全的方法是阅读%HOMEDRIVE%%HOMEPATH%
。读取环境变量实际上是非常便携的(在Unix和Windows之间),所以我不确定为什么发帖人不想这么做。
编辑添加:对于跨平台( Windows / Unix ) C#,我在Unix和OSX上阅读了$HOME
,在Windows上阅读了%HOMEDRIVE%%HOMEPATH%
。
发布于 2011-09-13 23:26:37
你正在寻找Environment.SpecialFolder.UserProfile
,它指的是Windows上的C:\Users\myname
和Unix/Linux上的/home/myname
:
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
请注意,Environment.SpecialFolder.Personal
是My Documents (或win7及以上版本的Documents ),但与Unix/Linux上的主目录相同。
发布于 2009-07-17 14:44:22
我相信你要找的是:
System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)
作为参考,它实际上包含在mscorlib
中。
https://stackoverflow.com/questions/1143706
复制相似问题