[整理] Windows Api 调用 keybd_event 相关资料(VB)

发表于

keybd_event VB声明.

VB声明

Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

说明

这个函数模拟了键盘行动

参数类型及说明

  • bVkByte 欲模拟的虚拟键码
  • bScanByte 键的OEM扫描码
  • dwFlagsLong 零;或设为下述两个标志之一
    • KEYEVENTF_EXTENDEDKEY=&H1 指出是一个扩展键,而且在前面冠以0xE0代码
    • KEYEVENTF_KEYUP=&H2 模拟松开一个键
  • dwExtraInfoLong,通常不用的一个值。api函数GetMessageExtraInfo可取得这个值。允许使用的值取决于特定的驱动程序

注解

这个函数支持屏幕捕获(截图)。在win95和nt4.0下这个函数的行为不同

FFO宠物技能[转]

发表于
杂食类宠物 加强攻击类的技能都不能领悟    喂养:钢铁 、石盾 、魔甲、厚皮、驱毒、阳春、活筋、解封、祛病、醒脑


下面就是具体的宝宝技能列表了:

网友贴图
首先是物理系的肉食力量型宝宝:

夭夭:        收集、灵通、神力、饥渴、愚笨、 忠诚、刚力、蛮力
山狼:        收集、灵通、神力、饥渴、愚笨、 忠诚、刚力、蛮力
地藏小妖:    收集、灵通、神力、饥渴、愚笨、 忠诚、刚力
苍狼皇:      坐骑、收集、灵通、神力、饥渴、逃逸、愚笨、 忠诚、刚力、蛮力
毒蜘蛛:      坐骑、收集、灵通、神力、饥渴、逃逸、愚笨、 忠诚、刚力、蛮力
地翼魔:      坐骑、收集、灵通、神力、饥渴、逃逸、愚笨、 忠诚、刚力、蛮力
甜蜜粉粉兔: 收集、灵通、神力、饥渴、愚笨、 忠诚、逃逸、刚力、蛮力
甜蜜妖精:   收集、灵通、神力、饥渴、愚笨、 忠诚、逃逸、刚力、蛮力 



网友贴图
下面的是法系的
草食智力型宝宝:

海龟:       收集、灵通、饥渴、愚笨、 忠诚、回魂、霹雳、灵悟
大蜗牛怪:   收集、灵通、饥渴、愚笨、 忠诚、回魂、霹雳、
木制小飞兔: 收集、灵通、饥渴、愚笨、 忠诚、回魂、霹雳、灵悟
雪女:       收集、灵通、饥渴、愚笨、 忠诚、逃逸、回魂、霹雳、灵悟
水母球:     收集、灵通、饥渴、愚笨、 忠诚、逃逸、回魂、霹雳、灵悟
火鸟:       坐骑、 收集、灵通、饥渴、愚笨、 忠诚、逃逸、回魂、霹雳、灵悟
浪漫妖精:  收集、灵通、饥渴、愚笨、 忠诚、神力、逃逸、回魂、霹雳、灵悟
浪漫粉粉兔:收集、灵通、饥渴、愚笨、 忠诚、神力、逃逸、回魂、霹雳、灵悟 

网友贴图
还有就是通用的
杂食敏捷型宝宝:

鬼火:        收集、灵通、饥渴、愚笨、忠诚、逃逸、护主、钢铁
风精灵:      收集、灵通、饥渴、愚笨、 忠诚、逃逸、护主
独角兽:      坐骑、收集、灵通、饥渴、愚笨、忠诚、逃逸、护主、钢铁
大闸蟹:      坐骑、收集、灵通、饥渴、愚笨、忠诚、逃逸、神力、护主、钢铁、石盾
沙漠幻蝶:    收集、灵通、饥渴、愚笨、忠诚、逃逸、神力、护主、钢铁、石盾
干尸守卫:    收集、灵通、饥渴、愚笨、忠诚、逃逸、神力、回魂、护主、钢铁、石盾 


网友贴图
当然少不了我们
“十一”的珍宠哦:

妖狐:         收集、灵通、神力、饥渴、逃逸、愚笨、 忠诚、回魂、霹雳、灵悟
QQ糖:         收集、灵通、神力、饥渴、逃逸、愚笨、 忠诚、神力、刚力、蛮力
闪电鼠:        收集、灵通、饥渴、愚笨、 忠诚、逃逸、护主、钢铁、石盾
牛魔王:       收集、灵通、饥渴、愚笨、 忠诚、逃逸、神力、刚力、蛮力
人鱼公主:     收集、灵通、饥渴、愚笨、 忠诚、逃逸、神力、护主、钢铁、石盾
魔王飞天猪:   收集、灵通、饥渴、愚笨、 忠诚、逃逸、神力、回魂、霹雳、灵悟 

网友贴图

以上未提到的厚皮、魔甲、祛病、解封、活筋、醒脑、阳春宠物均可以在30时学到。由于QGG和QMM现存数量比较少,希望拥用的几位可以和我们说明下技能,方便大家了解。以上即为智囊团为大家奉上的宠物技能帖。。如有错误望及时指正。。也希望大家可以继续支持智囊团的工作。。
于QGG QMM 小囧 金小囧 吉祥鼠 如意鼠 葵乡仙子 红萼仙子 冰之火和兔王现存数量比较少,希望拥用的几位可以和我们说明下技能,方便大家了解

网友贴图宠物的技能

 技能       最低学习等级    技能作用
网友贴图收集  1  拥有自动拾取玩家周围半径75像素内物品的能力,等级每提高1级,收集半径提高5像素,各主城和新手村不能使用该技能,物品掉落1秒之后才开始收集,且每间隔1秒收集1个道具(主动)
网友贴图回魂  1  可以帮助玩家回复气血,每次回复消耗精气,直到玩家气血补满或精气完全消耗为止,升级回复量增加(主动)
护主  1  以自己的气血抵御玩家所受伤害的30%,损血比为300%,直到气血为1。技能等级每提升一级,损血比减少7%,最高30级(主动)
网友贴图神力  1  增加玩家负重,宠物每1点体质增加10点负重,升级无意义(被动)
网友贴图灵通  1  一定几率提高玩家所获得的经验值20%,升级几率增加(主动)
网友贴图逃逸  1  宠物自身体力低于10%时离开战斗回到玩家背包且不降低信赖度(被动)
网友贴图忠诚  1  拥有此天赋的宠物信赖度比其他宠物信赖度减少缓慢一倍,增长迅速一倍(被动)
网友贴图坐骑  5  可以被作为坐骑,成为骑宠,骑后移动速度增加,技能升级移动速度增加,16级可以达到最高移动速度,再升级无意义(主动)
网友贴图刚力  5  玩家物理攻击时18%几率造成额外伤害,效果为宠物每10点力量增加伤害6点。技能等级每提升一级,10点力量的伤害效果+1(主动)
网友贴图霹雳  5  玩家魔法攻击时18几率造成额外伤害,效果为宠物每10点智慧增加伤害6点。技能等级每提升一级,10点智慧的伤害效果+1(主动)
网友贴图饥渴的学子  5  宠物饥渴速度比普通宠物加快一倍,对所有技能领悟几率提高,升级无意义(被动)
网友贴图愚笨  5  宠物领悟任何技能的几率都略有降低,所有战斗技能等级提升1级`升级无意义(被动)
网友贴图钢铁  30  玩家受到物理攻击时,18%几率减少伤害,效果为宠物每10点敏捷减少3点伤害。技能等级每提升一级,10点敏捷的减伤效果+1(主动)
 网友贴图石盾  30  玩家受到魔法攻击时,18%几率减少伤害,效果为宠物每10点精神减少3点伤害。技能等级每提升一级,10点精神的减伤效果+1(主动)
网友贴图驱毒  30  5%几率清除玩家身上的中毒效果。技能等级每提升一级,几率增加1%(被动)
网友贴图阳春  30  5%几率清除玩家身上的冰冻效果。技能等级每提升一级,几率增加1%(被动)
网友贴图 活筋  30  5%几率清除玩家身上的石化效果。技能等级每提升一级,几率增加1%(被动)
网友贴图解封  30  5%几率清除玩家身上的封印效果。技能等级每提升一级,几率增加1%(被动)
网友贴图祛病  30  5%几率清除玩家身上的衰弱效果。技能等级每提升一级,几率增加1%(被动)
网友贴图醒脑  30  5%几率清除玩家身上的昏迷效果。技能等级每提升一级,几率增加1%(被动)
网友贴图蛮力  30  额外造成玩家物理攻击力3%的伤害。技能等级每提升一级,伤害提升1%(被动)
网友贴图灵悟  30  额外造成玩家魔法攻击力3%的伤害。技能等级每提升一级,伤害提升1%(被动)
网友贴图厚皮  30  提高物理吸收15点,技能等级每提升一级,吸收能力提升2点(被动)
网友贴图魔甲  30  提高魔法吸收15点,技能等级每提升一级,吸收能力提升3点(被动)

网友贴图宠物的坐骑速度
网友贴图

网友贴图六大热门宠物

通天魔虎和通天妖虎:降灵鞍速度:260,御灵鞍速度:375

仙麒麟和圣麒麟:降灵鞍速度:260,御灵鞍速度:325

天麒麟和地麒麟:降灵鞍速度:260,御灵鞍速度:375

[转载]CMD 批处理转 EXE,仅17K。

发表于

2008.06.04测试版

  1. 修正了转换小体积批处理脚本出现的问题;
  2. 修正了在16位色彩系统中显示主程序图标出现的问题;
  3. 增加了自动填写EXE文件扩展名的功能。

    至此,cmd2exe 除了保护脚本(cmd2exe界面变灰的那一项)功能没有完成外,其余功能已经实现。
    附件内有两个 CMD 及转换成的 EXE,其中一个 CMD 很小(5个字节),别一个较大(6K)。

2008.06.03测试版

  1. 增加了 BAT 文件的支持;
  2. 加入了鼠标拖放操作支持;
  3. 修正了隐藏CMD执行界面的BUG;

其它问题可能还存在,测试时注意:

  1. 加入图标时不要用大体积的图标,最好是32*32或48*48规格的图标。
    有些从网上下载的图标是图标组,一个文件中含有多个图标,体积也很大(多达几百K),
    这样的图标先用工具提取出32*32或48*48单个图标后,再用到 cmd2exe 中(如果这样的
    图标组中含有这两种规格的图标 cmd2exe 是可以处理的)。
  2. 不要用太小的 CMD 来试验,太小的CMD转成EXE后内存解压出错(本人也在找原因)。
  3. 吸引人的关键功能,隐藏临时目录的CMD还没有实现。

CMD2EXE - V2.8.6.1版

  1. 修正了不能插入超大图标的BUG;
  2. 修正了转成的EXE不能隐藏执行的BUG;
  3. 修正了转成的EXE不能自动结束的BUG;
  4. 所有中文字符串做入了资源文件;
  5. CMD批处理文件体积理论上无限(变态的16M,够用了!)。

正式版的 CMD2EXE 同样是17K,建议:

  1. 尽可能不要插入太大的图标;
  2. 有空的鸟人尽可能多作测试,功能测试和杀毒工具测试。

很顺利,总算完成,还有些特色:

  1. 绿色单文件,超小,才17K;
  2. 转换出来的EXE体积也很小;
  3. 具有基本的常用功能,加图标. 隐藏执行. 完毕删除等。

大家先测试一些日子,发现问题再完善,主要测试两方面:

  1. 功能测试,看看现有的功能是否正常;
  2. 避杀测试,看看会不会被杀毒工具查杀。

cmd2exe.gz

[原创] 将REG文件转换成CMD/BAT文件(REG与CMD混合编程)

发表于

批处理中经常需要使用注册表文件。一般的作法是使用命令 regedit /s 注册表文件.reg 其实根据.REG文件和.CMD文件的特性,可以合二为一。

.REG文件中;开头代表注释 .CMD文件中;开头并不影响执行。所以可以从这个方面入手。下面的注册表可以在右键菜单中添加一个MAKECAB项。

[健康知识] 睡眠与养生

发表于

一、睡眠的规则

  战国时名医文挚对齐威王说:“我的养生之道把睡眠放在头等位置,人和动物只有睡眠才生长,睡眠帮助脾胃消化食物,所以,所以睡眠是养生的第一大补,人一个晚上不睡觉,其损失一百天也难以恢复。”

  晚21点到凌晨5点为有效睡眠时间。人是动物,和植物同属于生物,白天(凌晨5点到晚上21点)活动产生能量,晚上(21点到凌晨5点)开始进行细胞分裂,把能量转化为新生的细胞,是人体细胞休养生息、推陈出新的时间,也是人随着地球旋转到背向太阳的一面。阴主静,是人睡眠的良辰,此时休息,才会有良好的身体和精神状态。这和睡觉多的婴儿长得胖、长得快,而爱闹觉的孩子发育不良是一样的道理。

  睡觉是养生的一大功能,养就是用大量的健康细胞去取代腐败的细胞,如一夜睡不着就换不了新细胞。如果说白天消亡一百万个细胞,一晚上只补回来五十万个细胞,这时你的身体就会出现亏空,时间长了,人就糠了,像糠萝卜似的。为什么世上有百岁老人呢?因为他们每晚都在21点钟准时睡觉。

  植物吸收阳光的能量,夜里生长,所以夜晚在农村的庄稼地里可听到拔节的声音。人类和植物同属于生物,细胞分裂的时间段大致相同,错过夜里睡觉的良辰,细胞的新生远赶不上消亡,人就会过早的衰老或患病,人要顺其自然,就应跟着太阳走,即天醒我醒,天睡我睡。人在太阳面前小如微尘,“与太阳对着干”是愚蠢的选择,迟早会被太阳巨大的引力催垮。这是客观真理。

  现实生活中,不少人有入睡难,睡眠质量不高的毛病。睡眠不好是一个综合性的问题,如肝火过盛,睡觉警觉;胃火过剩,睡觉不安;肝阴不足,睡觉劳累。

二、睡眠与疾病

  现代的生活习惯和生活方式给人们的身体带来了很多负面影响形成“四大病”:水果病、冰箱病、电视电脑病、熬夜病。肝脏有一特点:卧则回血,坐立向外供血。

  子时(23:00—1:00),其实23点就是新的一天的开始,并不是0点开始的,这是我们犯的误识。肝胆相表里,互为一家,23点胆经开了,如若不睡,大伤胆气,由于十一脏腑皆取决于胆也,胆气一虚,全身脏腑功能下降,代谢力、免疫力纷纷下降,人体机能大大降低,胆气支持中枢神经,胆气受伤易患各种精神疾病,比如抑郁症、精神分裂症、强迫症、躁动症等。子时胆要更换胆汁,胆经渐旺人如不卧,胆汁更替不利,过浓而结晶成石,久之即得胆结石,如果把胆给摘了,一摘就胆怯了,全身的免疫力下降了50%以上,所以不能摘,要用它本系统的巨大潜能把它化掉。

  丑时肝经最旺,丑时(1:00—3:00)不眠,肝无法解除掉有毒之物,产生新鲜血液,因藏血不利,面呈青色,久之易患各类肝病,现在有些人肝不太好,特别在欧洲平均4个人就有一个大三阳或是小三阳,大都是因为违反自然规律过了子时不睡觉造成的。甲肝比较好治,乙肝就很难治。乙肝病毒携带者,是由于晚上经常不睡觉,人太虚弱了,也就是说秩序太乱了,病毒已经到了细胞里了。也就是说乙肝的病毒已经到了细胞里面,但是现在它还没有能力造成肝炎,当人身体处于最薄弱的时候就形成成肝炎,乙型肝炎就意味着将来40%——60%的肝硬化。聪明的人是应该了解天、地、人之间的关系,不聪明的人就是应该被淘汰的人。

  肝主疏泄,过子时不睡,可引起肝疏泄不利,肝气郁结,可见易怒,头痛头晕,眼红,眼痛,耳鸣,耳聋,胸肋胀痛,女性月经不调,便秘,也可引起肝气升发不足,人会目倦神疲,腰膝酸软,晕眩,失眠,惊悸,精神恍惚,重则会晕倒在大街上,不省人事。

  肝有藏血、调节血液的功能,过子时不睡,会造成肝血不足,还会引起吐血、流鼻血、皮下出血、牙龈出血、眼底出血、耳出血等出血证状。

  肝开窍于目,过子时不睡,易引起肝虚,则出现视力模糊、老花、夜盲、畏光、迎风流泪,等症状,还会形成青光眼、白内障、眼底动脉硬化、视网膜病变等眼疾。

  肝主筋,其华在爪,过子时不睡觉,会引起肝血不足,就出现筋痛,麻木,屈伸困难,痉挛抽搐,易造成灰指甲,缺钙,髌骨软化,癫痫病,骨质疏松等症。

  肝与心,过子时不睡觉,可引起肝血不足,由于心主一身之血脉,肝有储藏和调节血液的功能,会造成心脏供血不足,引起心慌、心颤等症状,严重的形成心脏病、高血压等心脑血管疾病。

  肝与脾,过子时不睡觉,会引起肝胃不和,由于肝助脾胃消化,由于肝气太虚不能助脾胃消化,使人脾胃消化功能不好,表现为舌苔厚,长期以来会造成中气塌陷。

  肝与肺,过子时不睡觉,无法滋阴潜阳,肝阴亏损,引起肝火过盛灼肺,出现干咳、或咳嗽、咳痰血等木火刑金的证状,易导致牛皮癣等各种皮肤病。

  肝与肾,过子时不睡觉,肝虚导致肾亏,由于肝肾同源,容易造成生殖系统疾病、不育、骨病、牙病、脱发、糖尿病、肾衰竭等疾病。

三、睡眠的方法

  交通规则——你不懂就容易出事故。比如说,23点至凌晨3点为子丑时,胆肝经最活跃的时候,肝胆要回血,“躺下去回血,站起来供血”。如果你每晚22点钟左右躺下,静静得不要说话,到23点的时候,也就睡着了。肝胆开始回血,把有毒的血过滤掉,产生新鲜的血液,到一百岁也没有胆结石,也没有肝炎、囊肿一类的病。如果你天天熬夜到1点多,肝回不了血,有毒的血排不掉,新鲜的血生不成,胆又无法换胆汁,所以这些人容易得胆结石、囊肿、大三阳、小三阳各种病症。

  在欧洲地区,平均四个人就有一个肝炎病毒携带者,这就叫不懂规则。睡前半小时最好不要讲话,睡觉的时候更不要说话,如一说话,肺经动,然后心经又动,(因为心肺共为上焦)人就容易进入兴奋状态,所以就很难入睡。

  21:00—23:00为亥时。亥时三焦经旺,三焦通百脉。亥时入眠,百脉皆得濡养,故百岁老人得共同特点即21:00(亥时)之前入睡。女性若想长久的保持容颜娇好,应做到早睡早期。

  睡觉要关窗,不能开风扇、不能开空调,人生病很多都与此有关,因为人在睡眠之中,气血流通缓慢,体温下降,人体会在表面形成一种阳气层,这种阳气层它使人叫“鬼魅不侵”,什么意思呢,阳气足的人,不做恶梦,就是这种阳气,占了上风。开空调,开风扇,情况就不一样了,开窗户,窗户走的是风,风入的是筋,如果开空调,也有风,风入筋,寒入骨,早上起来,身上发黄,脸发黄,脖子后面那条筋发硬,骨节酸痛,甚至有人就开始发烧,这就是风和寒侵入到了筋和骨头里的缘故,这也就是气受伤了。如果说晚上睡觉不开窗,不开空调,不开风扇,连房门也关上,效果最好,如果热,把房门打开,把窗户关上,效果就差了一点,但是他不至于第二天早上起来浑身乏力,后背僵硬.

  有人把客厅的空调开开了,把卧室的门打开,和直接开空调睡觉是差不多的,开了空调以后,空调那个寒进了骨了,所

[原创] 支持外置硬盘控制器驱动+最小巧最灵活的PE

发表于

不再想写说明了,以下就只供参考。
目前支持两种方式的外置驱动
具体请点击以下地址查看.
外置硬盘控制器驱动使用添加方法

决定采用第二种方法。(利用无盘天使驱动)
已经上传了测试版本=080303=XXXX.RAR(两个文件,一个内核一个驱动)使用方法内详

这个内核除了具有
[原创&分享]新型PE内核(无限扩展,无限可能).

同样的功能外,另支持多种启动方式(首创)

具体: PE多功能内核 ISO文件下载 =080303=多启PE演示.rar

PE内核多功能版演示

若只需使用其中一种方式WINPE.IMG可以压缩成相应格式.第1,2可以压缩成CAB格式(目前压缩后14MB左右)

第3,4可以压缩成GZIP格式(压缩后15.6MB).

多功能:

  1. 可以使用RAMDISK方式启动(第1个.2个菜单)
    winnt.sif内容(注此ISO里面是WINNT.XPE)

    [SetupData]
    BootDevice="ramdisk(0)"
    BootPath="\WXPE\SYSTEM32\"
    OsLoadOptions="/minint /fastdetect /rdpath=WXPE\WinPE.IMG"
    

    启动例子:

    title 1. Micro Windows PE Without Sata/Raid/SCSI (ramdisk)
    chainloader ()/WXPE/SETUPLDR.BIN
    title 2. Micro Windows PE With Universal ATA driver (ramdisk)
    chainloader ()/WXPE/SETUPLDR.B2N
    
  2. 可以直接独立启动,不依赖WINNT.SIF(第3,4个,只需一个WINPE.IMG)

    只需要一个WINPE.IMG即可,不需要其它文件(WINNT.SIF,SETUPLDR.BIN等都不需要)

    启动例子:

    title 3. Micro Windows PE Without Sata/Raid/SCSI (WDSYS)
    map --mem --unsafe-boot ()/WXPE/WINPE.IMG (hd0)
    map --hook
    chainloader (hd0,0)/setupldr.bin
    title 4. Micro Windows PE With Universal ATA driver (WDSYS)
    map --mem --unsafe-boot ()/WXPE/WINPE.IMG (hd0)
    map --hook</font>
    
  3. 非RAMDISK方式启动,测试方法

    直接将里面的文件复制到系统盘根目录下(不需要改名)

    直接启动里面的setupldr.bin即可

    注:这只是一个演示,更方便的用途在于使用PXE方式启动.可以有双重启动方式,一种不行就换另一种.而且不管使用哪种方式启动,使用的内存都是差不多的

所有使用RAMDISK启动的PE都可以改成这种方式

chenall

以下的内容可以不用看了.只供参考

方式1.

缺点: DOS部份可以全自动,但后期需要按F6进行手工加载.
优点: 比较传统,可以保证正常加载

利用GRUB虚拟一个内存盘A:(1.44MB的镜像足够),360KB的也应该够用了(硬盘控制器的驱动不会很大)

map --mem .../scsi.gz (fd0)  # (用内存盘的模式加载镜像里面只有启动文件还有几个必要的文件)
map .../scsi_ext.img (fd1)   #  (不使用内存盘加载这个镜像里面存放了硬盘控制器的驱动)(当然内存够大也可以内存加载)
.....
chainloader (fd0)+1
  1. 首先启动到DOS模式
  2. 检测本机对应的硬盘控制器驱动.
  3. 复制对应的TXTSETUP.OEM到A:根目录.

用GRUB启动PE,再按F6直接加载驱动.

当然了也可以将所有的驱动搞成一个TXTSETUP.OEM文件,启动时按F6选择相应的驱动(会有许多,需要选择正确的驱动不方便)

方式2:

缺点: 由于使用了全新的方式,可能会加载不了。测试中……
优点: 可以做到全自动化。其它的等待发掘….

利用无盘天使来启动.还是使用GRUB

  1. 将PE做成无盘天使的镜像.再利用GRUB启动
    map —mem …./winpe.dsk (hd0)
    map …/scsi_ext.img (fd0)
    ..
    启动到DOS.由于已经将PE的镜像加载到的(hd0)所以在DOS下可以直接通过访问C:就是PE镜像了(要求镜像要用FAT/FAT32格式的)

  2. 检测硬盘控制器驱动,将找到的驱动的.SYS文件复制到DRIVERS目录下.
    再用INIFILE修改TXTSETUP.SIF

  3. 启动GRUB加载SETUPLDR.BIN启动.

[转载] 从网络启动安装Windows

发表于

Windows网络安装简介

作者:Rinrin

顾名思义,Windows网络安装表示从局域网内部引导Windows安装,核心技术基于微软的RIS(Remote Installation Services)。RIS有一个缺点,即需要在域环境下才能配置运行RIS。不过这个限制已经被国外的高手破解了,现在可以从任何一台Windows(甚至是Linux)机器上配置网络安装所需要的服务。本文将简单说明实现Windows网络安装的技术要点。

实现Windows网络安装需要四个服务:BOOTP,TFTP,BINL,Windows Share. 其中BOOTP和TFTP是实现PXE启动的基础,关于PXE启动的详细信息,可以参考本文后的引用2。

BINL服务,微软称之为启动信息协商层(Boot Information Negotiation Layer),其作用是网卡查询、身份验证、启动镜像选择等功能。实现Windows网络安装只需要其中一项功能,即网卡查询。Sherpya逆向分析了BINL协议,并写了一个开源的Binl服务程序。要了解详细信息,可以参考本文后的引用1。

Windows共享服务提供了安装文件的来源,并且在文本模式安装阶段作为启动分区(Boot Partition),因此也是必不可少的。

Windows网络安装的大致步骤如下:

  1. 目标计算机从网卡PXE Boot ROM启动(当然,你也可以用PXELinux或PXEGrub来实现类似的启动功能)。
  2. 目标计算机从DHCP/BOOTP服务器获得网络地址,并获得TFTP服务器的IP地址和启动文件信息。
  3. 目标计算机向TFTP服务器获得启动文件startrom.com/startrom.n12
  4. startrom.com获取ntldr(由setupldr.exe改名而来),并将控制权传递给它。
  5. setupldr.exe获取ntdetect.com和winnt.sif,winnt.sif应该包含启动相关信息。
    从这个时候起,有两种启动方法,即ramdisk和网络启动,对于Ramdisk,启动分区为\Device\Ramdisk{xxxx…},你可以参考本文后的引用2。对于网络启动,你需要在winnt.sif中设定SetupSourceDevice参数。
  6. setupldr.exe通过ntdetect.com获得网卡的Vendor ID和Device ID, 并将它发送到Binl服务端口(4011)。
  7. Binl服务查找“数据库”,获得需要加载的驱动名称和服务名,返回给setupldr.exe
  8. Setupldr.exe按照正常顺序加载驱动,不过在最后,它会试着去加载前面给出网卡驱动和网络设备相关驱动,你可以从TFTP服务器的log里看到这些。有意思的是,txtsetup.sif并没有网络设备相关驱动的信息,我想可能是直接写在setupldr.exe里了。
  9. 控制权移交给kernel,kernel会试着去mount启动分区,要注意的是,你建好的共享必须提供匿名访问,否则会停住不动。
  10. 开始文本模式安装,setupdd复制文件到硬盘。完成后重新启动。
  11. 开始GUI阶段安装,要注意的是,之前应该在Winnt.sif中指定OriSrc和OriTyp,至于是不是必须的,我不好说,因为并没有试验过。
  12. 安装结束。实际上,你可以在winnt.sif中加入相关信息,以便实现无人值守安装。

接下来,看一个实际的例子:

  1. 准备好DHCP/TFTP服务器,可以用tftpd32,也可以用性能较好的haneWin,看你的选择了。
  2. 设定好DHCP/TFTP服务器,指定TFTP根目录和启动文件名(startrom.n12或其他)。
  3. TFTP目录结构如下:

    TFTP
    │ntdetect.com
    │ntldr
    │startrom.n12
    │winnt.sif
    │
    └─boot
     └─I386
    

    其中ntldr由setupldr.exe改名而来,I386目录可以直接从安装光盘中复制。

  4. winnt.sif内容如下:

    [Data]
    floppyless = "1"
    msdosinitiated = "1"
    OriSrc = "\\Angel\TFTP\boot\i386"
    OriTyp = "4"
    LocalSourceOnCD = 1
    DisableAdminAccountOnDomainJoin = 1
    
    [SetupData]
    OsLoadOptions = "/fastdetect"
    SetupSourceDevice = "\Device\LanmanRedirector\Angel\TFTP\boot"
    
    [UserData]
    ComputerName = *
    

    Angel为当前计算机主机名,TFTP为共享名。

  5. 编译Binl服务程序binlsrv.c,可以在本文后的引用1找到。如果你装了VC,可以用cl binlsrv.c ws2_32.lib来编译。

  6. 编写文件nics.txt,和binlsrv.exe放在同一目录下:

    1022 2000 vmxnet.sys vmxnet
    1186 1300 RTL8139.sys rtl8139
    

    从左到右分别为PCI Vendor ID, Device ID, 驱动名, 服务名

  7. 把网卡驱动(如vmxnet.sys,RTL8139.sys)放到TFTP\boot\I386目录下

  8. 将TFTP目录共享,注意匿名访问。如何设置就不说了,网络上有很多文章,重点是启用Guest、允许网络访问、允许空会话、NTFS权限等等,完了别忘了重启一下Server服务。
  9. 启动目标计算机,开始网络安装!

后记:

Windows网络安装并不复杂,国外的高手几年前就开始研究了。希望大家能多到Boot land, 911CD这样的论坛逛一逛,开阔眼界吧。

引用:

  1. Sherpya. RIS for Linux, http://oss.netfarm.it/guides/
  2. Climbing. PXE服务器架设指南及PXE启动WinPE(含PE2.0)解决方案总结, http://www.znpc.net/bbs/viewthread.php?tid=3662&extra=page%3D1

[转载] ntldr隐藏大秘密——启动时手动编辑调整菜单选项

发表于

大家知道,ntldr只能执行之前编辑好的的boot.ini菜单选项,而无法像grub的menu.lst一样在启动时手动编辑和调整菜单,很缺乏灵活性。

今天我在启动vista时,偶然按了一下F10,发现vista的bootmgr+winload.exe在此时可以手动编辑启动选项,故而查找了一些相关资料,发现微软竟然在ntldr中包含了显示启动选项和编辑启动菜单这两个隐藏功能,下面我就来说明如何实现这两个功能。

在启动到操作系统选择菜单时,输入unsupporteddebug后,神奇的事出现了boot.ini启动项的标题、路径、启动选项居然能显示出来了:

选中一个操作系统选项,按回车,在boot.ini满足一定的条件时,还能出现启动选项手动编辑菜单:

要出现启动选项编辑菜单,要求boot.ini文件中[operating systems]下面的操作系统项中的任意一行,满足下面条件中任意一条

  • 选项中包含/redirect参数,并且标题的引号中的字符长度超过57字节(用不了这么长,可以用彩色标题啊 http://www.cn-dos.net/forum/viewthread.php?tid=20816)
  • 选项中包含/debug/baudrate,并且路径开头不是C:\
  • 选项中包含 /win95dos/win95参数
  • 操作系统路径是C:\ (没有任何文件名)

有兴趣的,可以更进一步参考:
http://www.geoffchappell.com/viewer.htm?doc=notes/windows/boot/unsupporteddebug.htm

另外,关于vista bootmgr的F10编辑菜单的使用可以参考:

http://www.geoffchappell.com/viewer.htm?doc=notes/windows/boot/editoptions.htm