翻译《The Old New Thing》 - Why does the CreateProcess function do autocorrection?

Why does the CreateProcess function do autocorrection? - The Old New Thing (microsoft.com)icon-default.png?t=N7T8https://devblogs.microsoft.com/oldnewthing/20050623-03/?p=35213

Raymond Chen 在 2005 年 6 月 23 日


为什么 CreateProcess 函数会进行自动更正?

译注:在文章中提到的 "CreateProcess function do autocorrection"(CreateProcess 函数进行自动更正)是指该函数在处理程序路径时的一种行为。具体来说,当一个程序在创建进程时传递给 CreateProcess 函数的可执行文件路径中包含空格,而没有使用引号正确地括起来,CreateProcess 函数会尝试自动更正这个问题,以确保程序能够正确地创建进程。

在早期的 Windows 系统中,一些程序在写入可执行文件路径到注册表时,并没有正确处理空格,因为在当时短文件名(SFN)路径中空格的使用非常罕见。因此,CreateProcess 函数在设计时需要考虑到这一点,以兼容那些没有正确处理空格的旧程序。

        没有考虑到长文件名处理的程序可能会犯下一些错误,比如在将可执行文件的路径写入注册表时,没有意识到路径中可能包含需要用引号括起来的空间。(虽然技术上允许,但在短文件名(SFN)路径中,空格的使用极为罕见。)

        CreateProcess 函数面临一个选择:是自动更正这些无效路径,还是让程序因此停止运行。

        这是一个实用主义与纯粹主义之间的较量。

        纯粹主义者可能会说:“让他们为他们的错误付出代价吧。我们不会为了迁就这种低级错误而破坏我们完美的架构。”然而,这种态度是有代价的:如果一个标榜“纯粹”的系统无法运行用户所需的程序,用户就不会选择使用它。

        换句话说,如果你的产品不能持续发展到 2.0 版本,那么无论 1.0 版本多么出色,都无济于事。

        你是选择“保持纯粹但无人问津”,还是“追求实用而广受欢迎”?历史上充满了许多技术上先进但因缺乏市场接受度而消亡的例子,如索尼的 Betamax 录像带、美泰的 Intellivision 游戏机(以及在美国,公制测量系统也是同样的命运)。

        电动汽车也是一个例子。尽管电动汽车非常出色,但它们在市场上从未取得过显著的成功。只有当它们放弃一定的“纯粹性”,通过增加汽油混合动力引擎来迎合市场口味时,电动汽车才最终获得了市场的认可。

        我不断看到这样的情况发生。比如,一个假设中的产品团队,他们制作了自动化绘图软件,可能会说:“我简直不敢相信我们在竞争中输给了 Z 公司。诚然,Z 公司的图表可能更快、更吸引人,但我们的软件在处理<微妙细节>上更为准确。当你遇到<极端情况>时,他们的图表会出现轻微的变形。他们之所以更快,是因为他们没有尝试防止在<场景 Q>中 X 和 Y 发生重叠。我们做到了这一切;这就是为什么我们的速度较慢,但也正因为如此,我们的产品更优秀。Z 公司的人根本‘不懂’。”

        你猜怎么着?消费者正在用他们的钱包做出选择,而他们当前的选择表明,尽管存在那些“可怕的缺点”,Z 公司的产品仍然更受欢迎。消费者可能不理解他们产品中的“某些方面”,但他们显然理解“让足够多的人满意到愿意为之付费”的重要性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

正则表达式_字符匹配/可选字符集

正则表达式&#xff08;Regular Expression&#xff09;也叫匹配模式(Pattern)&#xff0c;用来检验字符串是否满足特 定规则&#xff0c;或从字符串中捕获满足特定规则的子串。 字符匹配 最简单的正则表达式由“普通字符”和“通配符”组成。比如“Room\d\d\d”就这样 的正则…

农作物害虫检测数据集VOC+YOLO格式18975张97类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;18975 标注数量(xml文件个数)&#xff1a;18975 标注数量(txt文件个数)&#xff1a;18975 标…

MySQL-集群的高可用

MMM: Multi-Master Replication Manager for MySQL&#xff0c;Mysql主主复制管理器是一套灵活的脚本程序&#xff0c;基于perl实现&#xff0c;用来对mysql replication进行监控和故障迁移&#xff0c;并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的) …

【重难点算法题】设计哈希集合、哈希映射

文章目录 Tag题目来源解题思路方法一&#xff1a;链地址法 类似题目代码1代码2 写在最后 Tag 【哈希集合】【哈希映射】【链地址法】【数据结构设计】 题目来源 705. 设计哈希集合 解题思路 在解题之前需要先明确两组概念&#xff1a; 哈希表与散列表哈希函数与散列函数 上…

关于图形库

文章目录 1. 概念介绍2. 使用方法2.1 普通路由2.2 命名路由 3. 示例代码4. 内容总结 我们在上一章回中介绍了"使用get显示Dialog"相关的内容&#xff0c;本章回中将介绍使用get进行路由管理.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

分布式领域计算模型及SparkRay实现对比

目录 一、分布式计算领域概览 二、Spark计算模型分析 三、Ray计算模型分析 3.1 需求分析 3.2 系统设计 3.3 系统实现 四、总结 一、分布式计算领域概览 当前分布式计算模型主要分为以下4种&#xff1a; Bulk Synchronous Parallel Model&#xff08;块同步并行模型&…

视频下载器 UC网盘

老王导航 - 复杂问题找老王&#xff0c;简单问题百度搜 神器啊

入门2-分支结构

【深基2.习6】Apples Prologue / 苹果和虫子 题目描述 小 B 喜欢吃苹果。她现在有 m m m&#xff08; 1 ≤ m ≤ 100 1 \le m \le 100 1≤m≤100&#xff09;个苹果&#xff0c;吃完一个苹果需要花费 t t t&#xff08; 0 ≤ t ≤ 100 0 \le t \le 100 0≤t≤100&#xff0…

500行代码实现贪吃蛇(1)

文章目录 目录1. Win32 API 介绍1.1 Win32 API1.2 控制台程序&#xff08;Console&#xff09;1.3 控制台屏幕上的坐标COORD1.4 [GetStdHandle](https://learn.microsoft.com/zh-cn/windows/console/getstdhandle)1.5 [GetConsoleCursorInfo](https://learn.microsoft.com/zh-c…

LAME及 iOS 编译

文章目录 关于 LAME编译 for iOS 关于 LAME 官网&#xff1a;https://lame.sourceforge.io LAME是根据LGPL许可的高质量MPEG音频层III&#xff08;MP3&#xff09;编码器。 LAME的开发始于1998年年中左右。Mike Cheng 最开始将它作为针对8hz-MP3编码器源的补丁。在其他人提出…

python学习笔记----异常、模块与包(九)

一、异常 1.1 什么是异常 在Python中&#xff0c;异常是程序执行时发生的错误。当Python检测到一个错误时&#xff0c;它会引发一个异常&#xff0c;这可能是由于多种原因&#xff0c;如尝试除以零、访问不存在的文件&#xff0c;或者尝试从列表中获取不存在的索引等。异常处…

踏春正当时!VELO Prevail Ride带你探索多元骑行潮流体验~

嘿&#xff0c;朋友&#xff01;踏春正当时嘞&#xff01;在这个追求个性化与多元化的新时代&#xff0c;骑行爱好者们也开始寻找能适应各种骑行场景的理想坐垫。从悠闲自在的日常通勤&#xff0c;到热血沸腾的公路竞速&#xff0c;再到勇攀高峰的山地探险&#xff0c;维乐VELO…

【Linux—进程间通信】共享内存的原理、创建及使用

什么是共享内存 共享内存是一种计算机编程中的技术&#xff0c;它允许多个进程访问同一块内存区域&#xff0c;以此作为进程间通信&#xff08;IPC, Inter-Process Communication&#xff09;的一种方式。这种方式相对于管道、套接字等通信手段&#xff0c;具有更高的效率&…

论文辅助笔记:TimeLLM

1 __init__ 2 forward 3 FlattenHead 4 ReprogrammingLayer

总分420+专业140+哈工大哈尔滨工业大学803信号与系统和数字逻辑电路考研电子信息与通信工程,真题,大纲,参考书。

考研复习一路走来&#xff0c;成绩还是令人满意&#xff0c;专业803信号和数电140&#xff0c;总分420&#xff0c;顺利上岸&#xff0c;总结一下自己这一年复习经历&#xff0c;希望大家可以所有参考&#xff0c;这一年复习跌跌拌拌&#xff0c;有时面对压力也会焦虑&#xff…

【软件设计师】上午题

【软考】软件设计师plus 「软件设计师」 2022年下半年上午真题解析视频 计算机系统知识 22下 考点&#xff1a;指令系统之CISC vs RISC RISC指令系统整体特点是简单、精简 》指令种类少&#xff0c;但是指令功能强 考点&#xff1a;计算机系统组成 A属于运算器&#xff0c;…

第四节课《XTuner作业》

Tutorial/xtuner/personal_assistant_document.md at camp2 InternLM/Tutorial GitHub Tutorial/xtuner/personal_assistant_document.md at camp2 InternLM/Tutorial GitHub GitHub - InternLM/Tutorial at camp2 视频链接&#xff1a;https://b23.tv/BrTSfsl PDF链接&a…

【Delphi 爬虫库 3】使用封装好的 HTML 解析库对 HTML 数据进行解析

文章目录 解析HTML的意义1、简单解析HTML代码2、实战解析HTML代码 解析HTML的意义 HTML是Web页面的构建语言&#xff0c;每个Web开发者都需要了解HTML的基础知识。但是&#xff0c;通过手动阅读和解析需要极大的心智和时间投入。这时候&#xff0c;我们就需要使用HTML在线解析…

Mac 电脑安装 Raptor 流程图软件的方法

0. 安装逻辑 &#xff08;1&#xff09;运行 raptor&#xff0c;本质上需要 mac 能够运行 windows 程序&#xff0c;因此需要安装 .NET Runtime 7.0&#xff0c;这是微软程序运行必须的文件。 &#xff08;2&#xff09;运行 raptor 还需要安装依赖文件 mono-libgdiplus。 &am…

【C++】一篇文章带你熟练掌握<智能指针>及其模拟实现

目录 一、引入 二、智能指针的使用及原理 1、RAII 2、智能指针的原理 3、auto_ptr 4、unique_ptr 5、shared_ptr 6、weak_ptr 一、引入 我们先分析一下为什么需要智能指针&#xff1f; double Division(int a, int b) {// 当b 0时抛出异常if (b 0){throw invalid_a…