【问题标题】:Accessing %appdata% with VB.NET使用 VB.NET 访问 %appdata%
【发布时间】:2011-10-01 19:41:23
【问题描述】:

如何通过 VB.NET 访问 %appdata% 中的文件?

例如,C:\Users\Kuzon\AppData\Roaming\program。我将如何访问该文件,但在另一台 Windows 7 机器上?另外,您将如何在 Windows XP 上执行此操作?我相信是%Application Data%

【问题讨论】:

  • 感谢您尝试向系统查询正确的路径,而不是像较小的开发人员那样对其进行硬编码。 +1

标签: .net windows vb.net special-folders appdata


【解决方案1】:

在编写 .NET 代码时,建议您使用为此目的明确设计的函数,而不是依赖于环境变量,例如 %appdata%

您正在寻找Environment.GetFolderPath method,它返回您从Environment.SpecialFolder enumeration 指定的特殊文件夹的路径。

应用程序数据文件夹由Environment.SpecialFolder.ApplicationData 值表示。根据您的要求,这是 roaming 应用程序数据文件夹。如果您不需要保存的数据在多台机器之间漫游,并且希望它只保留在一台机器的本地,您应该使用Environment.SpecialFolder.LocalApplicationData 值。

完整示例代码:

Imports System.Environment

Class Sample
    Public Shared Sub Main()
        ' Get the path to the Application Data folder
        Dim appData As String = GetFolderPath(SpecialFolder.ApplicationData)

        ' Display the path
        Console.WriteLine("App Data Folder Path: " & appData)
    End Sub
End Class

是的,这在 C# 中与 VB.NET 相同。

【讨论】:

    【解决方案2】:

    当使用带有 WinForms 的 VB.NET 时,这是另一种选择:

    System.Windows.Forms.Application.UserAppDataPath
    

    【讨论】:

      【解决方案3】:
      Function GetAppDataPath() As String
         Return Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
      End Function
      

      【讨论】:

        【解决方案4】:

        它不仅知道应用程序数据的位置,而且还允许用户设置他们希望使用哪个文件夹作为默认文件夹。有些用户不是管理员,只能使用本地或漫游,但你真的不知道,所以你必须使用 Try..Catch。此外,其他用户可能需要使用网络访问数据,因此他们的工作文件夹是 Roaming。

        对于任何用户,我允许他们设置自己的工作目录,并允许自定义文件夹,该文件夹通常用于拥有自己的 PC/笔记本电脑的人,他们是自己的管理员。以下只是 My.Settings 命令。

        我还创建了一个保存应用程序结果的 OutputDirectory(文件夹)。 (如果他们可以访问正在使用的父工作目录,他们将拥有磁盘读写权限)。如果没有,他们必须让他们的 IT 来设置他们的权限。

            Dim mdfolder As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\Company Name"
            If Directory.Exists(mdfolder) = False Then Directory.CreateDirectory(mdfolder)
            Dim expfolder As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\Company Name\AppName"
            If Directory.Exists(expfolder) = False Then Directory.CreateDirectory(expfolder)
            My.Settings.MyDocumentsFolder = expfolder
            mdfolder = expfolder
            My.Settings.Save()
        
            Dim roamfolder As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\AppName"
            My.Settings.RoamingDataFolder = roamfolder
            My.Settings.Save()
        
            If My.Settings.DefaultDataFolderOption = 1 Then
                DefaultDataFolder = roamfolder
            End If
            If My.Settings.DefaultDataFolderOption = 2 Then
                DefaultDataFolder = mdfolder
            End If
            If My.Settings.DefaultDataFolderOption = 3 Then
                DefaultDataFolder = My.Settings.CustomDataFolder
            End If
            If DefaultDataFolder = "" Then
                DefaultDataFolder = mdfolder
            End If
            If OutputDirectory = "" Then OutputDirectory = DefaultDataFolder & "\Output"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多