百科问答小站 logo
百科问答小站 font logo



Windows 的注册表是个好的设计吗? 第1页

  

user avatar   wdhwg001 网友的相关建议: 
      

为啥我觉得都没答到点子上…注册表作为一个数据库,数据库的常见优势都是有的,但这并不能说明注册表设计是成功的——因为它有很显著的缺点。

首先是数据类型设计失败。注册表最大的问题就是“只有软件本身才知道这些项怎么改”,而这和注册表极其失败的数据类型设计是分不开的。

在人类的逻辑里,设置项首先要支持的是enum,因为enum可以清晰的看到有哪些可选项,枚举的名字也可以表达它的含义,但是注册表不支持enum,大家都是要么用字符串要么用数字代替的,前者让用户不知道有什么可选,后者让用户不知道选项是什么意思。

除了没有enum,注册表也不支持布尔型、路径和日期,甚至不支持单独的guid类型,大家同样只能hack,最终造成注册表里遍地都是不明所以的配置项,出了问题改注册表像是某种魔法操作一样。

另一个重大的失误是缺少应用级的注册表数据隔离。这个仿佛脑子进水一般的决定充满着geek对应用程序会乖乖遵守节操的幻想。而其结果,就是无论怎样都卸载不完整的应用程序和如同散沙一般的配置项存储位置了。

在已经犯下这么多严重设计失误的情况下,注册表还有另一败笔——层级设计极度失败。CurrentVersion是什么?正常的正确的搞个revision管理很难吗?HKCR里那一堆又是什么?扩展名和文件类型名分开成两个目录很难吗?Software里到底应该放厂名还是软件名?Windows是Software还是System?WindowsNT这么多年了还和Windows分开?

以上,虽然这些都完全不能改了,但依然忍不住想吐槽。

注册表就是个除了数据库的优势以外全是屎的屎山。




  

相关话题

  dos时代的doublespace磁盘压缩现在是windows的什么程序? 
  win10为什么不能一键关机? 
  微软宣布 Windows 11 将会在 10 月 5 日正式推送,你会第一时间更新「尝鲜」吗? 
  如何看待微软的 Windows 10 Cloud? 
  WannaCry 勒索软件事件对微软的业务会产生正面还是负面影响? 
  我的win10应用商店的默认安装文件夹为什么不能更改? 
  Mac采用了ARM芯片对Windows及整个PC行业将产生什么影响?其竞争对手会怎样应对? 
  Windows系统也是使用X Window协议的吗?后续的Linux为什么没有将图形实现集成在内核? 
  x86/x64 的处理器和 32/64 位的系统有什么关系? 
  为什么 Windows 上的第三方软件对高清屏支持这么差? 

前一个讨论
为什么虚数不能比大小?
下一个讨论
2022 年最适合写业务代码的编程语言是哪个?





© 2025-06-14 - tinynew.org. All Rights Reserved.
© 2025-06-14 - tinynew.org. 保留所有权利