windows下手动修改/修复启动项

2023-05-16

众所周知
Windows操作系统主要依赖Boot.ini文件来确定计算机在引导过程中显示的可供选取的操作系统类别。系统安装时,会在引导分区的根目录中建立引导菜单文件 boot.ini。boot.ini 在缺省状态下被设定为隐含和系统文件属性,并且被标识为只读文件。使用这个文件可以轻松对电脑中的多系统进行引导,还可以通过该引导文件,设置个性化的启动菜单。

但是不同的硬盘格式引导方式是不一样的,目前基本分为mbr和gpt两种格式,而且两种格式的硬盘分区表也完全不同。
MBR分区表的硬盘最多能划分4个主分区磁盘,并且MBR最大支持2TB的硬盘,但是其兼容性较好。
而gpt作为一直较新的硬盘格式,没有分区划分限制,最大好像支持18个EB大(这里科普一下1eb=1024pb=1024×1024t),真的好大,我这个穷人不敢奢望那么大的硬盘。
mbr是“主引导记录”,它有自己的启动代码,一旦启动代码异常,系统就没法启动,只有通过修复才能启动系统。
gpt是一个正逐渐取代mbr的新标准,它由uefi辅住而形成的,这样就有了uefi用于取代老旧的bios,而gpt则取代老旧的mbr。磁盘驱动器容量可以大得多,大到操作系统和文件系统都没法支持。它同时还支持几乎有的64位的win10,win8,win7和Vista,以及所对应的服务器都能从gpt启动。

在MBR格式硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT格式硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。这个MBR也叫做保护性MBR。

回归主题,由此可知硬盘目前有mbr+bios启动和gpt+uefi启动,我们如果想实现硬盘格式的转换就需要更改一下启动文件了。
以我的一台win7虚拟机为例,其启动方式为mbr+bios 启动文件在C:\Windows\Boot\EFI中
在这里插入图片描述
主要文件都在这了,一般情况下就这些文件也不会出现变化,如果我们想将其更改为gpt+uefi启动的话就要在文件上做点手脚了。

先看看UEFI下Windows的启动流程:
UEFI BIOS→ESP分区→\efi\Microsoft\boot\bootmgfw.efi→efi\Microsoft\Boot\BCD→\Windows\system32\winload.efi→加载内核启动系统
我们需要划分出一块esp分区,这步可以借助分区软件来完成。在这里插入图片描述
我们可以在c盘前部划分500mb的空间,将划分出的重建为esp分区,这个分区是隐藏的。如图:在这里插入图片描述
那个esp分区使用来存放我们的启动文件,我们先来创建启动文件:
首先新建一个EFI文件夹。在这里插入图片描述
其次在该文件夹中新建两个文件:BOOT 和MICROSOFT
在这里插入图片描述
然后在回到我们原bios启动文件中,在这里插入图片描述
将这个文件复制到新建的BOOT文件夹中,改名为bootx64.efi x64是表示64位系统,
然后我们再回到原目录,全部复制,这次不做文件名
更改在这里插入图片描述
将文件复制到MICROSOFT中,打完收工。在这里插入图片描述
在这里插入图片描述再将创建完成的文件存放到esp分区中就ok了,这些操作可以在pe中完成,不放心的话用pe自带的uefi修复工具再修复下基本就ok了。

如果我写的有些复杂,可以看看另一位师傅写的:
https://blog.csdn.net/hq1097/article/details/81364147

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

windows下手动修改/修复启动项 的相关文章

  • 检测计算机何时解锁 Windows

    我用过这个优秀的方法 https stackoverflow com questions 20733441 lock windows workstation using python 20733443锁定 Windows 计算机 那部分工作
  • 设置 Form.KeyPreview = true 的缺点?

    我想知道 Form KeyPreview 属性实际上有什么用处 它为什么存在以及将其设置为 true 会带来什么 风险 我想它一定有some负面影响 否则它根本不应该存在 或者至少默认情况下是正确的 EDIT 我很清楚what确实如此 我问
  • Git 扩展 - 无法在 Windows 上推送到网络驱动器中的 git bare 存储库

    我正在 Windows 上学习 git 我已经安装了 Git 扩展 版本 2 47 3 并使用了它 我在我的 C 单元中创建了一个裸存储库 作为中央存储库 并在硬盘中的其他任何位置创建了个人存储库 我对硬盘中的这两个存储库进行提交 推送和拉
  • 在 Cygwin 软件包列表中找不到 Openssl

    这里说的是https github com joyent node wiki Building node js on Cygwin Windows https github com joyent node wiki Building nod
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 如何从Windows阻止社交媒体[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想根据时间阻止我的电脑上的社交媒体 晚上 9 点后屏蔽 上午 11 点后解锁 如家长控制 我尝试过关注但失败了 创建了
  • 对于多重继承,使用隐式转换而不是 QueryInterface() 是否合法?

    假设我有一个类实现两个或多个 COM 接口 正如here https stackoverflow com questions 1742848 why exactly do i need an explicit upcast when imp
  • 将 CrashDumps 转储到应用程序运行所在的同一文件夹中

    我编写了一个应用程序 我希望对其进行一定程度的自动调试 我想使用 Windows 错误报告将故障转储输出到应用程序运行所在的同一文件夹中 我的想法是 我可以让我的应用程序在它自己的文件夹中查找任何 dmp 文件 然后根据需要上传它们进行分析
  • 通过插件管理器在 Notepad++ 中配置代理设置

    我想在 Notepad 中配置代理设置 以允许通过代理从互联网下载 在从网上搜索如何执行此操作后 我了解到我需要通过 设置 按钮在插件管理器中执行此操作 当我转到插件 gt 插件管理器 gt 显示插件管理器 gt 设置时 我看到下面的对话框
  • 关闭有效句柄时,AppVerifier 报告“无效句柄 - 代码 c0000008”

    我有一个简单的测试程序 在运行时会失败并出现异常AppVerifier 程序重复STD INPUT HANDLE然后尝试使用关闭它CloseHandle 该程序运行良好 无需AppVerifier返回TRUE for CloseHandle
  • 获取自动热键中的可用屏幕区域

    我正在尝试编写一些简单的 AutoHotkey 脚本来移动窗口 但在获取正确的屏幕尺寸值时遇到问题 我试图获取屏幕上可用区域的大小 通常是全屏分辨率减去任务栏 也许还有任何其他停靠窗口 如 Vista 中的侧边栏 我发现的获取屏幕宽度的方法
  • 使用管理员权限打开cmd(Windows 10)

    我有自己的 python 脚本来管理我的计算机上的 IP 地址 它主要在命令行 Windows 10 中执行netsh命令 您必须具有管理员权限 这是我自己的计算机 我是管理员 运行脚本时我已经使用管理员类型的用户 Adrian 登录 我无
  • 将 kinit 与 keytab 文件一起使用时会发生什么

    希望对kinit和keytab文件的使用有更多的了解 例如 如果我已经为某个服务生成了一个密钥表文件 该服务通过以下方式注册到活动目录 ktpass mapuser to someuseraccount ktab k mykeytab a
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • SetWindowsHookEx 函数返回 NULL

    我正在研究 DLL 注入 但收到错误如下 挂接进程失败 87 参数不正确 目标进程和dll都是64位的 注入代码为 BOOL HookInjection TCHAR target TCHAR dll name https msdn micr
  • TRACKER:错误TRK0005:无法找到:“CL.exe”。该系统找不到指定的文件

    我尝试在 Windows 8 上的 Node js 项目中执行以下命令 npm 安装 电子邮件受保护 cdn cgi l email protection 但我收到一个错误 我不知道如何处理 TRACKER 错误TRK0005 无法找到 C
  • 将 OpenBLAS 链接到 MinGW

    我正在尝试链接OpenBLAS https www openblas net 图书馆与明GW w64 https mingw w64 org Windows 上的编译器 这是我的代码 include
  • 供所有 Win32 程序员在 Windows Aero Glass(DWM、GDI、GDI+)上绘图的文档和 API 示例

    我正在寻找良好的资源来学习使用 Win32 GDI API 或任何替代它的内容 以便使用 Win32 API 直接在玻璃窗体上进行绘制和绘制 当我使用 Delphi 时 我将其标记为 Delphi 或 Visual C 您能找到的任何代码示
  • 在 Vista 上调用 RPC 时出现“不支持操作”

    我的应用程序使用 Microsoft RPC 进行进程间通信 当两个进程在同一台机器上运行并且一个进程尝试调用声明为 IDL 表示法 的方法时 error status t rpcMethod in pipe byte parameter
  • Windows:更改与文件类型关联的应用程序的名称/图标

    我想将 Windows 中的文件类型与特定应用程序相关联 但我需要这样做 以便当用户打开 打开方式 菜单时 列表中应用程序的名称和图标是针对该文件类型自定义的 即 不仅仅是可执行文件的名称和图标 这是因为该二进制文件是一个通用二进制文件 可

随机推荐