时间:2022-08-06 点击: 次 来源:网络 添加者:佚名 - 小 + 大
最简单的例子就是chrome浏览器,由于chrome是静默安装,会自动安装到 C:\Users\你的用户名\AppData\Local\Google\Chrome下面。 还有telegram的默认安装位置也是这样的,那么问题来了:明明提供了programfiles文件夹,为什么还要在appdata释放文件呢? 在XP之后,从Vista开始,Windows系统开始有更严格的权限控制。在这之前XP等,哪些是系统的,那些是用户相关的,其实并没有很清楚的划分。那么一个本地用户如果是管理员的话,从登陆开始就可以毫无阻碍,基本毫无区别的访问各种目录。这是有隐患的,因为不小心就把系统相关的东西搞坏了。也给很多病毒木马可乘之机。 所以从(失败的)Vista开始有更严格的控制。基本概念就是,即便是管理员,在访问一些关键目录时候一样会显示的要求提升权限。这样增加系统的安全性。Program Files就是系统目录之一。(当然不止这么简单,但与问题关系不大) 但这不是重点。重点是,在这之前,很多程序有一种陋习,直接把软件的数据写到安装目录下,也就是Program Files! 软件这样设计也好理解,毕竟自己的安装目录下,操作读取都很方便嘛。而且很绿色,要搬迁到另一个计算机,直接copy整个目录就一锅端了....但这样就有一个问题是软件甲既然可以写Program Files目录,那么没有理由不允许写这个目录下其他软件的目录....如果所有的软件都没有错误,也没有恶意当然还好,但是.... 我当时还有个软件为了藏注册码写system32这种可耻事情我就不提了。 所以,权限管理严格后,如果一个软件有数据,那么就必须写到用户目录下。这个用户目录是跟用户有关的(废话),也就是说用户甲看到的App Data和同一个计算机下用户乙看到的实际上不是同一个地方。正常情况下,程序安装到Program Files这对所有用户都是可见的统一的,所以软件一旦安装,所有用户都可以用。如果有数据,那么每个用户写道自己的数据目录,互不干扰。好了,问题看上去解决的很好! 但是。软件并非都是按照计算机授权的。如果一个软件拷贝,只能授权给一个用户,或者只能绑定到一个用户数据上,那么显然安装到Program Files就不适合了(因为这意味着所有用户都可以看到)。而此时,用户目录下的AppData就是个很好的选择。 Chrome虽然是免费,但其跟Google账号绑定,里面有每个人的密码,书签,使用习惯....再加上每个人喜欢的浏览器不同,那么把安装使用Chrome作为一种个人习惯来看待可能更为适合。所以,最好的选择就是App Data了。 总结,如果你的软件是给一台电脑上所有人安装的,安装到Program Files。如果你的软件是按照用户授权或者希望仅为当前用户安装,那么安装到App Data。 实际上,即便为所有用户安装,我觉得App Data也很有必要存在,因为在电脑上,和用户相关的(你放在这里的东西只跟当前用户有关,跟其他人无关),又确保程序读写无障碍的,只有两个推荐的地方, 1,Users\<Current User>\,一般包括App Data,Temp等 2,HK_CURRENT_USER\Software\<Program Name>\... 有趣的事情是Windows有很好的向下兼容性,所以我那个写system32的程序(Win98时代开发)现在Windows 10下还能运行。软件可以成功打开写入system32,只不过这里的system32是系统给软件暴露的一个虚拟目录,最终仍然会重新定向到User下....相比下mac OSX就真心差太远,每次他家系统一升级,都得心惊胆战的要把所有软件测试一遍,不兼容是常有的事情。要不是考虑OSX下的用户购买率高,早就不乐意支持他家的东西了。 |
上一篇:解决自行车空转非常简单的方法