域兼容性:应该在哪里共享数据写?(Domain compatibility: where shoul

2019-09-17 08:39发布

我们已经写了在XP下运行相当不错的应用程序,但有很严重的移民问题,Vista和Windows 7中,用户数据被写入可能是由于。

用例是这样的:个人用户需要登录到计算机,并用它来获取数据。 监事用户需要能够查看个人用户的肩膀,并验证它们是否正确执行他们的工作。 这些监督员还需要检查系统日志,以确保系统正常进行。

我们完成在XP这些任务的方法是写在C文件夹:\直接驱动。 也许这是不好的做法,也许没有,但基本上所需要的系统的所有用户能够访问此数据作为共享数据。 在该计划的一些设施中,IT的情况只是没有安全可言,并有对计算机的单一用户,然后每个人单独登录到我们的节目。 在节目的其他设备,IT人员有能力,有不同用户的不同登录,但每个用户仍然可以访问C:每个用户仍然可以检查作为必要的其他用户。

在Vista / Windows 7中,所有的改变。 如果IT人员都锁定到单独的用户,这些用户仍然需要这一共同的数据,并写入应用程序特定的配置参数和用户列表到应用程序的目录仅仅是不允许的。 如果系统中有一个域的位置,然后在用户没有本地管理员权限,甚至安装可能是一个问题。

为解决这个让安装程序让每一个用户可以写,然后把所有的用户特定数据在该目录的目录? 如果是的话,是有可能有一个安装行为是那样的(即使它已被赋予管理员权限)? 还是有办法让Vista / 7中表现得比较宽松XP时尚?

Answer 1:

最权威资源是“数据和设置管理在MSDN中的每个Windows版本的应用程序规范。阅读本看到在Windows中存在的各种特殊文件夹背后的基本原理,以及如何选择哪一个将数据写入。

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

大多数likley提供您需要的文件夹-由一个用户,由管理员读取被写入,将CSIDL_APPDATA -这,在Windows 6.X,对应于C:\ProgramData\

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

一个完全独立的锻炼; Tibial正在写上目录必要修改访问控制列表的代码(ACL)中。 一个,如果您选择的位置,默认权利arn't足以满足您的目的,这将是必要的。



Answer 2:

您的应用程序的一部分可以作为一个系统服务和自己的用户可能运行。 这样,它也可以有自己的安全存储从人类用户望而却步。 这也将消除总体需要有运行的程序与权限的用户他们的常规范围。

您的应用程序的实际用户空间部分可以连接到服务和执行简单的存储/检索操作。



Answer 3:

我们完成在XP这些任务的方法是写在C文件夹:\直接驱动。 也许这是不好的做法,也许它不是

这肯定是。 “C:\用户\公用\公用文档”是这哪里是合适的。 使用NTFS ACL来控制谁可以读取和写入文件。



Answer 4:

默认情况下,不存在目录中的所有用户有写权限(除也许一个全系统的TEMP目录,但我不会去那里写的日志记录信息)。

如果您的安装程序使用管理权限运行,它可以创建这样一个目录,并给大家写权限。 最合理的地方将是ALLUSERSPROFILEC:\Documents and Settings\All Users在XP上, C:\Users\Public对Vista / 7)。

另一种相当简单的解决方案是让每个用户只需登录到一个目录在他或她的个人资料,例如, Application Data\Your App 。 所有日志信息之后,还可以相当容易地通过行政程序汇总,如果读取权限不锁定,如果这是需要用户甚至可以读懂对方的数据。



Answer 5:

那岂不是更好的地方在网络上存储数据? 这样,您只需要设置安全一次,它更容易维护。 监事可以轻松地阅读了很多PC的数据并没有访问个人电脑的...



文章来源: Domain compatibility: where should shared data be written?