C# 2008 SP1
我正在使用下面的代码:
dt.ReadXml("%AppData%\\DateLinks.xml");
然而,我得到一个异常,指向我的应用程序正在运行的位置:
找不到路径的一部分
D: \ SubVersionProjects \ CatDialer \ bin \ \项目调试\ % AppData % \ DateLinks.xml”。
我认为%AppData%应该找到相对路径。当我开始|运行|%AppData% windows资源管理器带我到那个目录。
我不能输入完整的路径,因为每个客户端机器上的用户是不同的。
AppData⇝本地aka (C:\Users\<user>\AppData\Local):
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
AppData⇝漫游aka (C:\Users\<user>\AppData\漫游):
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
此外,了解以下信息可能会很方便:
programfiles -用于程序文件X64文件夹
Environment.SpecialFolder。ProgramFilesX86 -用于程序文件X86文件夹
查看完整的列表。
使用AppData目录的最佳方式是使用Environment。ExpandEnvironmentVariables方法。
原因:
它将字符串的部分替换为有效的目录或其他东西
不区分大小写
这很容易,也不复杂
这是一个标准
很适合处理用户输入
例子:
string path;
path = @"%AppData%\stuff";
path = @"%aPpdAtA%\HelloWorld";
path = @"%progRAMfiLES%\Adobe;%appdata%\FileZilla"; // collection of paths
path = Environment.ExpandEnvironmentVariables(path);
Console.WriteLine(path);
更多信息:
%ALLUSERSPROFILE% C:\ProgramData
%APPDATA% C:\Users\Username\AppData\Roaming
%COMMONPROGRAMFILES% C:\Program Files\Common Files
%COMMONPROGRAMFILES(x86)% C:\Program Files (x86)\Common Files
%COMSPEC% C:\Windows\System32\cmd.exe
%HOMEDRIVE% C:
%HOMEPATH% C:\Users\Username
%LOCALAPPDATA% C:\Users\Username\AppData\Local
%PROGRAMDATA% C:\ProgramData
%PROGRAMFILES% C:\Program Files
%PROGRAMFILES(X86)% C:\Program Files (x86) (only in 64-bit version)
%PUBLIC% C:\Users\Public
%SystemDrive% C:
%SystemRoot% C:\Windows
%TEMP% and %TMP% C:\Users\Username\AppData\Local\Temp
%USERPROFILE% C:\Users\Username
%WINDIR% C:\Windows