记一次误操作EasyBCD造成windows8.1引导丢失的问题

今晚把ubuntu12.04升级到了14.04,重启后发现ubuntu引导不了,于是进入windows8.1,使用EasyBCD修复了ubuntu的引导。结果由于误操作,把两个引导选项全部弄成了ubuntu,所以,只能进ubuntu了,win8.1进不了了。

下面说一下解决办法:

  1. 网上下载NTBOOTautofix_2.5.7.exe。进入ubuntu,把NTBOOTautofix随便放入一个分区中。
  2. 使用PE盘进入PE系统,在PE中找到NTBOOTautofix并打开,使用“自动修复”进行修复WIN8.1的引导。修复完成后会提示修复成功。
  3. 重启后直接进入win8.1,在win8.1中重新打开EasyBCD,把多余的启动项删除掉(我这里有2个ubuntu,一个win8.1),然后重新添加ubuntu,最后保存。
  4. 重启后,ubuntu和win8.1的引导都出现了,经测试可以成功引导。

问题解决。这里没有尝试PE系统是否可以支持USB的U盘。所以直接在ubuntu中把NTBOOTautofix_2.5.7放进去了。这是个好工具。

清除windows系统打开文档历史记录

系统默认选项总会保留用户近期所打开文档的历史记录,对于某些用户确实很方便,但在公用计算机上,却没人想让其他人知道自己的所做所为。
(1)打开注册表编辑器。(“开始”-“运行”栏输入“regedit”即可)
(2)打开HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version\Policies\Explorer子键。
(3)新建双字节值NoRecentDocsHistory,数值设为1 表示禁止[文档]进行历史记录的保留,数值为0时表示允许。
(4)重启电脑后可见效果。

C++应用程序在Windows上的启动过程

一个C++应用程序的启动过程:

其实是系统调用CRT,然后CRT调用的WinMain.

a.shell调用CreateProcess激活App.exe
b.系统产生一个进程内核对象,使用计数值加1
c.系统为此进程产生4GB的地址空间
d.加载器将必要的码加载到上述地址空间中,包括App.exe的程序,资料以及所需要的dll。它们被记录在可执行文件PE格式的.idata section中。
e.系统为此进程建立一个执行线程,即主线程。执行线程才是CPU时间的分配对象。
f.系统调用C Runtime函数库的StartUp code
g.startup code调用APP程序的WinMain函数
h.APP程序开始运作
i.使用者关闭APP,退出消息循环,退出WinMain函数
j.返回到startup code
k.返回到系统,系统调用ExitProcess结束进程。