2 回答
TA贡献1802条经验 获得超6个赞
这不是一个“问题”,而是一个功能。这称为用户帐户控制(UAC),它是Windows Vista下加强系统安全性的方法之一。Windows 7确实保留了类似的安全模型。
完全没有理由,您的应用程序首先不需要与系统文件夹混淆。如您所知,Windows为应用程序提供了许多临时和永久存储数据的位置。长期以来,Microsoft一直建议您利用这些文件夹:即使在以前的Windows版本下,它们也是存储数据的首选位置。您忽略了此建议,但您的应用程序仍可以继续工作的事实实际上是一个错误。Windows的更高版本最终关闭了该安全漏洞,从而破坏了您的应用程序,这一事实既不应是意外的,也不应该被人们所理解。
您可以在此页面上找到有关将数据存储在何处的更多信息。另请参阅此博客文章,该文章试图将一系列技术文档汇总到一个方便的表格中。与往常一样,Raymond Chen提供了有关位置之间差异的简单但有启发性的概述:
我的文档和应用程序数据之间最重要的区别在于,我的文档是用户存储文件的位置,而应用程序数据是程序存储文件的位置。
换句话说,如果您在CSIDL_MYDOCUMENTS(我的文档)中放置了某些内容,则应该期望用户对其进行重命名,移动,删除,将其通过电子邮件发送给他们的朋友,这些都是用户对其文件进行的所有操作。因此,转到那里的文件应该是用户会识别为“他们的东西”的东西。他们创建的文档,下载的音乐等等。
另一方面,如果您将某些内容放入CSIDL_APPDATA(应用程序数据)中,则用户不太可能将其弄乱。在这里,您可以放置程序的支持数据,这些数据实际上并不是您希望用户弄乱的东西,但仍应与用户相关联。高分表,程序设置,自定义,拼写检查异常...
还有一个名为CSIDL_LOCAL_APPDATA(Local Settings \ Application Data)的目录,其作用类似于CSIDL_APPDATA,但是如果用户配置文件漫游,该目录不会被复制。(“本地设置”分支不会作为漫游用户配置文件的一部分进行复制。)可以将其视为每个用户每个计算机的存储位置。缓存和类似的非必要数据应保存在此处,特别是如果它们很大。非漫游每用户数据的其他示例是您的%TEMP%目录和Internet临时目录。
TA贡献1810条经验 获得超4个赞
一个非常普遍的新手误解是,程序设置可以保存在与可执行文件相同目录下的文本文件(例如INI文件)中。从概念上讲这是错误的。一方面,这将使按用户设置成为不可能!但是由于Windows Vista的“虚拟存储”兼容性功能,行为不端的程序仍可以在Vista上运行,此外,它们开始有效地采用每个用户的设置。这对Microsoft来说是+1(对于抱怨它的人来说是-1!)。
- 2 回答
- 0 关注
- 531 浏览
添加回答
举报