使用VB.NET访问%appdata%

20

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

例如,C:\Users\Kuzon\AppData\Roaming\program。我该如何访问另一台运行Windows 7的计算机上的该文件呢?另外,在Windows XP上该如何做呢?我相信应该是%Application Data%


5
谢谢您尝试查询系统以获取正确的路径,而不像一些开发人员那样硬编码它。加1。 - Cody Gray
4个回答

45

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

您需要使用Environment.GetFolderPath方法,该方法返回您从Environment.SpecialFolder枚举中指定的特殊文件夹的路径。

应用程序数据文件夹由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一样可以使用这个方法。


3
使用VB.NET和WinForms时,这是另一种选择:
System.Windows.Forms.Application.UserAppDataPath

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

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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接