久病成名医。在经历了电脑最近的备份、崩溃和恢复后,我对朝夕相处的Windows又多了几分了解。Windows 7是Windows XP之后微软最成功的操作系统,也是之后Windows 8和10的基础,因此本文介绍的内容都以Windows 7为环境。

Windows用户最熟悉的程序安装路径是C盘下的Program Files。在64位操作系统下,多出来了一个区分32位程序的Program Files (x86) 文件夹。许多用户为了防止操作系统重装时程序丢失,将软件都安装在d盘或其他硬盘分区中。无需安装的硬盘版(绿色)和程序员普遍使用的虚拟机加编译或源代码形式的工具,则直接保存在下载文件夹或同一个硬盘的其他目录下。以上大概就是普通Windows用户安装程序的几种情况。

新的软件打破了惯例。我们会注意到谷歌浏览器(以下简称Chrome)和其他一些软件既不允许用户选择安装路径,也没有安装到Program Files目录下,而是在C:\Users\[当前用户名]\AppData\Local路径下创建了专用的文件夹。要理解这些软件为什么被设计成如此行为,必须理解Windows中上述文件夹的作用。

首先AppData与下面提到的ProgramData都是隐藏的文件夹,要通过下列操作才能看到:

  1. 打开文件管理器(即开始菜单中选择计算机),在工具栏的“组织”下拉列表中,单击“文件夹和搜索选项”,显示文件夹选项对话框。
  2. 选中“查看”选项卡。
  3. 在高级设置的“隐藏文件和文件夹”条目下,选择“显示隐藏的文件文件夹和驱动器”。确定并关闭文件夹选项对话框。

ProgramData与AppData文件夹的含义与区别

这时在C盘下将能看到与Program Files并列的ProgramData文件夹。顾名思义,ProgramData文件夹就是用来保存各个程序的数据的,如配置、缓存和临时文件,其下建立了对应各个程序的子文件夹。

C盘下还有一个Users文件夹,当前计算机的所有账号都有一个同名的子文件夹于其中,此外还有名为Public和Guest这两个对应特殊账号的文件夹,这些文件夹中存放的是对应账号的环境和配置信息。每个账号的文件夹下,有一个名为AppData的隐藏子文件夹,其中存放的也是各个程序的数据,它与ProgramData的区别在于,ProgramData保存的是与账号无关的数据,也就是对一个程序的所有用户都相同的数据,例如一个画图软件的帮助文件;AppData保存的是特定于某个账号的数据,例如各个用户所画的图片文件。

Local、Locallow和Roaming文件夹的含义与区别

在AppData文件夹下,又存在Local、Locallow和Roaming三个子文件夹,它们是为企业、组织等多计算机多用户的环境而设置的。在这样的环境中,多个用户可能共享一台计算机,一名用户能够使用不同的计算机,用户登录的不是单台计算机,而是多台计算机组成的域。当一名用户使用不同的计算机时,他希望计算机看起来是一样的、使用习惯是一致的,这就要求前面所说的某个账号的环境和配置信息能够在计算机之间漫游(Roam)。Windows的做法是,用户登录到域服务器时,服务器将他的账号信息传输到他所用的计算机,保存在Roaming文件夹内;等到用户登出时,有可能更改过的Roaming文件夹内最新的账号信息又被上传回服务器。与之对应,Local文件夹内保存的则是仅仅存放于本机的账号信息,这些信息不必漫游,或者由于体积太大,不方便漫游,如浏览器的缓存。Locallow用于保存低级别的本机账号数据,现已很少使用。

对于家庭使用的个人计算机,不存在漫游的需要和可能性,账号信息基本上都保存在Local文件夹内。

Chrome为什么要安装在C:\Users\[当前用户名]\AppData\Local\Google\Chrome路径下?

既然一台计算机允许有多个账号访问,就存在账号权限的问题。上面提到Users路径下各个文件夹保存的是对应账号的数据。不同的账号不仅需要有分隔的位置以存放其数据,还必须控制数据的访问权限——每个账号只有权访问自己的数据。表现在Windows的存取控制列表上,就是每个账号的文件夹只有该账号和管理员、系统等特殊账号有权访问。再来看Program Files文件夹,管理员和系统等账号对该文件夹及其中的内容有完全权限,即可以读、写、修改、删除、列出文件夹内容、运行程序等等;普通账号只能读、列出文件夹内容和运行程序。换言之,只有管理员的特殊账号能够将程序安装于该文件夹内,普通账号可以使用这些程序,但不能安装、修改或删除。

在家用电脑上,我们都是以管理员账号登录,在很多情况下管理员甚至是唯一的个人身份账号,并且无需输入密码就登录。因此我们意识不到多账号和权限的问题,在Program Files或任何其他文件夹下安装、修改和删除程序都被视为理所当然。

在多用户通过不同账号访问一台计算机的环境中,权限的问题就会浮现出来。首先是普通账号没有权限在Program Files文件夹中安装程序。其次是即使管理员在该文件夹中安装好了供大家使用的程序,普通账号也无法进行更新。而我们知道Chrome是一款更新频繁的浏览器,为了确保任何账号使用计算机时都有权安装和更新、每个账号的浏览器都对其他账号透明从而免去浏览时的疑问和维护时的冲突,Google便强制将Chrome的程序和数据一道安装在C:\Users\[当前用户名]\AppData\Local\Google\Chrome路径下。因为AppData文件夹的本意是保存特定于某个账号的数据而非程序,才使得这一做法看上去有些奇怪。假如Users文件夹本来就被设计成不仅保存数据,也用于存放属于不同账号的程序,Chrome的做法就显得正常了。

谷歌浏览器为什么不能自定义安装路径?相关推荐

  1. win10子系统ubuntu文件夹位置_win10子系统(WSL)自定义安装路径

    1.下载linux安装包: 下载地址:https://docs.microsoft.com/en-us/windows/wsl/install-manual 官方提供的离线安装包有 Ubuntu 18 ...

  2. 安装MYSQL自定义安装路径

    安装MYSQL自定义安装路径 MYSQL8.0版本,使用开发者默认安装的话,会自动安装到C盘,有点小介意,所以又卸载重新安装了,卸载过程中遇到了一些小问题,MySQL Connector NET无法卸 ...

  3. WSL自定义安装路径

    1.官方提供的离线安装包下载地址 https://docs.microsoft.com/en-us/windows/wsl/install-manual2.下载LxRunOffline安装工具 下载地 ...

  4. 世界之窗6.0.0.170发布,支持自定义安装路径

    大家好, 今天发布6.0.0.170,本次版本主要支持自定义安装路径功能,欢迎大家使用. 如果大家在使用过程中遇到任何问题及有任何建议,欢迎到论坛发帖反馈. 主站下载地址:http://www.the ...

  5. 【mysql 5.7】 mysql5.7安装包以及安装教程及其过程详解 包含自定义安装路径

    目录 事件起因 5.7版本安装包下载 安装过程 事件起因 电脑已经用了三年了,c盘是只有128G买来有118G,因为使用了很久了,c盘几乎都快给占满了,然后怎么清理垃圾或是其他什么的软件都只剩下7-8 ...

  6. linux 如何自定义安装路径,Linux下安装mysql并自定义数据的存储路径

    安装mysql并自定义存储路径 1.在安装mysql前,创建一个存储数据的目录 mkdir -p /data/mysql 2.设置软链接 ln -s /data/mysql /var/lib/mysq ...

  7. Rust自定义安装路径

    1.下载安装包 下载地址:Install Rust - Rust Programming LanguageA language empowering everyone to build reliabl ...

  8. mysql 5.7自定义安装路径_Mysql5.7.18版本(二进制包安装)自定义安装路径教程详解...

    安装路径:/application/mysql-5.7.18 1.前期准备 mysql依赖 libaio yum install -y libaio 创建用户mysql,以该用户的身份执行mysql ...

  9. 谷歌浏览器chrome自定义安装

    谷歌浏览器chrome自定义安装 最近把电脑东西都清掉了,只留下系统,软件都要重新装,所以想着写一些安装教程,后面如果有需要可以重新翻回来看.部分参考的,部分根据个人需要做了一些调整,以及一些遇到的问 ...

  10. Chrome浏览器安装路径移动与错误代码释义

    一.Chrome移动安装路径方法 在安装软件的时候,软件一般会在安装之前提示用户配置自定义安装路径,但是Chrome浏览器(Chrome)居然没有提供自定义安装路径设置,即下载好Chrome后点击安装 ...

最新文章

  1. python List,切片的用法
  2. NLP:Transformer的简介(优缺点)、架构详解之详细攻略
  3. C语言学习之有一个分数序列2/1、3/2、5/3、8/5、13/8、21/13,……求出这个数列的前20项之和。
  4. python模拟页面调度LRU算法
  5. Cacti设置流量阀值实现邮件报警
  6. python 利器_python利器之切片
  7. C++ 命名空间(namespace)
  8. 《大道至简》最后两章读后感
  9. bat写的自动部署脚本
  10. 计算机二级C语言题库
  11. linux中的文本处理方法集锦
  12. 关于csrss.exe和winlogon.exe进程多、占用CPU高的解决办法
  13. 联想升级Win11后触摸板失灵怎么办?
  14. C. Petya and Exam
  15. pythonmathcot函数_NumPy数学函数介绍和用法
  16. 随着窗体大小变化改变控件的大小和字体
  17. 03.ReactDOM.render
  18. 一、如何下载JDK?
  19. Python多路IO复用之select
  20. java开发项目经验怎么写,最全指南

热门文章

  1. 2018.10.31国家统计局行政省市区数据and数据库建表
  2. Android实现AirPlay,DriodAirPlay开发
  3. 从高考落榜生到网络专家
  4. PHP-Web聊天室 一天即可打造自己的聊天室-严双双-专题视频课程
  5. 【小飞兔整站下载】整站下载器哪个好用_整站下载工具哪个好
  6. 剪贴板(下)-剪贴板查看器
  7. 我转行程序员的那一年(四)
  8. 量子计算机采用量子力学原理,量子计算机的工作是不是就是根据量子力学原理造的?...
  9. 常用贴片电阻、电容、电感封装
  10. 重庆理工大学c语言实验答案,重庆理工大学C语言实验答案.doc