临时 Access 数据库的位置

Posted

技术标签:

【中文标题】临时 Access 数据库的位置【英文标题】:Location for temporary Access databases 【发布时间】:2016-12-12 20:46:21 【问题描述】:

为了避免数据库膨胀,我经常创建临时数据库来存储工作数据表。我想在用户的%TEMP% 文件夹中创建这些文件。但是,如果我这样做,Access 会向用户显示以下对话框:

已发现潜在的安全问题。

文件路径:C:\Users\JDoe\AppData\Local\Temp\TempDb\temp_001.mdb

您要打开此文件还是取消操作?

如果我尝试将此文件夹(或 %TEMP% 文件夹的任何子文件夹)添加到受信任的位置,我会收到以下错误消息:

您使用的路径不是有效位置或出于安全原因不能用作受信任位置;请检查您输入的路径或选择其他位置或特定文件夹。

有解决办法吗?我了解不允许将 %TEMP% 文件夹作为受信任位置的原因。我只是觉得我被困在了第 22 条规则中。

【问题讨论】:

我当前的解决方法是将临时数据库保存在应用程序路径中(即与我正在运行的 mdb/accdb 相同的路径)。问题是临时文件有时没有正确清理(例如,如果用户手动终止 msaccess.exe 进程)并且往往会累积。此外,这些是临时文件,应按原样存储。 这是一个选项吗? ***.com/questions/29469747/… @RickS:我不确定这在这种特定情况下是否有效。我需要能够对我正在动态创建的数据库进行数字签名。我并不是说这是不可能的,但我从未见过它完成。不过,这是一个有趣的想法。 发现 confirmation %Temp% 文件夹不能用作受信任位置:“为了进一步降低‘流氓’受信任位置的风险...Office 2007 明确阻止某些有风险的文件夹,例如用于附件的 Outlook 缓存、临时文件夹以及有时临时存储文档并且永远不会信任它们的其他文件夹。” 您能否创建一个 .NET COM 库来管理临时数据库并从 Access 调用它?或者你可以试试this? 【参考方案1】:

我的建议:继续使用应用路径。

在你的启动代码中,删除所有临时文件,例如

Kill CurrentProject.Path & "\temp_*.mdb"

因此,下次运行应用程序时,所有恶意文件都会被删除。

【讨论】:

基于 %Temp% 文件夹不能用作受信任位置的确认(请参阅有问题的评论本身),我已经将此作为最佳解决方法。很高兴看到其他人得出同样的结论。 “伟大的思想”等等……

以上是关于临时 Access 数据库的位置的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 Access Db 的临时 ldb 文件

在 MS Access DB 中创建临时表

转到在数据表中打开的Access 2016表单中的记录

在 Access 中附加 tabledef 时出现错误 3045 或 3356

MS Access 中文件的导入循环:如何在每个文件上运行宏并替换临时表的内容

Access 数据库直通查询?