SqlServerCe 写入 C:\ProgramData

SqlServerCe writing to C:\ProgramData

我的程序正在写入位于 C:\ProgramData\MyApp\MyDb.sdf 的 SqlServerCe 文件。 为了开发,我已将我的帐户设为 C:\ProgramData\MyApp\ 的所有者,并具有写入权限。

以前这一直工作正常但今天我收到这个错误:

System.UnauthorizedAccessException: '访问路径 'C:\ProgramData\Microsoft.SqlServer.Compact.400.32.bc' 被拒绝。'

有了这个堆栈跟踪

mscorlib.dll!System.IO.StreamWriter.StreamWriter(string path, bool append, System.Text.Encoding encoding, int bufferSize, bool checkHost)   Unknown
mscorlib.dll!System.IO.StreamWriter.StreamWriter(string path, bool append, System.Text.Encoding encoding)   Unknown
mscorlib.dll!System.IO.File.WriteAllLines(string path, string[] contents, System.Text.Encoding encoding)    Unknown
System.Data.SqlServerCe.dll!System.Data.SqlServerCe.SqlCeServicing.DoBreadcrumbServicing(string modulePath) Unknown
System.Data.SqlServerCe.dll!System.Data.SqlServerCe.NativeMethods.LoadNativeBinariesFromPrivateFolder(string privateInstall)    Unknown
System.Data.SqlServerCe.dll!System.Data.SqlServerCe.NativeMethods.LoadNativeBinaries()  Unknown
System.Data.SqlServerCe.dll!System.Data.SqlServerCe.SqlCeConnection.SqlCeConnection()   Unknown
System.Data.SqlServerCe.dll!System.Data.SqlServerCe.SqlCeConnection.SqlCeConnection(string connectionString)    Unknown

看来,虽然 SqlServerCe 确实尝试写入 'C:\ProgramData\Microsoft.SqlServer.Compact.400.32.bc',但失败并不是严重错误。

程序可以通过按 "Continue"/F5

安全地继续

Visual Studio 失败的原因是这个设置。