Winver:修订间差异
跳转到导航
跳转到搜索
无编辑摘要
正义羊-JRJSheep(讨论 | 贡献) (→注) |
无编辑摘要 |
||
| 第 8 行: | 第 8 行: | ||
<code>winver</code> 是 Windows 版本(Windows Version)的缩写,是大多数 [[Microsoft Windows]] 版本中包含的实用程序,用于获取有关操作系统版本的信息。根据 Windows 版本的不同,此工具在基于 DOS 的 Windows 和 Windows NT 上的文件版本信息中也分别称为 Windows 版本实用程序(Windows-version utility)或版本报告小程序(Version Reporter Applet)。 | <code>winver</code> 是 Windows 版本(Windows Version)的缩写,是大多数 [[Microsoft Windows]] 版本中包含的实用程序,用于获取有关操作系统版本的信息。根据 Windows 版本的不同,此工具在基于 DOS 的 Windows 和 Windows NT 上的文件版本信息中也分别称为 Windows 版本实用程序(Windows-version utility)或版本报告小程序(Version Reporter Applet)。 | ||
== 历史 == | |||
它最初是在 [[Windows 3.0]] 中引入的,在那里它被实现为一个简单的消息框,其中包含 Windows 徽标、主要和次要版本号、版权声明以及有关当前活动操作模式的信息。此工具还包括一个自定义的 [[MS-DOS]] 可执行存根,用于将版本信息打印到屏幕上。在整个经典的 Windows 系列中,它几乎没有变化,[[Windows 3.1]] 只更改了徽标,而 [[Windows 95]] 将版本信息简化到操作系统名称。 | 它最初是在 [[Windows 3.0]] 中引入的,在那里它被实现为一个简单的消息框,其中包含 Windows 徽标、主要和次要版本号、版权声明以及有关当前活动操作模式的信息。此工具还包括一个自定义的 [[MS-DOS]] 可执行存根,用于将版本信息打印到屏幕上。在整个经典的 Windows 系列中,它几乎没有变化,[[Windows 3.1]] 只更改了徽标,而 [[Windows 95]] 将版本信息简化到操作系统名称。 | ||
在基于 NT 的 Windows | 在基于 NT 的 Windows 版本中,该工具自 [[Windows NT 3.1]] 起便被纳入系统,其实现方式与16位版本类似——仅以一个简易窗口呈现,显示 Windows 徽标、版本号、构建号及版权声明。然而从 [[Windows NT 3.5]] 开始,该工具仅显示外壳关于框,除版本号和版权声明外,还包含计算机信息、注册所有者及可用内存容量等内容。 | ||
== 实现 == | |||
=== Windows NT 3.5 及更高版本 === | |||
在不包含独立 <code>winver.exe</code> 可执行文件的 Windows 版本(如 Windows Server Core 或 [[Windows 预安装环境]])上,可以使用 <code>rundll32 shell32,ShellAbout</code> 命令调用此对话框。但是,当以这种方式调用时,对话框将不包含时间炸弹信息,原因在于此功能是小程序独有的。以这种方式调用时,对话框标题将显示乱码,这是因为 <code>rundll32</code> 预期的参数与函数的实际签名之间存在差异。{{efn|<code>rundll32</code> 期望被调用函数具有 {{code|void CALLBACK EntryPoint (HWND hWnd, HINSTANCE hInst, LPSTR lpszCmdLine, int nCmdShow)|c}} 的签名。标题栏中的乱码应用程序名称(<code>MZ</code> 或 mojibake,具体取决于使用的是 API 的 -A 还是 -W 变体)是 <code>ShellAbout</code> 尝试将 <code>shell32.dll</code> 的可执行标头分析为零终止字符串字符串的结果。这是由第二个参数不匹配引起的,其中 <code>ShellAbout</code> 需要指向字符串的指针,而 <code>rundll32</code> 提供 DLL 的 <code>HINSTANCE</code>,在 Win32 中是指向内存中加载模块的指针。}} | 在不包含独立 <code>winver.exe</code> 可执行文件的 Windows 版本(如 Windows Server Core 或 [[Windows 预安装环境]])上,可以使用 <code>rundll32 shell32,ShellAbout</code> 命令调用此对话框。但是,当以这种方式调用时,对话框将不包含时间炸弹信息,原因在于此功能是小程序独有的。以这种方式调用时,对话框标题将显示乱码,这是因为 <code>rundll32</code> 预期的参数与函数的实际签名之间存在差异。{{efn|<code>rundll32</code> 期望被调用函数具有 {{code|void CALLBACK EntryPoint (HWND hWnd, HINSTANCE hInst, LPSTR lpszCmdLine, int nCmdShow)|c}} 的签名。标题栏中的乱码应用程序名称(<code>MZ</code> 或 mojibake,具体取决于使用的是 API 的 -A 还是 -W 变体)是 <code>ShellAbout</code> 尝试将 <code>shell32.dll</code> 的可执行标头分析为零终止字符串字符串的结果。这是由第二个参数不匹配引起的,其中 <code>ShellAbout</code> 需要指向字符串的指针,而 <code>rundll32</code> 提供 DLL 的 <code>HINSTANCE</code>,在 Win32 中是指向内存中加载模块的指针。}} | ||
=== Windows 2000 === | |||
在开发Windows 2000期间引入[[时间炸弹]]机制后,<code>winver</code>被更新为可查询定时炸弹相关信息,若存在该机制,则会在关于框中显示其状态。 | |||
=== Windows 8 === | |||
为防止进一步泄露并追踪泄露版本的安装情况,该小程序还添加了红色文字提示,说明未经授权用户使用该版本可能导致法律责任,并可能引发刑事诉讼等不可预见的后果。在 Windows 8.1 开发阶段,这些提示信息仍以临时形式存在,但后来被移除,自 Windows 指纹识别服务重新构建后便再未出现。 | |||
=== Windows 10 和 11 === | |||
自 [[Windows 10]] 起,该小程序收到了渐进式的更新,通过引入注册表键来定义当前版本,这些版本会显示在“Version”标签之后。2020 年,为了区分开发版和与发布相关的 Windows 版本,引入了一个新的“Dev”版本,该版本随后暂时消失,并自 [[Windows 11]] [[Dilithium]] 版本起重新出现,在 [[Windows 11 Build 28000.1.br_release.251103-1709|build 28000]] 之前一直沿用该版本。 | |||
== 图库 == | == 图库 == | ||
| 第 21 行: | 第 33 行: | ||
Winver-wfw3.11.png|[[Windows for Workgroups 3.11]] | Winver-wfw3.11.png|[[Windows for Workgroups 3.11]] | ||
Winver-wfw3.11-fromDOSprompt.png|[[Windows for Workgroups 3.11]] (from DOS) | Winver-wfw3.11-fromDOSprompt.png|[[Windows for Workgroups 3.11]] (from DOS) | ||
Winver-win95.png|[[Windows 95]] | Winver-win95.png|[[Windows 95]] | ||
Windows-98-4.10.1998-About.png|[[Windows 98]] | |||
Windows-ME-4.90.3000-About.png|[[Windows Me]] | |||
</gallery> | </gallery> | ||
| 第 33 行: | 第 47 行: | ||
WindowsVista-RTM-About.png|[[Windows Vista]] | WindowsVista-RTM-About.png|[[Windows Vista]] | ||
Windows7-RTM-About.png|[[Windows 7]] | Windows7-RTM-About.png|[[Windows 7]] | ||
8014-About.png|[[Windows 8 Build 8014.0.fbl_grfx_dev1.110525-1700|Windows 8 Build 8014]] | 8014-About.png|[[Windows 8 Build 8014.0.fbl_grfx_dev1.110525-1700|Windows 8 Build 8014]],并警告未经授权的使用 | ||
Windows8-RTM-About.png|Windows 8 | |||
Windows81-RTM-About.png|[[Windows 8.1]] | |||
Windows10-10.0.10240-Winver.png|[[Windows 10]] | |||
Windows11-10.0.22000.194-Winver.png|[[Windows 11]] | |||
</gallery> | </gallery> | ||