据我所知,你应该使用Environment.GetFolderPath
方法,这样你就有了独立于操作系统的代码...
Windows XP使用C:\Documents and Settings\
。Windows Vista使用C:\ProgramData
和C:\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);
}
5条答案
按热度按时间gcuhipw91#
我的安装程序复制了一个在XP电脑上生成的log.txt文件。我在看那个日志文件时以为它是在Vista上生成的。一旦我把我的log4net配置修改为“Vista兼容”,Environment.GetFolderPath就返回了预期的结果。因此,我关闭了这个帖子。
以下SpecialFolder路径引用可能会很有用:
Windows Server 2003上的输出:
Vista上的输出:
z18hc3ub2#
在Ubuntu 9.10 -〉Ubuntu 12.04上使用单声道2.10.8.1:
在Ubuntu 16.04上使用单声道4.2.1输出
其中$USER是当前用户
在使用dotnet核心(3.0.100)的Ubuntu 16.04上输出
使用Xamarin 7.2在Android 6上输出
其中$APPNAME是Xamarin应用程序的名称(例如MyApp.Droid)
使用Xamarin 7.2在iOS模拟器10.3上输出
其中$DEVICEGUID是模拟器GUID(取决于所选的模拟器)
使用Xamarin 7.2在iPad 10.3上输出
使用Xamarin 16.4在iPad 13.3上输出
使用.net core 3.1在Windows 10上输出
在使用.net core 3.1的Ubuntu 18.04上输出
使用.net core 3.1在MacOS Catalina上输出
快照包上的输出-使用.net core 3.1的Core 18
(Note:我发现如果快照环境
/home/$USER/snap/$APPNAME/x$VERSION/.local/share
存在,则LocalApplicationData
将返回该路径。但是,如果该路径不存在,则返回空字符串。pod7payv3#
Windows 10上的输出
如果您要记录自己的代码段
2eafrhcq4#
在Windows 7(64位)上输出
在Windows XP上输出
vvppvyoh5#
我在寻找macOS的列表,但什么也没找到,也许这对某人有帮助。
使用net5.0在macOS Catalina(10.15.7)上输出
我已将用户名替换为$USER。
来自pogosama得代码段.