windows - 域兼容性 : where should shared data be written?

标签 windows windows-7 windows-vista installation shared-data

我们编写的应用程序在 XP 中运行良好,但在迁移到 Vista 和 Windows 7 时遇到了严重的问题,这可能是由于用户数据的写入位置。

用例是这样的: 个人用户需要登录机器并使用它来获取数据。主管用户需要能够从各个用户的肩膀上看到并验证他们是否正确地执行了他们的工作。这些主管还需要检查系统日志以确保系统正常运行。

我们在 XP 中完成这些任务的方法是直接写入 C:\驱动器上的文件夹。也许这是不好的做法,也许不是,但基本上系统的所有用户都需要能够将此数据作为共享数据进行访问。在该程序的某些安装中,IT 环境根本不安全,计算机只有一个用户,然后每个人分别登录到我们的程序。在该程序的其他安装中,IT人员是能干的,对不同的用户有不同的登录名,但每个用户仍然可以访问C:,每个用户仍然可以根据需要检查其他用户。

在 Vista/Windows 7 中,这一切都变了。如果 IT 人员将一切都锁定在单个用户身上,这些用户仍然需要共享这些公共(public)数据,并且不允许将特定于应用程序的配置参数和用户列表写入应用程序目录。如果系统位于有域的位置,则用户没有本地管理员权限,甚至安装都可能出现问题。

这个问题的解决方案是让安装程序创建一个每个用户都可以写入的目录,然后将所有用户特定的数据放在该目录中吗?如果是这样,是否可以让安装程序以这种方式运行(即使必须授予管理员权限)?或者有没有办法让 Vista/7 以更自由的 XP 方式运行?

最佳答案

最权威的资源是 "Data and Settings Management在 MSDN 中每个 Windows 版本的应用程序规范中。阅读本文以了解 Windows 上存在的各种特殊文件夹背后的基本原理,以及如何选择将数据写入其中。

接下来,您的应用程序需要使用 SHGetSpecialFolderLocation用于检索特殊位置路径的 API。

最有可能满足您需要的文件夹是 CSIDL_APPDATA - 由一个用户写入,由管理员读取 - 在 Windows 6.X 上,它对应于 C:\程序数据\

默认情况下,在此位置创建的文件夹的权限是管理员和所有者(即创建它的用户)的完全控制权和用户组成员的只读权限。

一个完全独立的练习是编写修改目录访问控制列表 (ACL) 所需的代码。如果您选择的位置的默认权限不足以满足您的目的,那么这是必需的。

关于windows - 域兼容性 : where should shared data be written?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1066782/

相关文章:

windows - 对于 ruby​​/webrick,我需要 Windows 来识别 shebang (#!) 符号

c++ - 在 Windows7 上使用 mingw 编译器枚举不与 C++ 一起工作

windows-7 - 如何将文件复制到 CommonAppDataFolder?

windows - 代码签名服务之间有什么区别?

wpf - Web 性能达不到标准……新的 "Microsoft Way"是什么?

.net - 如何找出我的应用程序 "stopped working"的原因?

windows-7 - MPICH2 无法在 Windows 7 中连接

asp.net - IIS7 和 Vista 上的 ASP .NET 2 的 URL 重写问题

windows-vista - 在 Vista 中关闭 Aero 的不良行为

iis - Vista 的 IIS 实例没有 SMTP(解决方案?)