使用VB.NET访问%appdata%

时间:2011-07-09 09:53:22

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

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

例如,C:\Users\Kuzon\AppData\Roaming\program。我如何访问该文件,但在另一台Windows 7计算机上?另外,你会如何在Windows XP上做到这一点?我相信它是%Application Data%

4 个答案:

答案 0 :(得分:36)

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

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

Application Data文件夹由Environment.SpecialFolder.ApplicationData值表示。这是您所要求的漫游应用程序数据文件夹。如果您不需要保存的数据在多台计算机上漫游,并且希望它只保留在本地,则应使用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相同。

答案 1 :(得分:1)

将VB.NET与WinForms一起使用时,这是另一种选择:

System.Windows.Forms.Application.UserAppDataPath

答案 2 :(得分:0)

Function GetAppDataPath() As String
   Return Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
End Function

答案 3 :(得分:0)

它不仅知道应用程序数据在哪里,而且还允许用户设置他们想要使用的默认文件夹。有些用户不是管理员,只能使用本地或漫游,但你真的不知道,所以你必须使用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"