mon*_*bre 5 winapi uac special-folders windows-vista windows-7
我注意到在我的应用程序中,大多数兼容性问题是由某些文件夹的"访问被拒绝"引起的,例如:
Application Data [C:\ProgramData]
Desktop [C:\Users\Public\Desktop]
Documents [C:\Users\Public\Documents]
Favorites [C:\Users\Public\Favorites]
Start Menu [C:\ProgramData\Microsoft\Windows\Start Menu]
Templates [C:\ProgramData\Microsoft\Windows\Templates]
Run Code Online (Sandbox Code Playgroud)
Windows 7与Vista有同样的问题吗?在Stack Overflow成员的帮助下,我知道在Vista上我可以CSIDL_APPDATA用来启用文件访问而不会出现UAC问题或"访问被拒绝"错误.这对Windows 7也有效吗?
Cod*_*ray 18
这不是一个"问题",它是一个功能.它被称为用户帐户控制(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临时文件目录.
| 归档时间: |
|
| 查看次数: |
2548 次 |
| 最近记录: |