翻译《The Old New Thing》- Why are INI files deprecated in favor of the registry?

news2024/9/25 20:41:01

Why are INI files deprecated in favor of the registry? - The Old New Thing (microsoft.com)icon-default.png?t=N7T8https://devblogs.microsoft.com/oldnewthing/20071126-00/?p=24383

Raymond Chen 2007年11月26日


为什么弃用 INI 文件而改用注册表?

        欢迎,Slashdot的读者们。请记住,本网站仅供娱乐。为什么INI文件被弃用,而注册表取而代之?INI文件存在许多问题:

       注册表试图解决这些问题。你可能会争论这些顾虑是否合理,但 Windows NT 团队认为它们是合理的。

        评论者TC指出,钟摆又摆回了文本配置文件,但这次是XML。这样一来,INI 文件所存在的许多问题又重新出现了,但它有一个最大的优点,那就是没有人会向 XML 配置文件写入内容,他们只会从中读取。XML 配置文件不是用来存储用户设置的,它们只包含程序本身的信息。让我们再来看看这些问题。

       XML设法绕过了INI文件所拥有的许多问题,但前提是你承诺只从中读取(并且如果每个人都同意使用符合标准的解析器),以及如果你不需要超出文件级别的安全性细粒度。一旦你写入它们,那么许多INI文件问题就会重新出现。

  • INI文件不支持Unicode。尽管有私有配置文件函数的Unicode版本,但最终它们只是将ANSI文本写入INI文件。(有一种非常规的方法可以创建Unicode INI文件,但你必须超出API才能做到这一点。)在16位Windows中这不是问题,因为16位Windows也不支持Unicode!😓
  • INI文件的安全性不够细粒度。由于它只是一个文件,你设置的任何权限都是文件级别的,而不是键级别。你不能说,“任何人都可以修改这一节,但那一节只能由管理员修改。”在16位Windows中这不是问题,因为16位Windows没有安全性。😓
  • 多个写入者对INI文件可能导致数据丢失。考虑两个线程试图更新INI文件。如果它们同时运行,你可能会得到这样的结果
    线程1线程2
    读取INI文件
    读取INI文件
    写入INI文件 + X
    写入INI文件 + Y

    注意,线程2对INI文件的更新意外地删除了线程1所做的更改。在16位Windows中这不是问题,因为16位Windows是合作式多任务的。只要你在读取和写入之间不放弃CPU,你就是安全的,因为没有人能在你放弃之前运行。😁

  • INI文件可能会遭受拒绝服务。一个程序可以以独占模式打开INI文件并阻止其他人。如果INI文件被用来保存安全信息,这是很糟糕的,因为它阻止任何人查看这些安全设置。在16位Windows中这也是一个问题,但由于16位Windows没有安全性,一个想要对INI文件发起拒绝服务攻击的程序可以简单地删除它!
  • INI文件只包含字符串。如果你想存储二进制数据,你必须以某种方式将其编码为字符串。
  • 解析INI文件相对较慢。每次你在INI文件中读取或写入一个值,文件都必须被加载到内存中并解析。如果你向INI文件写入三个字符串,那么这个INI文件就被加载和解析了三次,并被写入磁盘三次。在16位Windows中,三个连续的INI文件操作只会解析一次,写入一次,因为操作系统是合作式多任务的。当你访问INI文件时,它被解析到内存并缓存。当你最终放弃CPU给另一个进程时,缓存会被刷新。
  • 许多程序打开INI文件并直接读取它们。这意味着INI文件格式被锁定,无法扩展。即使你想向INI文件添加安全性,你也不能。更重要的是,许多解析INI文件的程序都有缺陷,所以实际上你不能在INI文件中存储超过大约70个字符的字符串,否则会导致其他程序崩溃。
  • INI文件的大小限制为32KB。
  • INI文件的默认位置是Windows目录!这对Windows NT来说绝对是不好的,因为只有管理员才有写入权限。
  • INI文件只包含两个级别的结构。INI文件由节组成,每个节由字符串组成。你不能在一个节内放置其他节。
  • [9点添加] 集中管理INI文件很困难。由于它们可以在系统的任何地方,网络管理员不能编写脚本询问,“每个人都在使用最新版本的Firefox吗?”他们也不能部署脚本说“将每个人的Firefox设置设置为XYZ并拒绝写入访问,以便他们不能更改它们。”
  • XML文件支持Unicode。
  • XML文件的安全性不够细粒度。但由于XML配置文件是只读的,主要的反对意见被回避了。(但如果你想让只有管理员有权限读取XML的特定部分,那么你就麻烦了。)
  • 由于XML配置文件是只读的,你不必担心多个写入者。
  • XML配置文件文件可能会遭受拒绝服务。你仍然可以独占地打开它们并阻止其他进程。
  • XML文件只包含字符串。如果你想存储二进制数据,你必须以某种方式进行编码。
  • 解析XML文件相对较慢。但由于它们是只读的,你可以安全地缓存解析结果,所以你只需要解析一次。
  • 程序手动解析XML文件,但XML格式已经被锁定,所以你无论如何都不能扩展它,即使你想。希望这些程序使用符合标准的XML解析器而不是自己编写,但如果人们编写了自己的自定义XML解析器,可能会在处理指令或长于70个字符的字符串时出现问题,我也不会感到惊讶。
  • XML文件没有大小限制。
  • XML文件没有默认位置。
  • XML文件具有复杂结构。元素可以包含其他元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1700924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM学习-垃圾回收器(一)

垃圾回收器 按线程数分类 串行垃圾回收器 串行回收是在同一时间段内只允许有一个CPU用于执行垃圾回收操作,此时工作线程被暂停,直至垃圾收集工作结束 在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场合,串行回收器的性能表…

html5+css3+js学习记录(1)-- html

1 vscode前端插件 1.1 Web标准 2 文档声明与字符编码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpor…

一文教你如何调用Ascend C算子

Ascend C是CANN针对算子开发场景推出的编程语言&#xff0c;原生支持C和C标准规范&#xff0c;兼具开发效率和运行性能。基于Ascend C编写的算子程序&#xff0c;通过编译器编译和运行时调度&#xff0c;运行在昇腾AI处理器上。使用Ascend C&#xff0c;开发者可以基于昇腾AI硬…

【全开源】排队叫号系统源码(FastAdmin+GatewayWorker)

一款基于FastAdminGatewayWorker开发的多项目多场景排队叫号系统&#xff0c;支持大屏幕投屏&#xff0c;语音播报叫号&#xff0c;可用于餐厅排队取餐、美甲店排队取号、排队领取、排队就诊、排队办理业务等诸多场景&#xff0c;助你轻松应对各种排队取号叫号场景。 ​打造高…

Java中的JSON神器,如何轻松玩转复杂数据结构

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、揭秘JSON世界的基石 在Java的世界中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;它基于文本&#xff0c;易于阅读和编写&#xff0c;同时也易于…

易备数据备份软件:快速恢复 VMware ESXi 虚拟机

易备数据备份软件为 VMware ESXi 虚拟机提供完整的保护和备份功能。软件同时支持从 ESXi 或 vCenter 虚拟机的增量和差异备份中进行自动恢复。支持精细化的恢复&#xff0c;可将虚拟机恢复到某个特定的日期。 通过易备数据备份软件&#xff0c;可以实现虚拟机的异机恢复&#…

SuperSocket 协议

1、通过之前的学习&#xff0c;我们知道在SuperSocket中&#xff0c;客户端向服务器发送数据时需要以回车换行符“\r\n”结尾服务端才能够识别。这是因为SuperSocket的默认协议CommandLineProtocol&#xff08;命令行协议&#xff09;要求所致。SuperSocket还有以下常用的协议&…

事务报错没有显示回滚导致DDL阻塞引发的问题

在业务开发过程中&#xff0c;显示的开启事务并且在事务处理过程中对不同的情况进行显示的COMMIT或ROLLBACK&#xff0c;这是一个完整数据库事务处理的闭环过程。 这种在应用开发逻辑层面去handle的事务执行的结果&#xff0c;既确保了事务操作的数据完整性&#xff0c;又遵循了…

ROS2入门21讲__第21讲__ROS2应用与进阶攻略

资源汇总 常用框架 自主导航 比如移动机器人基本都会具备的自主导航功能&#xff0c;ROS2提供了完整的自主导航系统框架和各种实现好的算法&#xff0c;即便我们不开发任何代码&#xff0c;也可以在自己的机器人上&#xff0c;使用这套系统&#xff0c;快速实现自主导航的基本…

X-CSV-Reader:一个使用Rust实现CSV命令行读取器

&#x1f388;效果演示 ⚡️快速上手 依赖导入&#xff1a; cargo add csv读取实现&#xff1a; use std::error::Error; use std::fs::File; use std::path::Path;fn read_csv<P: AsRef<Path>>(filename: P) -> Result<(), Box<dyn Error>> {le…

40岁的戴尔在AI时代翻红了

戴尔公司股价创历史新高&#xff0c;市值达1138亿美元&#xff0c;涨幅110%。戴尔向AI押注多年&#xff0c;收购企业转型&#xff0c;成为数据基础设施厂商。AI服务器销售增长&#xff0c;分析师看好戴尔未来发展。 5月24日美股收盘&#xff0c;很多人可能不太关注的戴尔公司股…

华为OD机试【计算最接近的数】(java)(100分)

1、题目描述 给定一个数组X和正整数K&#xff0c;请找出使表达式X[i] - X[i1] … - X[i K 1]&#xff0c;结果最接近于数组中位数的下标i&#xff0c;如果有多个i满足条件&#xff0c;请返回最大的i。 其中&#xff0c;数组中位数&#xff1a;长度为N的数组&#xff0c;按照元…

MP3文件本地存储与下载指南

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、建立存储文件夹 三、获取MP3文件URL并下载 四、优化下载过程 五、总结与…

韩愈,文起八代之衰的儒学巨匠

&#x1f4a1; 如果想阅读最新的文章&#xff0c;或者有技术问题需要交流和沟通&#xff0c;可搜索并关注微信公众号“希望睿智”。 韩愈&#xff0c;字退之&#xff0c;生于唐代宗大历三年&#xff08;公元768年&#xff09;&#xff0c;卒于唐穆宗长庆四年&#xff08;公元82…

Activiti7_使用

Activiti7_使用 一、Activiti7二、绘制工作流三、通过代码部署流程&#xff0c;再对流程进行实例化&#xff0c;完整运行一遍流程即可四、在springbooot中使用 一、Activiti7 为了实现后端的咨询流转功能&#xff0c;学习Activiti7&#xff0c;记录下使用的过程及遇到的问题 二…

力扣 第 399 场周赛 解题报告 | 珂学家 | 调和级数 + 分块DP

前言 T1. 优质数对的总数 I 题型: 签到 class Solution:def numberOfPairs(self, nums1: List[int], nums2: List[int], k: int) -> int:res 0for v1 in nums1:for v2 in nums2:if v1 % (v2 * k) 0:res 1return resT2. 压缩字符串 III 思路: 模拟 感觉引入一个栈&…

通用代码生成器应用场景三,遗留项目反向工程

通用代码生成器应用场景三&#xff0c;遗留项目反向工程 如果您有一个遗留项目&#xff0c;要重新开发&#xff0c;或者源代码遗失&#xff0c;或者需要重新开发&#xff0c;但是希望复用原来的数据&#xff0c;并加快开发。 如果您的项目是通用代码生成器生成的&#xff0c;…

【量算分析工具-概述】GeoServer改造Springboot番外系列三

背景概述 GIS公司做软件产品&#xff0c;往往绕不开的是量算分析工具的开发和使用。例如做的比较好的火星科技的mars3d产品&#xff0c;如下图&#xff0c;但是往往这些工具都是利用Cesium框架进行前端计算的实现的&#xff0c;网上关于这些量算工具算法原理的文章少之又少&…

石英晶体谐振器的频率与电阻温度特性及其影响因素

石英晶体谐振器是一种常用的电子元件&#xff0c;其具有精确的谐振频率&#xff0c;广泛应用于各种电子设备中&#xff0c;如时钟、频率发生器、滤波器等。石英晶体谐振器的频率和电阻温度特性是评价其性能的重要参数。 1. 频率温度特性&#xff1a; 石英晶体谐振器的频率随温…

身为UI设计老鸟,不学点3D,好像要被潮流抛弃啦,卷起来吧。

当前3D原则在UI设计中运用的越来越多&#xff0c;在UI设计中&#xff0c;使用3D元素可以为界面带来以下几个价值&#xff1a; 增强视觉冲击力&#xff1a;3D元素可以通过立体感和逼真的效果&#xff0c;为界面增添视觉冲击力&#xff0c;使得设计更加生动、吸引人&#xff0c;并…