Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access %用于MS Access安装的appdata%_Ms Access - Fatal编程技术网

Ms access %用于MS Access安装的appdata%

Ms access %用于MS Access安装的appdata%,ms-access,Ms Access,David Fenton最近在那篇文章中提到 任何Access应用程序(事实上,自Windows 2000以来)唯一合适的位置是%AppData%环境变量指向的文件夹 我非常尊重David的知识,尤其是在与访问相关的所有问题上,但我对这一说法感到困惑 遵循此建议有什么好处,尤其是在多人使用同一台计算机访问应用程序的环境中 安装到此文件夹不会只为一个用户安装应用程序吗?如果这是真的,多次安装你的应用程序不会在机器上留下多个单独的应用程序副本吗?现在硬盘空间很便宜,但我仍然不想在一个拷贝就可以的情况

David Fenton最近在那篇文章中提到

任何Access应用程序(事实上,自Windows 2000以来)唯一合适的位置是%AppData%环境变量指向的文件夹

我非常尊重David的知识,尤其是在与访问相关的所有问题上,但我对这一说法感到困惑

遵循此建议有什么好处,尤其是在多人使用同一台计算机访问应用程序的环境中

安装到此文件夹不会只为一个用户安装应用程序吗?如果这是真的,多次安装你的应用程序不会在机器上留下多个单独的应用程序副本吗?现在硬盘空间很便宜,但我仍然不想在一个拷贝就可以的情况下,将前端文件和其他支持文件(图形、Word和Excel模板等)复制到机器上多次


你的想法是什么?我是否遗漏了理解David建议的关键内容?

您在这里遇到了一点问题,因为您正在考虑环境变量名称
%appdata%
。该变量存储由
SHGetSpecialFolderPath(CSIDL\u APPDATA)
返回的目录

您要查找的是由
SHGetSpecialFolderPath(CSIDL\u COMMON\u APPDATA)
返回的目录。该目录没有环境变量。此目录(如名称所示)对所有用户都是公用的


David方法的优点是,当访问数据位于CSIDL_APPDATA中时,它受NTFS访问权限的保护。用户只能删除其副本。在CSIDL_COMMON_APPDATA中,任何人都可以删除单个共享副本。

最好将这些建议和提示放在正确的角度。这里的假设是,如果您的应用程序将在多用户模式下使用(这意味着应用程序中同时有多个用户),那么您的应用程序将被分成两部分。所谓的应用程序部分(前端),然后是仅数据文件部分,或所谓的后端部分

所以,你有一个FE和一个BE

在此环境中,办公室内的每个用户都将在其工作站上放置自己的应用程序副本。因此,假定BE(数据文件)位于服务器上的某个共享文件夹中

在这种情况下,我们不会有多个用户运行这个应用程序,或者应用程序没有真正处于开发阶段,那么您真的不需要将应用程序分成两部分。但是,如果您拆分了应用程序,这意味着您的所有用户都可以安全地工作和使用您的应用程序,同时您也可以使用此应用程序版本的下一个伟大版本。如果没有一个分割的环境,你真的不可能有任何可行的开发周期

如果要在多用户环境中使用access,每个用户都必须在每台计算机上放置一份前端应用程序的副本,这是一个由来已久且久负盛名的建议。如果避免此建议,最终结果是应用程序的一般操作不稳定

我在这里有一篇文章从概念上进行了解释,它不仅告诉您拆分应用程序,还很好地解释了为什么要拆分应用程序:


如果给定机器上的每个用户的一切都是一样的,那么一个文件的多个副本可能不是一个好主意。但当一个例外发生时,你已经把自己画进了一个角落。例如,他们可能需要不同的模板版本


对于Access开发人员来说,您似乎很少遇到这种情况。

首先,这是一个只有多个用户登录的工作站才会遇到的问题。这很不寻常,不是吗

其次,您承认磁盘空间没有问题,因此唯一真正的问题是保持前端的最新状态,而这个问题实际上与前端存储在何处的问题完全正交

这个问题可以通过使用多种解决方案中的任意一种来解决,这些解决方案可以在用户打开前端时自动复制新版本(如果需要)。这是我所知道的最好的解决办法。它用途广泛,使用方便,托尼一直在不断改进


因此,简而言之,我认为这里根本没有任何问题。

是的,这是一个问题,但唯一的解决方法是,假设it管理员允许,在C驱动器的根目录中创建一个文件夹,并在该文件夹中安装Access FE数据库文件。也就是说,即使文件重复,我仍然会使用应用程序数据文件夹。正如你所说的,硬盘很便宜


这假设您不是指用户同时登录到系统的终端服务器/Citrix系统。

我想他不是指多个用户,而是指多个使用同一台计算机/不同登录的人,每个人都有自己的%AppData%文件夹。是的,我非常清楚如何拆分前端和后端。Jeff的评论不得要领。据报道,Vista/Win7中的CSIDL_COMMON_APPDATA也存在问题,因为据报道,它返回的文件夹对于用户级登录是只读的(即,您在UAC下运行的安全令牌)。我自己没有经历过这种情况,但我一点也不担心前端的多个副本的问题,所以我可以将其放入用户配置文件中。我只是反复检查,普通用户不允许查看,更不用说更新通用应用程序数据文件夹了。David,这很可能是我报告的自动FE更新程序无法在Windows Vista和更新版本的普通桌面上创建快捷方式的问题。不是你,Tony,是其他人。哦,如果你的环境用户漫游配置文件,这是需要考虑的。如果您使用漫游配置文件将设置存储在用户的前端副本中(我认为这是不可取的,但我已经这样做了)