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



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

  

user avatar   wdhwg001 网友的相关建议: 
      

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

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

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

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

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

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

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

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




  

相关话题

  最近win11发布说兼容安卓,里面会不会有“com.android.xxx”的代码,是不是安卓套壳? 
  这种代码的思路是什么? 
  通过 Bochs 让高性能的 Android 手机流畅运行 Windows 虚拟机是否可行? 
  "正在准备windows请不要关闭你的计算机"这个交互设计是不是特别傻? 
  windows10 微软商店不见了 急!包括自带应用(如计算器、闹铃等)也不见了,防火墙也闪退怎么办? 
  为什么有很多的程序员觉得Linux比Windows更加方便,更加有效率? 
  如果 Windows10 开源会有什么后果? 
  为什么 macOS 上有流畅的 Windows 虚拟机,后者却没有流畅的 macOS 虚拟机? 
  如何让Windows 10系统桌面变得更好看? 
  如何让Windows 10系统桌面变得更好看? 

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





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