检测本机安装的MSXML的版本的方法

公司里有一个很好用的exe,不过不清楚是不是保密的,不敢发出来,而官方公布的那个又比较老土,只好自己写了……

把以下代码保存为js文件,然后双击即可。如果对应的msxmlx.dll已经注册,会显示安装路径,否则显示Not Found.

优化了一下Vista的内存使用

看上去还不错吧...

主要改动如下:

  • 关闭Aero,这东西基本没什么好玩的。关闭方式见此
  • 关闭索引服务,当人肉搜索已经足够强大的时候……。把服务里的Windows Search禁用掉就可以了。
  • 禁用ReadyBoost和Superfetch服务。ReadyBoost是用于有U盘或者移动硬盘联接的时候,把它的可用容量做为内存使用;Superfetch可以提高应用程序的启动速度。但是我不常用移动存储(本身就是本本=.=),而且据说有2G内存的情况下,Superfetch的效果也仅仅是提高1秒不到的性能,看上去没什么用,就都关掉了。
  • 还关掉了一些其它没有用的服务,主要是参考了这个列表

PS:Kaspersky开着,占了60M内存,比较郁闷,但是也没办法……

如何判断本机的.Net Framework版本

MSDN上有一篇文章讲到这个,方法是:进入%SystemRoot%\Microsoft.NET\Framework 目录(%SystemRoot%一般就是C:\Windows),有v1.1.xxxx就说明装过1.1,有v2.0.xxxx就说明装过2.0,有3.5就说明装过3.5。

对于32位的Windows来说,这个方法是对的,但是在64位的Windows中,由于WoW的关系,.Net的一些工具(比如RegAsm.exe)必须提供64位和32位两个版本,于是就有了两个文件夹。这个路径是保存在注册表中的:HKLM\SOFTWARE\Microsoft\.NetFramework\InstallRoot这个键值下面。当然用64位的regedit和32位的看出来的值是不一样的,也就对应到那两个文件夹。

屏蔽“应用程序错误”对话框

这件事的起因是我想把原来用Java写的SimpleJudge搬到.Net下,原先Java在调用本地应用程序的时候,如果应用程序出错,是不会弹出一个框说出错的,但是在.Net下,由于和Windows关系比较好,会直接把Exception扔给Windows,然后就弹出个“应用程序错误”的对话框。说实话这个框蛮烦的,内容就是一大堆地址,对绝大部分用户来说一点用都没有。

屏蔽的方法如下:

修改注册表(Win+R -> Regedit):HEKY_LOCAL_MACHINE\System\CurrentControlSet\Control\Windows\,然后修改ErrorMode项,其值为:

0:对所有的错误弹出对话框(默认值)

1:仅对应用程序的错误弹出对话框,即系统错误不弹出

2:对任何错误都不弹出对话框

修改完就OK了。