C#获取%AppData%的路径
C#2008 SP1
我使用下面的代码:
dt.ReadXml("%AppData%DateLinks.xml");
但是,我收到一个异常,指向我的应用程序运行的位置:
无法找到'D: Projects SubVersionProjects CatDialer bin Debug %AppData% DateLinks.xml'路径的一部分。
我认为%AppData%
应该找到相对路径。 当我去Start|Run|%AppData%
Windows资源管理器把我带到那个目录。
由于每台客户端计算机上的用户不同,我无法放入完整路径。
非常感谢您的任何建议,
要获得AppData目录,最好使用GetFolderPath
方法:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
%AppData%
是一个环境变量,并且它们不会在.NET中的任何位置自动扩展,但您可以显式使用Environment.ExpandEnvironmentVariable
方法来执行此操作。 不过,我仍然强烈建议您使用GetFolderPath
,因为JohannesRössel在评论中指出,在某些情况下可能不会设置%AppData%
。
最后,创建如下例所示的路径:
var fileName = Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData), "DateLinks.xml");
如果你在说ASP.NET,路径是不同的。
我找不到任何指向/ App_Data for ASP.NET的'SpecialFolder'值。
相反,你需要这样做:
HttpContext.Current.ApplicationInstance.Server.MapPath("~/App_Data")
(注意:你不需要MVC控制器中的'Current'属性)
如果另一种更加'抽象'的方式去App_Data
会喜欢听到如何。
使用AppData目录的最佳方式是使用Environment.ExpandEnvironmentVariable
方法。
原因:
例子:
string path;
path = "%AppData%stuff";
path = "%aPpdAtA%HelloWorld";
path = "%progRAMfiLES%Adobe;%appdata%FileZilla"; // collection of paths
path = Environment.ExpandEnvironmentVariables(path);
Console.WriteLine(path);
记住一些用户键入%AppData%
,一些%appdata%
和一些%APpData%
你不想最终:
if (path.ToLower().StartsWith("%appdata%"))
; // path manipulation
if (path.ToLower().StartsWith("%programfiles%"))
; // path manipulation
如果没有设置环境变量,这是不是你的错(除了它时)。 我通常不会告诉人们不要重新发明轮子,但是当我第一次走向另一条路时,意识到这是一个糟糕的主意。
链接地址: http://www.djcxy.com/p/6125.html上一篇: C# getting the path of %AppData%
下一篇: Validate a username and password against Active Directory?