2012-03-05 85 views
-2

我目前知道的方法有两种:如何找到%APPDATA%目录?

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

Application.UserAppDataPath 

难道他们都一样吗?我应该使用一个吗?请提供一些事实以备份您的答案。

回答

2

Application.UserAppDataPath返回BasePath \ CompanyName \ ProductName \ ProductVersion,其中BasePath是ApplicationData目录。所以如果你不想要所有额外的子目录,你应该只使用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

2

应用程序是WinForms的类。所以,如果你的应用程序不是WinForms应用程序,你就不能使用Application.UserAppDataPath。此外,如果反编译System.Windows.Forms程序集,则可以看到Application.UserAppDataPath属性使用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)方法。

public static string UserAppDataPath 
{ 
    get 
    { 
    try 
    { 
     if (ApplicationDeployment.IsNetworkDeployed) 
     { 
     string str = AppDomain.CurrentDomain.GetData("DataDirectory") as string; 
     if (str != null) 
      return str; 
     } 
    } 
    catch (Exception ex) 
    { 
     if (System.Windows.Forms.ClientUtils.IsSecurityOrCriticalException(ex)) 
     throw; 
    } 
    return Application.GetDataPath(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); 
    } 
} 
+0

不完全一样,因为它在System.Windows.Forms.dll中,它随.NET的各种风格一起安装。在某些情况下,您*无法使用它(例如silverlight),但在这些情况下,其他选项也不可用。 – Will 2012-03-05 17:05:44