欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

使用命令行安装驱动程序

    为了使用Windows Mobile SDK中的Celluar Emulator,我又不想为了Windows Mobile SDK安装VS,安装那么多组件,难道就不能自己做一个Stand Alone的安装包么?

    看了一下Celluar Emulator的内容,除了应用程序,还需要安装一个虚拟硬件的驱动,名为XPVCOM。安装完毕后,会出现一个XPVCOM port。这个虚拟硬件将接受Device Emulator的AT指令,模仿手机的相应功能。

    很简单,安装这个虚拟硬件的驱动即可。查找驱动然后定位到xpvcom.inf。问题在于我想把这些工作打包,全部自动执行,不用点来点去。想起了以前解决OSD的ACPI问题时用的工具,devcon。

    DEVCON是设备管理器的命令行版本,可以查看其帮助:

C:\Users\hhu\Desktop\WME\Drivers>devcon /?
Device Console Help:
devcon [-r] [-m:\\<machine>] <command> [<arg>...]
-r if specified will reboot machine after command is complete, if needed.
<machine> is name of target machine.
<command> is command to perform (see below).
<arg>... is one or more arguments if required by command.
For help on a specific command, type: devcon help <command>
classfilter          Allows modification of class filters.
classes              List all device setup classes.
disable              Disable devices that match the specific hardware or instanc
e ID.
driverfiles          List driver files installed for devices.
drivernodes          Lists all the driver nodes of devices.
enable               Enable devices that match the specific hardware or instance
ID.
find                 Find devices that match the specific hardware or instance I
D.
findall              Find devices including those that are not present.
help                 Display this information.
hwids                Lists hardware ID's of devices.
install              Manually install a device.
listclass            List all devices for a setup class.
reboot               Reboot local machine.
remove               Remove devices that match the specific hardware or instance
ID.
rescan               Scan for new hardware.
resources            Lists hardware resources of devices.
restart              Restart devices that match the specific hardware or instanc
e ID.
sethwid              Modify Hardware ID's of listed root-enumerated devices.
stack                Lists expected driver stack of devices.
status               List running status of devices.
update               Manually update a device.
updateni             Manually update a device (non interactive).

    为了安装这个虚拟硬件,只需要运行以下命令行:

devcon install xpvcom.inf "root\XPVCOM"
devcon rescan

    你要问“root\XPVCOM”设备描述符哪里来的?打开inf文件就能看到

……

[Standard]
;
;

%XPVCOM.DeviceDesc%=XPVCOM_Device, root\XPVCOM
……

    命令行安装一个驱动,就这么简单。

发表于 作者 HaoHu | 0 评论

使用命令行安装网络组件

    事情的起因是要给Team提供一个Windows Mobile的手机模拟器,用以测试Exchange ActiveSync和Office Communicator Mobile。这个东西之前我可是从0.x到现在的3.0一直在玩。后来忙起来没顾上了。Device Emulator是个好东西,可是要照正常情况安装,你必须要先装VS2008,再加上SP1,再加上组件,然后才能装Windows Mobile SDK……运行一下模拟器而已,没必要吧……

    MS倒是提供了一个Stand Alone的版本,可是,要自行安装Virtual Machine Network Services,得去MS的网站下载一个安装包。看上去没啥嘛,就装一下吧,可是,这个Link已经失效了,你必须安装VPC 2007 SP1……

    算你狠,我从VPC里面抠一个驱动总行了吧。是的,这没问题,只不过你得打开网络属性,添加服务,然后指定VMNetSrv.inf文件。对于你我来说肯定没问题,可是遇到找不到网络适配器的小强……

    像我这么体贴的IT Pro……表扔鸡蛋……难道就不能搞个脚本或者程序自动帮人搞定么?

    首先想到的就是NetSh,这个实用工具也是伴随了我很多年。可惜的是,这位兄弟实在没法完成任务。

    Google,Bing,可惜,没结果。倒是有很多朋友问怎么自动安装“文件共享和打印服务”……我想我解决了这个问题,那些都不再是问题。不抛弃,不放弃,(画外音:怎么没见你这么追MM……)我把所有带有net字样的exe和dll都抓出来了,终于被我抓到了,这个命令就是netcfg。(请鼓掌)

    还好这个命令有帮助:

C:\Users\hhu>netcfg /?
netcfg [-v] [-e] [-winpe] [-l <full-path-to-component-INF>] -c <p|s|c> -i <comp-id>

  -winpe 为 Windows 预安装环境安装 TCP/IP、NetBIOS 和 Microsoft 客户端
    -l  提供 INF 的位置
    -c  提供要安装组件的类别(p 代表协议、s 代表服务、c 代表客户端)
    -i  提供组件 ID

    参数必须按照以下顺序传递。

    示例:
    netcfg -l c:\oemdir\foo.inf -c p -i foo
     ...使用 c:\\oemdir\\foo.inf 安装协议 "foo"

    netcfg -c s -i MS_Server
     ...安装服务 "MS_Server"

netcfg [-v] -winpe
    示例:
    netcfg -v -winpe
    ...为 Windows 预安装环境安装 TCP/IP、NetBIOS 和 Microsoft Client

netcfg [-v] -q <comp-id>
    示例:
    netcfg -q MS_IPX
    ...显示是否安装了组件 "MS_IPX"

netcfg [-v] [-e] -u <comp-id>
    示例:
    netcfg -u MS_IPX

    ...卸载组件 "MS_IPX"

netcfg [-v] -s <a|n>
    其中,
    -s\t提供要显示的组件的种类
      \ta 代表适配器,n 代表网络组件
    示例:
    netcfg -s n
    ...显示所有已安装的 net 组件

netcfg [-v] -b <comp-id>
    示例:
    netcfg -b ms_tcpip
    ...显示包含 "MS_TCPIP" 的绑定路径

一般说明:\n"
  -v    以详细模式运行
  -e    在安装和卸载时使用服务环境变量
  -?    显示此帮助信息

     很明显,你需要指定安装网络组件的INF文件和对应的组件ID,对于本例子,需要安装的是一个网络服务,所以需要指定网络服务的名称。inf文件是有了,那这个服务名问谁?

     看inf文件。

……

[MSFT]
%VMNetSrv_Desc% = VMNetSrv.ndi, Cntx_VPCNetS2

[MSFT.NTamd64]
%VMNetSrv_Desc% = VMNetSrv.ndi, Cntx_VPCNetS2

……

    其他的不用太过关心,看到Desc字样就要小心点,经过UI安装验证,这个服务确实是叫“Cntx_VPCNetS2”。

    以下就是实际安装的命令行:

C:\Windows\system32>netcfg -l "c:\users\hhu\desktop\WME\Drivers\vmnetsrv.inf" -c s -i Cntx_VPCNetS2
正在尝试安装 Cntx_VPCNetS2 ...

...c:\users\hhu\desktop\WME\Drivers\vmnetsrv.inf 已复制到 C:\Windows\INF\oem24.inf。

无法锁定 INetcfg,它已经由“本地网络连接属性”锁定。

Retrying AcquireWriteLock with infinite wait time...

...完成。

    有报错对么?是的,因为我没关闭网络适配器的属性窗口。关上它,服务安装完毕。

    最后提一句,运行命令行需要管理员权限。

    最后再提一句,如果在企业里混合使用不同的网络协议和服务,可以用命令行进行批量配置。

发表于 作者 HaoHu | 1 评论

EVP 1.0 Release (Event Viewer Package)

    人不能太执着,至少不能像我这样,一件事情总是放不下。早就觉得Event Viewer很麻烦,也知道怎么解决不装程序而查看这个程序的日志记录,却一直因为忙或者懒,没有解决的办法搞成一个工具。

    夜了,世界杯的冠军就要出现。儿子也来了上海。这几天终于写出了一个小程序,用来解决事件日志的问题。仅以此小工具,向冠军和辛苦抚养枸枸的爸妈致意!

    使用说明:

    1. 点击右键进行事件日志包的添加和删除,目前已经完工的有Exchange 2003/2007/2010,其他的等我有时间逐步完成;

    2. 使用ini文件保存包的情况,如果没了,可以自行写入[PackageList]到一个文本文件,然后命名为程序同名的ini文件;

    3. 因为不同版本的事件可能采用相同的Catalog,因此建议一个程序同一时间只使用一个版本。例如安装了Exchange 2003的,在安装Exchange 2010前,请先删除Exahnge 2003的包;

    4. 程序需要读写注册表,因此UAC会有提示。确认即可。不放心可以任意杀毒~

    过程小记:

    这个工具完全是想到哪,写到哪。不过大致思路酝酿了很久了。最早用的是注册表,然后是脚本,最终决定用delphi。

    我已经有好多年没有用delphi了,可是的确很喜欢这个开发工具。重新找的delphi帮助无法联系使用,很多东西都是临时google。

    编写中发现经常出现不可控的情况,要么index下表越界,要么等到第二次运行才正常。而语句完全没有逻辑问题。最傻的办法就是把生成的命令行写到form的caption,然后在cmd里面验证。最后才怀疑到winexec函数,果不其然,系统并没有等到函数执行才返回,只要调用起来了,哪怕有正确的>31的返回值,也不意味着所有步骤的结束。于是用了sleep函数,来确保操作完成,可是,这无法避免不同速度的机器上就不出现问题,而且,人死等机器在我看来很傻,不可接受。于是再google,终于改用createprocess函数了。

    版权申明:

    Free for Non-Commercial usage.

    额外介绍:

    event log explorer是个不错的事件日志分析工具,是我在搜寻好用的event log工具的途中发现的。虽然不能满足我的要求,而导致最终自己写一个工具,但是我觉得这个工具至少比系统自带的好用。此外,个人使用免费。

 

居然忘了链接。。。http://cid-7bddf18b2ec3de79.office.live.com/browse.aspx/.Public/Event%20Viewer%20Package%201.0

发表于 作者 HaoHu | 0 评论

Group Policy随笔

    这两天帮人写一个GP的文档,内容是不借助域实现GP。于是很无聊的查查有关的资料。写程序的事情等有空来做,但是资料先记录下来。

    如果使用GPEDIT(Group Policy Editor),就能在%systempath%下找到GroupPolicy的文件夹。里面如同标准的GPO文件夹一般,会有Machine和User两个文件夹,还有一个gpt.ini文件。据我观察,这个文件的版本号是65535,与GPO所产生的版本号控制是不同的。Machine里面有Scripts目录,包含Startup和Shutdown两个目录,用来放启动和关机脚本;而User里面的Scripts目录,包含Logon和Logoff两个目录,用来放登录和注销脚本。此外,每个目录包含一个Regostry.pol文件。

    这个文件我很久以前就注意到了,也曾经尝试直接修改一些东西,但是始终有点一知半解。这下要彻底搞清楚。

    在找寻最终答案之前,先介绍一个工具,RegWorkShop,这个工具修改注册表简直太顺手了,今天介绍它,是因为它可以直接打开*.pol直接修改。这也坚定了我分析POL文件的决心。

    查了一下,找到这个介绍:http://msdn.microsoft.com/en-us/library/Aa374407

    这下子真相大白了,可是不同类型的键值是怎么定义的?我要找个WinNT.h来看看。还好做系统开发的找这个头文件很容易。打开文件,就找到数据类型定义了,如下:

//
// Predefined Value Types.
//

#define REG_NONE                    ( 0 )   // No value type
#define REG_SZ                      ( 1 )   // Unicode nul terminated string
#define REG_EXPAND_SZ               ( 2 )   // Unicode nul terminated string
                                            // (with environment variable references)
#define REG_BINARY                  ( 3 )   // Free form binary
#define REG_DWORD                   ( 4 )   // 32-bit number
#define REG_DWORD_LITTLE_ENDIAN     ( 4 )   // 32-bit number (same as REG_DWORD)
#define REG_DWORD_BIG_ENDIAN        ( 5 )   // 32-bit number
#define REG_LINK                    ( 6 )   // Symbolic Link (unicode)
#define REG_MULTI_SZ                ( 7 )   // Multiple Unicode strings
#define REG_RESOURCE_LIST           ( 8 )   // Resource list in the resource map
#define REG_FULL_RESOURCE_DESCRIPTOR ( 9 )  // Resource list in the hardware description
#define REG_RESOURCE_REQUIREMENTS_LIST ( 10 )

    拿个小白鼠开开刀:

    image

    如同知识库描述,头部是8个字节的描述,PREG….(50 52 65 67 01 00 00 00),表明这是一个POL文件。首先是注册表键的名称“Software\Policies\Microsoft\Internet Explorer\Privacy”,然后值的名称“CleaTIF”,类型是0x00000004,即REG_DWORD_LITTLE_ENDIAN,然后是大小,0x00000004,注意哦,跟DWORD吻合,4个字节。最后是数据,0x00000001,即1,表示这个Policy配置项有效~

    细心的你注意到了吧,键值前面没有常见的HKLM或者HKU,这是因为本身registry.pol已经分开在Machine和User里存放了。

发表于 作者 HaoHu | 1 评论

大拆解——XBOX360电源

    我的XBOX360是110V的电源,JS告诉我,韩版机器进关电源全被没了,这些电源全是台版,于是搭了一个110V转220V的变压器卖给我。

    本身变压器没啥问题,就是我实在受不了呜呜声。于是上网搜xbox360电源改装。这类文章真不少。我的电源型号EADP-175ABA,因此找到了介绍的帖子,只需要把压敏拆了,将电解电容换成大容量的即可。

    看着这么简单,不禁手痒。首先是拆了电源观察一下。照帖子上描述,直接打开脚垫,即可卸螺丝。可实际相差甚远,打开脚垫后根本看不到螺丝。看到的是黑色的塑料还是胶,于是狠心捅了半天,最后发现原来这东西并不是粘在螺丝上的,可以用镊子挑开。如果大家再拆电源,就不会走这弯路了。电源做工很好,严丝合缝。在所有可能爆的地方都包上了热缩管,容易打火的地方全部涂了黑色的绝缘橡胶。电解电容躲在硅堆和整流管的散热器下,有一块敷铜板转接。估计了一下空间,有数了。

    于是去北京西路备齐元件。压敏拆了还是有点不爽,于是找到对应220V的压敏451。电解还真不便宜,搞了两个220u 450V,再大估计没法装了。回到家,拆开散热器,焊下敷铜板,把下图中的绿1电解电容,绿2,绿3压敏拆了,换上了红3电解电容,红1,红2压敏,电容比原来的粗,把散热器稍微凹了一点,装好。充满期待的插上电源~~啪!家里的空开都跳了……

    前后元件

    拔下电源,扳上空开检查,保险丝是肯定烧了,一量,开路。在电解电容旁的二极管和飞线有打火的痕迹,边上不知道什么元件也有点焦痕,全部换下来。上图绿4的二极管已经击穿,边上那个元件测试没有电阻,一开始以为是电容,那肯定击穿了。后来发现是温敏,用来防止浪涌的。那就没坏。于是再去北京西路,搞回一堆二极管、保险丝。换上去了,再插电源~~ 啪!这次没跳闸,看见保险丝华丽闪断了……

    郁闷之下,找到写帖子的人问,也说不出个所以然,又找到一个改电源很早的人问,尚未得到答复。这么多元件,怎么找故障啊……又忙了几天,想起这个电源,咱们不是不抛弃不放弃么,继续折腾。量了一下各个脚,忽然发现硅堆的两个脚是短路的,嗯,很可疑。拆下来看看,果然是短路了。于是又查型号(这里向提供元器件到网上的同学致敬~)。原来是个6A的硅堆。再杀北京西路……

    回到家,没急着立即换东西,仔细地看看电路板……为啥要把屏蔽壳焊上去呢?而且焊的还是地线……原来前后级没有地线连接!这就是烧电源的原因了吧!把硅堆换上,祈祷,插上电源~~滋……电解电容的热缩壳化了……看来这个电解被打火的有点不好了……漏了?还是耐压仍然不够?再换电解,再加绝缘硅脂,再加散热硅脂……插电……终于看到黄灯亮了。接上XBOX360,开机。跑了1个多小时,完全没事~

   这个故事告诉我,动手改东西一定要多花点时间先琢磨,虽然有别人的帖子经验,但是实际操作还是有很多注意的地方。知其然还要知其所以然。至于110V的变压器,可以上淘宝了。

发表于 作者 HaoHu | 0 评论

Exchange 证书攻略 - 2

    离Con-Call还有半小时,再折腾一小段。忘了说,Exchange是微软的邮件服务器系统,不是某个秋香。

    上回书咱们说到Exchange可以用两种方法获取证书,先谈其一,自颁发。

    广义上讲,自颁发实际包含两种,本机颁发和CA颁发。有不知道CA是小昭还是双儿的同学请翻前面的书。狭义上说,自颁发指的是服务器自己给自己发的证书。我们这里取广义,两种都聊一聊。

    先说本机颁发。本机颁发是最简单了,IIS服务器本身启用SSL的时候,就可以为自己颁发一个证书。这样就避免了发布网站测试的时候,还必须使用整套PKI架构。Exchange的web service基于IIS,自然逃不出这窼穴。可以直接去IIS管理控制台,为站点直接启用一个证书。这个本机颁发的证书有这么个特点,它的证书名称和服务器实际计算机名一致,起始授权信息赫然写的就是自己。这样就带来两个问题:

    第一,这个证书默认客户端是不信任的。“谁都有机会”,谁都可以自己给自己颁发证书。要让客户端信任这个证书,就必须把这个证书放到信任存储位置。虽说只要是广义上的自颁发都需要有这个手续,但是这个最傻,有几个证书得放几个,等我说另外一个您就明白了。

    第二,这个证书上的计算机名称是不能设置的,也就是说您只能用计算机的FQDN来访问。难道您打算把计算机名发布到互联网上去?抛开安全因素不说,这名字也不好看不是?cn_sha_mx_01.hp.com,一般人记不住吧……mail.microsoft.com,这多神气。所以,这个证书拿来测试还行,生产环境使用,您再考虑考虑?

    至于另外一种,CA分发,实际涉及到一个PKI架构了。要知道使用证书的应用日益增多,从邮件签名到802.1x接入,从服务器验证到加密文件系统。想仔细了解PKI的同学建议另行讨论。这里只简单说一下CA分发的证书应用上与自颁发有何不同。为便于理解,与本机颁发做个对照。

    第一,这个证书有专门的证书颁发机构服务器发出,一般都是集中管理。由CA发出的证书有一个好处,它会形成证书链。证书得放到信任存储位置,使用证书的时候才不会报告证书不受信任。如果你把源头的CA证书放到信任存储,那么由它颁发的证书都会被信任,免得需要把所有证书都保存在信任存储位置。扩展开来,部署的CA证书信任,除了可以为Exchange证书提供证书链的信任,还可以为其它使用证书的应用提供证书链信任,例如802.1x,邮件证书签名,以及智能卡登录,加密文件系统证书等等。

    第二,如果是在域中,这个CA证书可以使用组策略直接“放置”到“受信任的证书颁发机构”中。

    第三,如果客户端或者用户需要证书,可以通过AD集成的方式,自动或者手动为其颁发证书。再也不用每台机器生成证书了,再也不用每张证书都手动往证书存储里添加了。这也涉及到以后要谈的一个问题,证书如何从CA申请。

    既然我们知道了CA可以给服务器,例如Exchange颁发证书,那么新的问题产生了。如果用户的计算机从来没有加入过域,也没有向证书存储的“受信任颁发机构”中添加证书,亦未曾把服务器证书添加到证书存储中,是不是就一定会报错呢?当然会了,这也是为什么许多企业采用第三方证书的原因。其实不论是自己架CA还是买证书,都会遇到问题,以后分别讨论。

    说到这里,Exchange该使用那种方式颁发的证书已经很清楚了。一般来说,如果是实验环境,完全可以服务器自己随便生成一张证书。生成的证书是可以完成所有测试的。如果涉及到生产环境,建议使用基于PKI架构的CA来给组织自行颁发证书。如果想走到哪里都不会有证书报错,可以选择购买第三方证书。那么这三种情况怎么获得证书,又怎么将证书配置为合适的Exchange服务使用呢?且听下回分解。

发表于 作者 HaoHu | 0 评论
归档在:

Exchange 证书攻略 - 1

    时光如水,生命如歌(与无人处凝咽悲歌……)。不觉区区陪伴Exchange已有10个年头,Exchange新了,某却老矣。闲话少提,拾人牙慧,聊聊Exchange的证书。

    说Exchange证书,要先从网站证书说起。不论是否熟悉Exchange,在浏览器地址栏输入“https://”这事相信大家都干过。这就是使用了网站的证书来保证站点可信和通信安全。要详聊x.509证书,区区倒是可以一壶清茶天高云淡,这里不复赘述。我们需要记住的,是证书要满足三个条件,才可以让网站正常使用而不报警。

    其一,证书需由可信证书颁发中心发布,即证书链保存在受信任的证书颁发机构中。就如同身份证,只有公安局发的才有效,我给你PS的那没用。我们的操作系统Windows,自安装完毕,便保存了一批受信任的证书颁发机构,这也是第三方证书能够直接使用的原因。若是自行建立的证书颁发机构(CA),则需自行将此CA的证书安装到受信任的证书颁发机构这个证书存储的分支。否则,打开页面即会提示证书不可信。

    其二,证书有时限。即证书使用时,其证书颁发的有效期不能超过。这个比较好理解,就好比身份证上的有效期,过期无效,必须补办。连CA证书也概莫能免,提一件事就能说明,微软曾经就发布过根证书更新的系统补丁。

    其三,证书显示的服务器名必须与使用证书的服务器名一致。身份证上名字与你登记的名字不同,那是要抓起来的。所以证书名字不一致,一定是要报错的。

    网站如是,使用IIS实现web mail的Exchange亦如是。具体到实际,如果证书未满足上述三点,OWA自然是有报错的,而使用Exchange ActiveSync和Outlook Anywhere(以前叫RPC over HTTP)的也会无法正常连接。如果是Outlook 2007以上,自动发现和通讯簿同步也会有问题。Outlook 2007可以按住Ctrl键再点击Outlook图标,选择“测试电子邮件自动配置”查看有关信息。

    为Exchange使用证书,无非两种途径:自颁发和第三方证书机构。欲之后事如何,且待下回分解。

发表于 作者 HaoHu | 1 评论
归档在:

大拆解——用来硬盘裸奔的适配器

   

    UNITEK Y-1031 USB2.0 To IDE / SATA II Adaptor

    手头裸奔的硬盘越来越多,于是需要一个方便的适配器。货比几家后,买了上图的这个。就如同买Airport的AP一样,本身的东东不是最小的,关键是电源减肥了。相较其他类型的适配器,这个的电源要小接近一半,线的体积也随之减少了不少,对于我这种把家当都背在背上的人来说,还是很适合的。

    时间关系,没做速度的测试,但是同时挂IDE和SATA硬盘完全没问题。没插电源的情况下插过两块2.5寸的盘,能正常认,但是没敢用,怕伤了硬盘。拿到手就琢磨拆开看看,想改装一下。主要想在蓝色框框部分开个槽,嵌一个USB的插座,从旁边的硬盘电源插座连5V的电源,可以给手机等设备充电。也可以看出,这个适配器做工还是不错的,壳子的设计上就能看到,有加固的设计,同时在接口的对面,也有泡沫胶缓冲。

    Y-1031a1 Y-1031b1

    把核心的部件在图上标出来了。核心是JM20337的IC,负责转换ATA/SATA接口到USB接口。这颗IC可以提供USB 2.0的480M速率,使用3.3V直流供电。从资料上看,其对SATA的支持是由IDE总线转换的,可以支持1.5G的SATA,并支持热插拔(指的是IC支持,没说适配器支持,我可不敢用硬盘试)。

有关JM20337的介绍,请看:http://www.jmicron.com/PDF/JM20338/JM20337.pdf

    很重要的硬盘供电电源部分,使用了一颗AP1534将12V DC/DC 转换到5V,负责给5V电路供电。包括连接3.5寸硬盘所必需的电源线。貌似5V的最大供电是800mA,给手机充电应该是足够了。

有关AP1534的介绍,请看:http://datasheet.eeworld.com.cn/pdf/208761_DIODES_AP1534.pdf

    适配器供电部分,使用了一颗AMS1117将5V降到3.3V供JM20337使用。

有关AMS1117可参考:http://www.datasheetcatalog.org/datasheet/AdvancedMonolithicSystems/mXuxzrt.pdf

发表于 作者 HaoHu | 1 评论
归档在:

小议ActiveSync证书

     一直忙着讨生活,写的东西不多。这几天公司同事开始使用Exchange的ActiveSync,(千万别以为我们落在了技术的后边,我们可是仅次于内部的测试者。实际上是因为成本啊流程啊,这里就不扯这些破事儿了)发现随Exchange ActiveSync推送的Mobile Management Policy实在是太麻烦……关于这些Policy有兴趣也可以探讨下~于是大家转而想另行配置SSL的邮件收发。这就面临一个问题,怎么拿到服务器的证书?

    做为全球有数的几大IT公司之一,虽然给的薪水不多,但是做事非常中规中矩。因此有关的移动设备管理策略非常到位。幸亏咱当了两年的Mobile MVP,还专门研究过CSP,因此这点小事……还难不倒我……

    同事也不是Windows Mobile啥也不会哦,很快就得到了分发的CAB文件,当然也就有了其中的_setup.xml。关于这个文件和对应的CSP介绍,有兴趣的同学可以往前翻。现在就只说这个东西和证书啥关系。

    我们来打开这个XML文件:

XML for Mobile Management Certificate CSP
    可以看到,这是一个标准的CSP文件,其Configuration Provider是CertificateStore,XML文件包含了一个证书的信息。于是,问题简化为怎么从这个文件里恢复出我们需要的证书。    中间那一大块“天书”无疑就是证书的内容了,可是,请注意那行字:"EncodedCertificate"。正是这行字让我得到提示,也让我走了点弯路。经过查询MSDN站点,得知证书部分使用了base64的编码方式,因此我自作聪明的找了个base64在线编解码的网站,想看看解出来的证书。用过那么多X.509证书,部署过那么多PKI架构,我当然知道证书文件里有证书的描述,因此想看看是不是能得到有关证书的内容。可是,可耻D失败鸟……

    当然没那么容易放弃,继续MSDN,还真找到官方描述了,贴出来:

    Adding a Certificate to the Root Store of a Windows Mobile-based Device

    证书导出为base64证书后,将HASH指纹和证书内容加入到XML文件,然后确定其CSP的格式,保存为XML文件,文件名为_setup.xml,然后打包成CAB文件。

    原来微软偷懒,就把证书头尾砍掉,放进XML文件…天雷阵阵…看看base64证书的真面目:

Base64 encoded CER file

    对照上面的XML,是不是就多了两行?如果你获得了这个CAB文件/CPF文件/XML文件,直接把证书复制出来,加上头尾两行,存成CER文件,搞定~

    那么,思考一下,为啥使用base64编码而不是DER编码的证书呢?其实很简单,有的邮件系统不一定支持全部的编码,而base64编码在大多数邮件系统中可以支持,因此使用base64编码更加适合。不论是复制执行,还是通过OTA方式推送到手机,都没有问题。

发表于 作者 HaoHu | 0 评论

Windows 7 Media Center 媒体中心相比 Windows XP、Windows Vista 的媒体中心有何改进?如何以媒体中心配置老少皆宜的家庭媒体娱乐平台?

      从最早的Windows XP Media Center版本开始,历经Windows Vista包含有Media Center的版本,再到如今包含有Media Center的Windows 7版本,计算机已经可以担当家庭影院的主角了。

      简洁的界面和方便的操作,加上扩展的开发接口,使得Media Center能够将计算机的多媒体性能发挥的淋漓尽致。加上扩展的硬件和遥控器,也许您的客厅或者卧室真的不用放置更多的设备了。

      那么Windows 7的Media Center有什么亮点呢?按下Win+Alt+Enter,我们一起来一次Windows 7 Media Center的探索之旅。

clip_image002

      首先忍不住要介绍的就是媒体播放的显示部分。现在16:9的显示设备非常普及,但是很多视频文件还是4:3的显示比例,留给我们的选择不多:要不就是把图像拉宽,让人变胖;要不就是两边裁切,损失画面。Windows 7给了一个新选择,可以保留中间部分的大致比例,而将两边非视线焦点处的图像适当拉伸。这样看起来舒服多了。

clip_image004

      我们知道Windows 7提供了非常绚丽的游戏,借助Media Center,除了在计算机屏幕上,你也可以在电视机上玩这些游戏了。

clip_image006

媒体中心,当然不只是您的计算机这么简单。Media Center可以连接符合标准的扩展器,举例来说,Xbox360就可以通过扩展其设置播放高清影片。

clip_image008

      除此以外,媒体播放的界面也更加绚丽,如果播放的歌曲专辑有完备的信息,在Media Center的播放界面都能够被显示出来。

clip_image010

      通过Media Center安装的电视卡看电视不是什么新鲜事了,使用过之前版本的朋友都知道。可是Windows 7支持DVB-S的模式,也就是说,您可以通过支持DVB-S模式的电视卡或者机顶盒收看卫星节目,很酷吧。

clip_image012

碟片、电影、视频、有线电视、卫星电视、互联网电视……Media Center能看能听的太多了……是不是担心家里的孩子接触到不合适的内容?Media Center已经内置了家长控制功能,借助分级系统,可以避免孩子接触不适当的内容。

clip_image014

      Media Center使用一个密码保护家长设置。如果需要访问受限内容,同样也需要输入这个密码。

clip_image016

      在家长控制的设置界面,可以对电影和电视进行分级的设置。如果选择“阻止未分级的电影/电视节目”,还可以避免某些不适当而又未进行分级的内容被孩子访问。

发表于 作者 HaoHu | 0 评论
归档在:

在Windows 7中如何防范U盘病毒的传播?

      软盘已经成为尘封的历史,现如没使用过U盘的计算机用户恐怕真的凤毛麟角了。U盘以其日渐小巧的体积,快速扩张的容量,越来越便宜的价格成功的替代了软盘,成为主流的移动存储介质。

      方便的同时带来的是巨大的安全隐患。U盘已经成为除了网络之外传播数量最大的病毒和恶意程序传播途径。在不经意的一插之间,病毒或者恶意程序就已经感染了您的计算机。

      难道永远都只能被动的借助杀毒软件来防御吗?就像汽车安全技术一样,Windows 7除了被动防御,还提供了主动防御的技术——限制移动存储上的程序运行。

      要启动此功能也非常方便,直接运行gpedit.msc,打开“本地组策略编辑器”,找到“计算机配置”,然后展开找到“管理模板”,然后点开“系统”,找到并点击“可移动存储访问”。在右边会显示所有可设置的可移动存储访问相关的策略。

      U盘属于可移动磁盘,因此我们就看看怎样设置可移动磁盘的访问策略。

clip_image002

      自Windows Vista开始,系统就已经可以限制可移动磁盘的读写,大家对这个应该已经不陌生了。而且,仅仅限制U盘的读写,并不能满足我们的需求。不能读自然不会感染病毒,可也失去了U盘的意义。不能写可以防止信息外流,却无法防止病毒入侵。

      我们需要的,是从Windows 7开始提供的新功能,拒绝执行权限。

clip_image004

      点击该策略,选择“已启用”,即可打开该策略。启用此策略设置,将拒绝对可移动存储类的执行权限。如果禁用或未配置此策略设置,将允许对此可移动存储类的执行权限。

      设置完该策略,我们来运行一下U盘上的程序看看。系统直接给出不允许运行的提示:

clip_image006

      别看这个提示跟UAC有点像,但却无法通过改变运行帐号来执行。除非策略被更改为允许执行权限。

clip_image008

      如果设置的是拒绝读取权限的策略,那么将无法访问U盘上的信息。

clip_image010

      如果设置的是拒绝写入权限的策略,那么无法将信息写入U盘。

      展开来讨论一下。对于CD/DVD介质,同样可以如U盘一样做出限制。防止光盘自动运行传播病毒。

      那么读卡器,MP3/MP4,数码相机甚至移动电话呢?这些都可以通过USB接口连接读写啊。在系统里,这些设备归入WPD类,可以限制其读取或者写入。

      总会非标准的设备存在的吧?对于这种情况,系统同样也提供了“自定义类”的设置,只要写入设备的GUID,就能限制其读取和写入。

      如果你是企业的管理员,完全没必要跑到每台机器上去设置,可以通过组策略快速的实现策略的实施。

 

      好了,这下再也不怕借给同事的U盘带着病毒回来了。

发表于 作者 HaoHu | 0 评论
归档在:

OO个XX的Public Folder

    解开Public Folder不能重建和删除的死结~

    事情的起因是这样的,在一个已有Exchange2003的组织中,部署Exchange 2007,本来不想搞PB的,想让事情简单一点,Autodiscover来搞定这些事情,连OAB都准备搞在Web Service上,但是,忽然发现有好多Outlook 2003的用户,他们看不了忙闲信息……

    于是,决定还是把Public Folder开起来。但是没想到一波还真就三折了……

    在Exchange 2007里面开Public Folder很简单,直接在管理控制台里新建公用文件夹数据库就好了。或者使用power shell运行new-publicfolderdatabase,顺便说一句,我越来越喜欢power shell了~

    可惜的是,事情总不想我们想的那么简单。Hub/CAS是NLB,这不是问题,Mailbox是Cluster,这也不是问题,问题在于,创建Public Folder之后,没有成功的创建群集资源~也就是说,没办法创建数据库。

    创不了,那就删了重建吧。真要是那么简单,也就不值得我写这么一堆了。不论是EMC里面删除还是Power Shell删除,都会报找不到数据库。这该死了……删又不让删,用又不让用。要用说没数据库,又没法变出来,有心删了重建,又不给删除。重新再建一个?不行~提示你已经有公用文件夹数据库了。死循环了……

    打开Event Log就能看到报错~问题总要想法解决,最终不行就把AD对象删了!不过在那之前好好想想……我爸爸说,一个好的厨师,总要有把趁手的菜刀~做IT Pro怎么能没几个好工具呢。拉出AD Explorer,联到AD,找到Configuration,Service,Exchange然后Public Folder(过程略),关键点来了,看到Public Folder的各个属性了吧,看看objectGUID,这是Public Folder Datacase的唯一标识符。记下来。

    imageimage

    忘了说,前面看到群集资源死活起不来,我就把它删了~因此我试着删除PublicFolderDatabase的时候就报找不到这个GUID的群集资源了。 好吧,咱不是会改AD和Registry么。再建一个再改~把群集资源的GUID改成这个,再把资源online……失败了……

    image

    什么原因阿……抓掉头发……不行,我的搞清楚,看看mailboxdatabase吧,至少它是正常的。哦!原来不是资源而是它对应的参数DatabaseGUID。再改……这次看你还不就范!终于好了。

    对了,忘了说怎么看PublicFolderDatabase和MailboxDatabase的GUID了,很简单,用power shell,get-publicfolderdatabase |fl。

    image

    Event Log显示PB正常了~把database mount上,搞定。3点了……补个觉……老了,抗不住了……

发表于 作者 HaoHu | 1 评论
归档在:

EFS增强——重装系统时,再也不会忘记导出私钥了

    EFS,全称是加密文件系统,是自从Windows 2000开始就具有的,方便而又安全的文件保护功能。EFS依托于NTFS文件系统,系统内核的支持使得访问加密后的文件如同普通文件一样方便快速。这里并不向您介绍EFS的详细功能和原理,因为您可以在Windows帮助文件中方便地找到更为详尽的介绍。

    EFS很好很强大,因为除了将文件加密的用户和指定的恢复代理,谁也无法将加密的文件进行解密。正因为如此,有许多用户尚未仔细了解该功能就把文件加密了,重装系统后,加密的文件就再也无法访问了。

    幸运的是,在我们不断地向产品组提出反馈后,Windows 7终于有办法能够帮助我们避免这个问题了。

    在Windows 7中第一次使用EFS对文件进行加密时,系统就会在任务栏弹出一个“备份文件加密密钥”的提示。

    clip_image002

    正如提示所表明的,备份EFS密钥能够避免系统重装等引起的,再也无法访问加密文件。

    点击这个提示,就能够打开加密密钥的备份向导。如果您现在很忙,也可以选择“稍候备份”,Windows将在下一次登录时再次提醒您。点击“现在备份”,就可以开始备份您的加密文件密钥。

    clip_image004

    系统将自动打开“证书导出向导”,帮助您将加密文件系统的证书导出并保存到安全的位置。

    clip_image006

    强烈建议您将证书保存到安全的移动存储或者其他存储位置。这样可以避免错误操作或者物理损坏破坏证书。

    clip_image008

    因为加密文件系统证书必须包含私钥,因此系统只允许导出为含有私钥的PFX证书文件,同时也不允许导出的同时删除私钥。那样的话,您的EFS加密文件就不能访问了。

    clip_image010

    为了保护您的证书文件,需要为证书输入一个密码。请不要忘记这个密码,否则即使您导出了证书,也会因为无法使用而不能再访问加密文件。

    clip_image012

    为证书文件指定保存的位置。可以选择备份到移动存储介质,甚至备份到Windows Live的SkyDrive都行。只要记住两点:

    · 保护您导出的证书

    · 记住您证书的密码

    clip_image014          clip_image016

    对信息确认无误后,即可完成加密文件系统的证书备份。如果您再次重装系统,只需要将导出的证书导入到新的系统,即可访问以前加密的文件。

    什么?您取消了“备份文件加密密钥”向导之后才看到这篇EKB?哦,那可太糟了,怎么办?

    别急,Windows 7不会让您失望的。打开您的“控制面板”,找到“用户账户和家庭安全”,选择“用户账户”。

    clip_image019

    在左边您就能找到“管理文件加密证书”选项。在这里,您能够随时管理您的文件加密证书,包括备份

发表于 作者 HaoHu | 1 评论
归档在:

OSD的自动ACPI

    今天有一老外在邮件组里问如何一个镜像支持所有XP的安装。我想啊,我不正在搞这个么~给他回一个呗。就把如何让XP应用正确的Storage Driver写给他了。这兄弟充分发挥了打破砂锅的特定,继续问我怎么支持不同ACPI mode呢?说实话我以前还真琢磨过,不过记忆和年纪此消彼长,实在记不住了,于是搜~

    首先找到一个用devcon的批处理,花了几分钟看了一下。这个判断ACPI是不是正确,不正确的就改。然后又找到一个脚本,粗粗看了看,里面有WMI的query和注册表的读取,还有HAL相关文件的调整。就是来不及在TS里测试了。

    为了帮自己记忆,也为了帮有同样需求的朋友,我把它们都放上来。

Reference:

@echo off
:DRIVER_HAL_UPDATE
    SET HAL=
    IF %NUMBER_OF_PROCESSORS%==1 (
      devcon.exe /find @ROOT\ACPI_HAL\0000 | find /i "Multiprocessor" > NUL && SET HAL=ACPIAPIC_UP
      devcon.exe /find @ROOT\PCI_HAL\0000 | find /i "Multiprocessor" > NUL && SET HAL=MPS_UP
    ) ELSE (
      devcon.exe /find @ROOT\ACPI_HAL\0000 | find /i "Uniprocessor" > NUL && SET HAL=ACPIAPIC_MP
      devcon.exe /find @ROOT\PCI_HAL\0000 | find /i "Uniprocessor" > NUL && SET HAL=MPS_MP
    )
    IF NOT "%HAL%"=="" (
      ECHO.
      ECHO ----------------------------------------
      ECHO Installing %HAL% HAL
      ECHO ----------------------------------------
      ECHO.
      devcon.exe sethwid @ROOT\PCI_HAL\0000 := !E_ISA_UP !ACPIPIC_UP !ACPIAPIC_UP !ACPIAPIC_MP !MPS_UP !MPS_MP !SGI_MPS_MP !SYSPRO_MP !SGI_MPS_MP
      devcon.exe sethwid @ROOT\ACPI_HAL\0000 := !E_ISA_UP !ACPIPIC_UP !ACPIAPIC_UP !ACPIAPIC_MP !MPS_UP !MPS_MP !SGI_MPS_MP !SYSPRO_MP !SGI_MPS_MP
      devcon.exe sethwid @ROOT\PCI_HAL\0000 := +%HAL%
      devcon.exe sethwid @ROOT\ACPI_HAL\0000 := +%HAL%
      devcon.exe update %windir%\inf\hal.inf %HAL%
      devcon.exe ReScan
      ECHO.
      ECHO ----------------------------------------
      ECHO Rebooting
      ECHO ----------------------------------------
      ECHO.
      devcon.exe Reboot
     ) ELSE (
      ECHO.
      ECHO ----------------------------------------
      ECHO Correct HAL Detected
      ECHO ----------------------------------------
      ECHO.
     )
GOTO :EOF
发表于 作者 HaoHu | 1 评论

One World, One WIM – 3.实现自动分区

    我们的目标不是没有蛀牙,而是一个wim文件完成组织所需要的Windows部署。

    看到标题估计蛮多人想打我……OSD不是有自带的任务序列Task Sequence么,费得着你脱那啥放那啥么?列位看官,OSD有分区的任务序列不假,很强大也是真的,可是架不住IT环境的变态吧~

    有谁举手告诉我,我们公司只用ThinkPad?哟,还真有,你们公司还招人么?……不打岔了,在一个企业里,混合使用多个品牌多个型号的计算机太正常了,每个牌子的计算机又有着不同的特点,今天针对自动分区,就说一个特点。

    拿Dell开刀(先为显卡门中牺牲的我的主板默哀,再为我主板上被阉割的TPM再默哀……)来举例子,Dell喜欢在磁盘上藏一个隐含分区,几十M,放置了一些系统自检的工具。然后才是给用户用的分区。因此如果你直接用任务序列把磁盘干掉了,重新创建检测工具分区会很麻烦……如果你的确有兴趣重建,咱私聊~

    再举一个ThinkPad的例子(啥时候能用上XT的机器啊……),ThinkPad有一个功能叫做救命蓝色键,可以恢复系统,其实说白了就是有个隐藏分区,放着恢复文件。如果我们直接用SCCM的OSD把机器给干了……啥也不剩了。

    或者,照我之前的项目经验,不同批次的机器采购用的不同大小的硬盘,IT为了管理方便,给不同档次的硬盘大小规定了不同的分区数量和大小。使用OSD的时候,就需要按照标准去自动分区

    这时候发现任务序列力不从心了吧,难道真要一个牌子搞一个任务序列?一个批次搞一个任务序列?不要忘记我们的题目,对吧?

    其实很简单,在WMI的管理名称空间里,BIOS下面有机器的制造商信息,如果是根据不同品牌机器的特点分区,把它抓出来做一个查询就可以。可以用wmic查看bios的Manufacturer,根据不同的值,执行不同的任务序列步骤即可。如果是根据不同的硬盘大小来“智能”分区,也很简单,用WMI的diskdrive的Size,直接得到磁盘大小,然后来执行不同的任务序列步骤。

    一说就明白了吧?query不太会写?看看前面的介绍吧。真的不会写就给我留个言,准备下班了,看有留言再填坑吧。

    我们的目标不是没有蛀牙,而是一个wim文件完成组织所需要的Windows部署。

发表于 作者 HaoHu | 1 评论
归档在:
更多内容 下一页 »