【问题标题】:Unable to access .mdf file after installing application using Visual Studio setup project使用 Visual Studio 安装项目安装应用程序后无法访问 .mdf 文件
【发布时间】:2018-05-27 08:36:18
【问题描述】:

我创建了一个 WPF 应用程序。我正在使用 Visual Studio 安装项目来创建应用程序设置。

在我的应用程序中,我有一个位于项目文件夹(应用程序文件夹)中的本地数据库。当我将应用程序安装到 C: 驱动器(操作系统驱动器)以外的任何其他驱动器时,它工作正常。但是当我将应用程序安装到C: 驱动器时,我的应用程序无法访问数据库文件。此外,当我将数据库附加到 SQL Server Management Studio 时,它以只读方式附加:

另外,我查看了 Eventviewer,发现这个错误:

我尝试将.mdf 文件添加到Programdata 文件夹,但问题仍未解决。我知道这是一个与权限相关的问题。但是有没有办法使用 Visual Studio 安装项目来解决这个问题?

【问题讨论】:

  • A .mdf 文件是一个 SQL Server 数据库文件 - 因此要使用它,您必须在其上安装 SQL Server Express机器。您是否在您的应用程序中安装此依赖项??
  • @marc_s:是的,我在应用程序中添加了先决条件。另外,我提到我能够按预期在操作系统驱动器(C 驱动器)以外的任何其他驱动器上运行应用程序。

标签: wpf installation setup-project


【解决方案1】:

使用 Installer 类并在 Commit 方法中编写以下代码。 您必须授予 mdf 文件的读/写权限。 你可以通过下面的代码行给出这个;确保你的安装目录也有写权限。

string directoryName = @"C:\rnd\ConsoleApplication16\ConsoleApplication16\";
        string SharedCachePath = @"C:\rnd\ConsoleApplication16\ConsoleApplication16\xyz.mdf";
        var fs = File.GetAccessControl(directoryName);
            fs.SetAccessRuleProtection(false, true);
            File.SetAccessControl(SharedCachePath, fs);

您可以查看here 以供安装程序类使用 希望这能解决您的问题。

【讨论】:

  • 感谢您的大力帮助。我能够解决这个问题。我通过提供对包含我的数据库文件的文件夹的访问权限做了一个小改动,因为我有单独的数据库文件文件夹。 :)
猜你喜欢
  • 1970-01-01
  • 2022-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多