好的,我已经检查了Environment.SpecialFolder,但是那里没有任何内容.
我想在C#中获取当前用户的主目录.(例如c:\documents and settings\user在XP下,c:\users\user在Vista下,/home/user在Unix下.)
我知道我可以阅读环境变量来找到它,但我希望以跨平台的方式做到这一点.
有什么方法可以用.NET做这个(最好使用mscorlib)?
更新:好的,这是我最终使用的代码:
string homePath = (Environment.OSVersion.Platform == PlatformID.Unix ||
Environment.OSVersion.Platform == PlatformID.MacOSX)
? Environment.GetEnvironmentVariable("HOME")
: Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%");
Run Code Online (Sandbox Code Playgroud)
小智 83
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
Run Code Online (Sandbox Code Playgroud)
个人是我的文件(或win7中的文件).
sig*_*int 48
Environment.SpecialFolder.Personal实际上并不返回主文件夹,它返回My Documents文件夹.在Win32上获取主文件夹最安全的方法是阅读%HOMEDRIVE%%HOMEPATH%.阅读环境变量其实是非常移植到(在UNIX和Windows)做的,所以我不知道为什么海报想不去做.
编辑补充:对于跨平台(Windows/Unix)C#,我会$HOME在Unix和OSX以及%HOMEDRIVE%%HOMEPATH%Windows上阅读.
Mat*_*ley 13
我相信你要找的是:
System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)
Run Code Online (Sandbox Code Playgroud)
作为参考,它实际上包含在mscorlib.
在DotNetCore 1.1 System.Environment.SpecialFolder中不存在.它可能存在于2.0-beta中.在此之前,要执行此操作,您可以使用以下内容:
var envHome = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "HOMEPATH" : "HOME";
var home = Environment.GetEnvironmentVariable(envHome);`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59012 次 |
| 最近记录: |