【问题标题】:Can't access application database file stored in Local Appdata folder in windows 2012 server无法访问存储在 Windows 2012 服务器本地 Appdata 文件夹中的应用程序数据库文件
【发布时间】:2019-01-17 21:23:14
【问题描述】:

我有一个小型 vb.net 应用程序,它将设置存储在 SQL Server 紧凑型数据库文件 abc.sdf 中。在安装时,我将此文件存储在本地 Appdata 文件夹中,该文件夹转换为

"C:\Users\\AppData\Local\\abc.sdf"

在 Windows Server 2012 中,当我从非管理员用户运行我的应用程序时,应用程序会抛出错误“找不到数据库文件”。使用“以管理员身份运行”选项运行应用程序时,我没有收到此错误。

此问题仅针对 Windows Server,应用程序在 Windows 7、8 和 10 中运行时没有任何问题。

我已尝试更改文件的所有权,向所有人、用户等授予完全控制权限,但没有一个有效。

如果以非管理员用户身份登录,我将无法查看 localappdata 文件夹中的文件。但是当我以管理员用户身份登录时,它会显示该文件。

我对 Windows Server 2012 了解不多,我们将不胜感激。

【问题讨论】:

    标签: vb.net windows-server-2012-r2


    【解决方案1】:

    是否需要在appdata中有文件,或者是否可以在程序所在的文件中,如果有,可以这样访问:

    Dim Filename As String = $"{AppDomain.CurrentDomain.BaseDirectory}abc.sdf"
    

    如果需要在本地appdata文件夹下,可以试试:

    Dim Filename as String = $"{GetFolderPath(SpecialFolder.ApplicationData)}Local\abc.sdf"
    

    您还需要在代码顶部插入:Imports System.Environment

    【讨论】:

    • 感谢您的回复。但是当我声明它 $ 符号时,它是在说“字符无效”。在我的程序中,我使用以下 "Public abcFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\abcfolder" 访问它,我尝试将其存储在 APPDATA 和 COMMONAPPDATA 中,但没有成功
    • $ 是字符串插值的一种形式。您需要使用 GetFolderPath(SpecialFolder.ApplicationData) & "Local\abc.sdf"
    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多