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

news2024/12/27 13:51:53

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 公司的产品仍然更受欢迎。消费者可能不理解他们产品中的“某些方面”,但他们显然理解“让足够多的人满意到愿意为之付费”的重要性。

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

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

相关文章

智能工业相机哪家好?

一、什么是智能工业相机 在工业自动化的浪潮中&#xff0c;智能工业相机扮演着至关重要的角色。它们如同工业领域的“眼睛”&#xff0c;为生产过程提供精准的视觉监测和数据采集。然而&#xff0c;面对众多的智能工业相机品牌&#xff0c;如何选择一款真正适合的产品成为了众多…

Python面试十问

一、深浅拷贝的区别&#xff1f; 浅拷⻉&#xff1a; 拷⻉的是对象的引⽤&#xff0c;如果原对象改变&#xff0c;相应的拷⻉对象也会发⽣改变。 深拷⻉&#xff1a; 拷⻉对象中的每个元素&#xff0c;拷⻉对象和原有对象不在有关系&#xff0c;两个是独⽴的对象。 浅拷⻉(c…

Python量化炒股的数据信息获取— 获取上市公司股东和股本信息

Python量化炒股的数据信息获取— 获取上市公司股东和股本信息 获取上市公司股东和股本信息&#xff0c;即获取上市公司的十大股东信息、十大流通股东信息、股东股份质押信息、股东股份冻结信息、股东户数信息、大股东减持信息和上市公司股本变动信息。 获取上市公司的十大股东…

一、运维概述

章节目标 了解运维的基本概念了解企业的运行模式了解操作系统发展史以及作用 一、运维的基本概念 1、什么是运维&#xff1f; 在技术人员&#xff08;写代码的&#xff09;之间&#xff0c;一致对运维有一个开玩笑的认知&#xff1a;运维就是修电脑的、装网线的、背锅的岗位…

力扣hot100:199. 二叉树的右视图/437. 路径总和 III(dfs/回溯/树上前缀和/哈希表)

文章目录 一、LeetCode&#xff1a;199. 二叉树的右视图二、LeetCode&#xff1a;437. 路径总和 III 一、LeetCode&#xff1a;199. 二叉树的右视图 LeetCode&#xff1a;199. 二叉树的右视图 差点因为是个中等题打退堂鼓。其实比较简单。 右视图实际上只需要找到&#xff0c…

编译 x264 for iOS

文章目录 编译在 FFMpeg 启用 x264其他编译选项报错处理 环境 &#xff1a; macOS 14.3.1 x264 - 20191217-2245 编译 1、下载 x264 源码 http://download.videolan.org/pub/videolan/x264/snapshots/ 这里我下载x264-snapshot-20191217-2245.tar.bz2 &#xff08;截止2024-…

sql注入工具-​sqlmap

介绍&#xff1a; sqlmap是一款开源的自动化SQL注入工具&#xff0c;用于自动化检测和利用Web应用程序中的SQL注入漏洞。它具有强大的参数化查询和自定义注入脚本的功能&#xff0c;可以通过检测和利用SQL注入漏洞来获取数据库的敏感信息&#xff0c;如用户名、密码和其他重要…

Dockerfile镜像实例

目录 一、构建SSH镜像 1. 建立工作目录 2. 生成镜像 3. 启动容器并修改root密码 二、systemctl镜像 1. 建立工作目录 2. 生成镜像 3. 运行镜像容器 ​编辑 4. 测试容器systemct 三、Nginx镜像 1. 建立工作目录 2. 编写Dockerfile脚本 3. 编写run.sh启动脚本 4. …

Java之SimpleDateFormat

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在多线程环境下,当多个线程同时使用相同的SimpleDateFormat对象(如stat…

数据结构---时间复杂度+空间复杂度

算法(algorithm)简单说就是解决问题的方法。方法有好坏&#xff0c;同样算法也是&#xff0c;有效率高的算法&#xff0c;也有效率低的算法。衡量算法的好坏一般从时间和空间两个维度衡量&#xff0c;也就是本文要介绍的时间复杂度和空间复杂度。有些时候&#xff0c;时间与空间…

(三)JVM实战——对象的内存布局与执行引擎详解

对象的内存布局 对象的实例化 对象的创建方式 - new的方式 - Class的newInstance():反射的方式 - Construct的newInstance() - clone:实现Cloneable接口,默认浅拷贝 - 使用反序列化&#xff1a;将二进制流转化为内存对象 创建对象的步骤 - 判断对象对应的类是否加载、链接、初…

RabbitMQ之生产批量发送

为什么要用生产批量发送&#xff1f; 批量发送消息&#xff0c;可以提高MQ发送性能。但是 RabbitMQ 并没有提供了批量发送消息的 API 接口,使用 spring-amqp 的 BatchingRabbitTemplate 实现批量能力。 SimpleBatchingStrategy 发送策略满足以下规则会进行发送&#xff1a; ba…

扩展学习|国内外用户画像相关进展一览

文献来源&#xff1a;徐芳,应洁茹.国内外用户画像研究综述[J].图书馆学研究,2020(12):7-16.DOI:10.15941/j.cnki.issn1001-0424.2020.12.002. 一、用户画像的概念 用户画像概念一经提出,便被广泛应用到精准营销等领域。后来,作为一种描绘用户特征、表达用户诉求的有效工具,用户…

Angular进阶-NVM管理Node.js实现不同版本Angular环境切换

一、NVM介绍 1. NVM简介 Node Version Manager&#xff08;NVM&#xff09;是一个用于管理多个Node.js版本的工具。它允许用户在同一台机器上安装和使用多个Node.js版本&#xff0c;非常适合需要同时进行多个项目的开发者。NVM是开源的&#xff0c;支持MacOS、Windows和Linux…

LLM应用:工作流workflow创建自定义模版使用

参考: https://www.coze.cn/ 本案例是在coze平台上操作的,也有其他工具支持工作流的创建例如dify;也例如图像生成的comfyui工作流工具 创建自定义模版 可以根据自己需求创建自己的工作流工具;本文案例是创建一个联网搜索的LLM应用: 创建工作流页面: https://www.coze.c…

Java面试——不安全的集合类

​ 系统性学习&#xff0c;移步IT-BLOG-CN Java 中有许多的集合&#xff0c;常用的有List&#xff0c;Set&#xff0c;Queue&#xff0c;Map。 其中 List&#xff0c;Set&#xff0c;Queue都是Collection&#xff08;集合&#xff09;&#xff0c;List中<>的内容表示其中…

Linux CPU 飙升 排查五步法

排查思路-五步法 1. top命令定位应用进程pid 找到最耗时的CPU的进程pid top2. top-Hp[pid]定位应用进程对应的线程tid 找到最消耗CPU的线程ID // 执行 top -Hp [pid] 定位应用进程对应的线程 tid // 按shift p 组合键&#xff0c;按照CPU占用率排序 > top -Hp 111683.…

华为手机ip地址怎么切换

随着移动互联网的普及&#xff0c;IP地址成为了我们手机上网的重要标识。然而&#xff0c;在某些情况下&#xff0c;我们可能需要切换手机的IP地址&#xff0c;以更好地保护个人隐私、访问特定地区的内容或服务&#xff0c;或者出于其他网络需求。华为手机作为市场上的热门品牌…

【uniapp】H5+、APP模拟浏览器环境内部打开网页

前言 今天将智能体嵌入到我的项目中&#xff0c;当作app应用时&#xff0c;发现我使用的webview组件&#xff0c;无论H5怎么登录都是未登录&#xff0c;而APP却可以&#xff0c;于是进行了测试&#xff0c;发现以下几种情况&#xff1a; 方法<a>标签webviewAPP✅✅网页…

Spring扩展点(一)Bean生命周期扩展点

Bean生命周期扩展点 影响多个Bean的实例化InstantiationAwareBeanPostProcessorBeanPostProcessor 影响单个Bean的实例化纯粹的生命周期回调函数InitializingBean&#xff08;BeanPostProcessor 的before和after之间调用&#xff09;DisposableBean Aware接口在生命周期实例化过…