<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[技术员日志]]></title>
<link>http://www.cnsos.net/</link>
<description><![CDATA[http://www.cnsos.net]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[wzwyc@yeah.net(Aci)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>技术员日志</title>
	<url>http://www.cnsos.net/images/logos.gif</url>
	<link>http://www.cnsos.net/</link>
	<description>技术员日志</description>
</image>

			<item>
			<link>http://www.cnsos.net/article.asp?id=138</link>
			<title><![CDATA[Source Insight 3.5.0063 最新注册版]]></title>
			<author>wzwyc@yeah.net(aci)</author>
			<category><![CDATA[软件下载]]></category>
			<pubDate>Tue,06 Jan 2009 21:05:38 +0800</pubDate>
			<guid>http://www.cnsos.net/default.asp?id=138</guid>
		<description><![CDATA[Source Insight，一个无比强大的工具。一个很好的查看代码的工具。到它的官网上去看一下，就知道，世界上基本上所有的大的软件公司，都在用这个工具。<br/>习惯了这个工具以后，你会无法忍受其它的代码编辑和查看工具。<br/>官方下载地址：<br/><a href="http://www.sourceinsight.com/distribute/Si3563Setup.exe" target="_blank" rel="external"><a href="http://www.sourceinsight.com/" target="_blank" rel="external">http://www.sourceinsight.com/</a>distribute/Si3563Setup.exe</a><br/>官方网站：<br/><a href="http://www.sourceinsight.com/" target="_blank" rel="external">http://www.sourceinsight.com/</a><br/><br/>注册码：<br/>SI3US-230590-09757<br/>SI3US-840598-11493<br/>SI3US-404808-04697<br/>SI3US-510811-93484<br/>SI3US-343066-11287]]></description>
		</item>
		
			<item>
			<link>http://www.cnsos.net/article.asp?id=137</link>
			<title><![CDATA[source insight 快捷键]]></title>
			<author>wzwyc@yeah.net(aci)</author>
			<category><![CDATA[编程开发]]></category>
			<pubDate>Fri,02 Jan 2009 13:21:01 +0800</pubDate>
			<guid>http://www.cnsos.net/default.asp?id=137</guid>
		<description><![CDATA[退出程序&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+F4<br/>重画屏幕&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Alt+Space<br/>完成语法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+E<br/>复制一行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+K<br/>恰好复制该位置右边的该行的字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+K<br/>复制到剪贴板&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Del<br/>剪切一行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+U<br/>剪切该位置右边的该行的字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+;<br/>剪切到剪贴板&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+X<br/>剪切一个字&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+,<br/>左边缩进&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: F9<br/>右边缩进&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: F10<br/>插入一行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+I<br/>插入新行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Enter<br/>加入一行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+J<br/>从剪切板粘贴&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Ins<br/>粘贴一行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+P<br/>重复上一个动作&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Y<br/>重新编号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+R<br/>重复输入&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+\<br/>替换&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+H <br/>智能重命名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+&#39; <br/>关闭文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+W<br/>关闭所有文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+W<br/>新建&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+N<br/>转到下一个文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+N<br/>打开&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+O<br/>重新装载文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+O<br/>另存为&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+S<br/>显示文件状态&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Shift+F10<br/>激活语法窗口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+L<br/>回到该行的开始&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Home<br/>回到选择的开始&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Alt+[<br/>到块的下面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+]<br/>到块的上面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+[<br/>书签&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+M<br/>到文件底部&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+End, Ctrl+(KeyPad) End<br/>到窗口底部&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: (KeyPad) End (小键盘的END)<br/>到一行的尾部&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: End<br/>到选择部分的尾部&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Alt+]<br/>到下一个函数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 小键盘 +<br/>上一个函数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;小键盘 -<br/>后退&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+,, Thumb 1 Click<br/>后退到索引&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+M<br/>向前&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+., Thumb 2 Click<br/>转到行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: F5, Ctrl+G<br/>转到下一个修改&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+(KeyPad) +<br/>转到下一个链接&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Shift+F9, Ctrl+Shift+L<br/>回到前一个修改&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+(KeyPad) -<br/>跳到连接(就是语法串口列表的地方)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+L<br/>跳到匹配&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+]<br/>下一页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: PgDn, (KeyPad) PgDn<br/>上一页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: PgUp, (KeyPad) PgUp<br/>向上滚动半屏&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+PgDn, Ctrl+(KeyPad) PgDn, (KeyPad) *<br/>向下滚动半屏&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Ctrl+PgUp, Ctrl+(KeyPad) PgUp, (KeyPad) /<br/>左滚&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+Left<br/>向上滚动一行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+Down<br/>向下滚动一行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+Up<br/>右滚&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+Right<br/>选择一块&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+-<br/>选择当前位置的左边一个字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Shift+Left<br/>选择当前位置右边一个字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Shift+Right<br/>选择一行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Shift+F6<br/>从当前行其开始向下选择&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Shift+Down<br/>从当前行其开始向上选择&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Shift+Up<br/>选择上页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Shift+PgDn, Shift+(KeyPad) PgDn<br/>选择下页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Shift+PgUp, Shift+(KeyPad) PgUp<br/>选择句子(直到遇到一个 . 为止)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Shift+F7, Ctrl+.<br/>从当前位置选择到文件结束&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+End<br/>从当前位置选择到行结束&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Shift+End<br/>从当前位置选择到行的开始&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Shift+Home<br/>从当前位置选择到文件顶部&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+Home<br/>选择一个单词&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Shift+F5<br/>选择左边单词&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+Left<br/>选择右边单词&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+Right<br/>到文件顶部&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Home, Ctrl+(KeyPad) Home<br/>到窗口顶部&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: (KeyPad) Home<br/>到单词左边(也就是到一个单词的开始)&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Left<br/>到单词右边(到该单词的结束)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Right<br/>排列语法窗口(有三种排列方式分别按1,2,3次)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Alt+F7<br/>移除文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+Shift+R<br/>同步文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+Shift+S<br/>增量搜索(当用Ctrl + F 搜索,然后按F12就会转到下一个匹配)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : F12<br/>替换文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+H<br/>向后搜索&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: F3<br/>在多个文件中搜索&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Shift+F<br/>向前搜索&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: F4<br/>搜索选择的(比如选择了一个单词,shift+F4将搜索下一个)&nbsp;&nbsp;&nbsp;&nbsp; : Shift+F4<br/>搜索&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+F<br/>浏览本地语法(弹出该文件语法列表窗口,如果你光标放到一个变量/函数等,那么列出本文件该变量/函数等的信息)&nbsp;&nbsp;&nbsp;&nbsp; : F8<br/>浏览工程语法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: F7, Alt+G<br/>跳到基本类型(即跳到原型)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+0<br/>跳到定义出(也就是声明)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+=, Ctrl+L Click (sel&#101;ct), Ctrl+Double L Click<br/>检查引用&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+/<br/>语法信息(弹出该语法的信息)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+/, Ctrl+R Click (sel&#101;ct)<br/>高亮当前单词&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Shift+F8<br/>语法窗口(隐藏/显示语法窗口)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Alt+F8<br/>关闭窗口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Alt+F6, Ctrl+F4<br/>最后一个窗口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: Ctrl+Tab, Ctrl+Shift+Tab]]></description>
		</item>
		
			<item>
			<link>http://www.cnsos.net/article.asp?id=136</link>
			<title><![CDATA[浅谈Vista和XP等双系统启动菜单的备份和恢复[转]]]></title>
			<author>wzwyc@yeah.net(aci)</author>
			<category><![CDATA[Vista]]></category>
			<pubDate>Thu,01 Jan 2009 22:26:54 +0800</pubDate>
			<guid>http://www.cnsos.net/default.asp?id=136</guid>
		<description><![CDATA[一、备份——Vista/XP或者Vista/2003等双系统的启动菜单环境<br/><br/>1、备份引导文件（文件位于“当前引导程序所在盘”比如此时是C盘）：<br/><br/>　　Vista的引导文件（夹）：Boot（文件夹）、autoexec.bat、bootmgr.sys、config.sys、BOOTSECT.BAK<br/><br/>　　Win XP的引导文件：boot.ini、bootfont.bin、IO.SYS、MSDOS.SYS、NTDETECT.COM、ntldr；<br/><br/>2、备份BCD文件<br/><br/>　　用管理员身份打开“运行”，输入cmd.exe 运行进入命令行程序， 输入bcdedit /export &#34;X:\XXX\bcd&#34;<br/><br/>二、恢复——Vista/XP或者Vista/2003等双系统的启动菜单环境：<br/><br/>　　下面的例子是：如果XP在C盘，Vista在D盘，XP重新安装的话<br/><br/>1、恢复引导文件：把Vista引导文件（夹）复制到C盘即可<br/><br/>2、恢复Vista启动：bootsect /nt60 SYS （bootsect位于vista系统安装盘boot文件夹下）<br/><br/>3、恢复BCD文件：用管理员身份打开“运行”，输入cmd.exe 运行进入命令行程序， 输入bcdedit /import &#34;X:\XXX\bcd&#34;<br/><br/>　　如果重装XP，恢复Windows Vista的启动文件，再用bootsect恢复Vista启动管理器，接着bcdedit恢复启动项；<br/><br/>　　如果重装Vista，恢复XP的启动文件，只要用 bcdedit 恢复启动项就可以了（bcdedit位于vista系统所在盘\Windows\System32目录下）。<br/><br/>　　关键中的关键，是之前你用bcdedit　在双系统正常的时候备份了启动项。<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.cnsos.net/article.asp?id=135</link>
			<title><![CDATA[硬盘安装Vista单系统]]></title>
			<author>wzwyc@yeah.net(aci)</author>
			<category><![CDATA[Vista]]></category>
			<pubDate>Thu,01 Jan 2009 20:51:47 +0800</pubDate>
			<guid>http://www.cnsos.net/default.asp?id=135</guid>
		<description><![CDATA[　　很多人从网上下载了VISTA系统的ISO文件，但是不想刻DVD盘，或者根本就没有DVD刻录机，怎么办？<br/>　　<span style="color:Red">其实最简单的办法，就是装一个虚拟光驱，打开VISTA系统ISO镜像，然后在现在的Windows系统里安装Vista系统。</span>不过这样的方法，一个缺点，就是双系统。但有些人并不想装双系统。然后VISTA已经不像XP和2003这些系统一样，支持DOS安装，所以就变得比较难实现了。<br/>　　之前在网上看到过，有人用WINDOWS PE的启动盘，来安装，大家感兴趣的话，可以到网上搜索一下，尝试一下。<br/>　　在这里，我再提供一种方法，这种方法可以在已有系统的基础上，在不刻盘的条件下实现VISTA单系统。原理是利用VISTA的安装程序，格式化了C盘，然后再安装。<br/><br/>(在非Vista环境下) <br/>1. 用虚拟光驱解压Vista ISO文件. <br/>2. 把虚拟光驱的所有文件拷到C盘（其中SOURCES里的INSTALL.WIM可以不拷）,再把所有文件拷贝到 <br/>D:/VISTA下面(也可以是除了C盘的其它盘) <br/>3. 运行CMD <br/>4. 运行c:\boot\bootsect /nt60 c: <br/>5. 重启动 <br/>6. 先点“下一步”，接着进入到安装界面时，不要点“现在安装”————》点选修复计算机（在安装界面的左下角），然后 <br/>一直点下一步，直到出现“系统修复选项”界面————》选择“命令提示符”这个菜单。 <br/>7. 进入DOS命令(实际上是进入了PE2.0的环境) <br/>8. FORMAT C:/Q/fs:ntfs(或者format c:/q如果你的盘已经是NTFS的话) <br/>9. CD D:\VISTA\SOURCES <br/>10. 运行SETUP ]]></description>
		</item>
		
			<item>
			<link>http://www.cnsos.net/article.asp?id=134</link>
			<title><![CDATA[完美解决PJBlog登录后自动退出的问题]]></title>
			<author>wzwyc@yeah.net(aci)</author>
			<category><![CDATA[杂文]]></category>
			<pubDate>Tue,30 Dec 2008 22:41:19 +0800</pubDate>
			<guid>http://www.cnsos.net/default.asp?id=134</guid>
		<description><![CDATA[　　我这个博客，前段时间，一直是登陆后立即自动退出。这个问题困扰了我好久。去<a href="http://www.pjhome.net" target="_blank">PJBlog</a>的论坛看了看，发现挺多人遇到像我这样的情况的。不过在论坛里，好像都没有什么找到答案。<br/>　　不过其实论坛里已经发过一个解决这个问题的帖子。我在这里把解决的方法也贴出来。哪天，大家遇到像我这样的情况，就用得着了。<br/>　　简单的，就是把附件里的压缩包下载了，用压缩包里的两个文件替换原来的两个文件。不过在替换之前，最好先备份一下原来的文件。<br/>　　如果还是不行，可以给我留言。<br/>　　文件修改的内容，参考论坛里的那个帖子。能力强的人，也可以自己动手修改代码。<br/>　　<a href="http://bbs.pjhome.net/thread-31590-1-1.html" target="_blank" rel="external">http://bbs.pjhome.net/thread-31590-1-1.html</a><br/><br/><img src="http://www.cnsos.net/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.cnsos.net/attachments/month_0812/720081230223748.rar" target="_blank">点击下载此文件</a><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.cnsos.net/article.asp?id=133</link>
			<title><![CDATA[跟着Aci享受Windows Vista之旅]]></title>
			<author>wzwyc@yeah.net(aci)</author>
			<category><![CDATA[Vista]]></category>
			<pubDate>Sun,28 Dec 2008 21:21:21 +0800</pubDate>
			<guid>http://www.cnsos.net/default.asp?id=133</guid>
		<description><![CDATA[　　因为实在闲着无聊，又装上了Windows Vista来玩玩。现在刚刚安装好系统，什么东西都还没有弄过。连驱动都还没有装过。我实在xp系统下，虚拟光驱iso镜像文件来装的。光盘集成sp1。<br/><br/>　　1、安装了第一个软件：极点五笔。没有好的输入法，真的是寸步难行啊。极点五笔6.4版，在vista下安装了以后，竟然还会根据vista系统，整了一个漂亮的皮肤，哈哈。我最喜欢的五笔输入法。是vista下兼容最好的五笔输入法。不过之前有点小小问题，就是在ie的编辑框下，半角和全角是不能快捷键切换的，不知道现在修正了没有。先使用，如果发现有什么毛病和BUG，后面跟进。<br/>　　2、还有，因为本来没有准备把VISTA安装到这个磁盘的，所以这个磁盘大小只有10G,对于vista这个庞然大物，这么点的空间，实在是太小了。因为本着玩玩的心态。所以无所谓啦，反正也不会装很多的软件。把虚拟内存设置到别的分区了。这样可以省出2G的空间。<br/>　　3、因为本人不使用拼音，所以把系统自带的微软拼音删除了。只剩下极点五笔一个输入法。<br/>　　4、把WinRAR给安装了，3.70版本，应该兼容Vista系统。后面查看有没有什么问题。<br/>　　5、安装了QQ2009 Preview4。<br/><br/>　　一看VISTA的系统盘，发现空间只有300M左右了。发现hiberfil.sys这个文件占用了1G的空间。上网查了一下，原来是休眠文件。用下面的方法清除了这个文件：<br/>　　用管理员身份运行cmd.exe 打开命令行窗口，然后运行：powercfg -h off，然后重新启动。]]></description>
		</item>
		
			<item>
			<link>http://www.cnsos.net/article.asp?id=132</link>
			<title><![CDATA[公元前、公元后是怎样划分的？]]></title>
			<author>wzwyc@yeah.net(aci)</author>
			<category><![CDATA[杂文]]></category>
			<pubDate>Wed,24 Dec 2008 00:44:44 +0800</pubDate>
			<guid>http://www.cnsos.net/default.asp?id=132</guid>
		<description><![CDATA[“公元”产生于基督教盛行的六世纪，当时，为了扩大教会的统治势力，僧侣们把任何事情都附会在基督教上。公元525年，一个叫狄奥尼西的僧侣，为了预先推算七年后(即公元532年)“复活节”的日期，提出了所谓耶酥诞生在古罗马的狄奥克列颠纪元之前284年的说法，并且主张以耶酥诞生之年作为起算点的纪元，这个主张得到了教会的大力支持。公元532年，教会把狄奥克列颠纪年之前的284年作为公元元年，并将此纪年法在教会中使用。到1582年罗马教皇制定格里高利历时，继续采用了这种纪年法。由于格里高利历的精确度很高，而为国际通用，所以被称为公历。从此，教士所臆造的耶酥诞生的年份便被称为公元元年。所谓“公元”，就是公历纪元。]]></description>
		</item>
		
			<item>
			<link>http://www.cnsos.net/article.asp?id=131</link>
			<title><![CDATA[mfc70.dll和msvcr70.dll下载]]></title>
			<author>wzwyc@yeah.net(aci)</author>
			<category><![CDATA[软件下载]]></category>
			<pubDate>Sun,14 Dec 2008 22:46:23 +0800</pubDate>
			<guid>http://www.cnsos.net/default.asp?id=131</guid>
		<description><![CDATA[VC++6.0装好以后，自带的VSS是无法正常运行的，会提示缺少mfc70.dll和msvcr70.dll这两个文件。<br/>只要把压缩包里的这两个文件解压到\Microsoft Visual Studio\Common\VSS\win32目录下即可。<br/><br/><img src="http://www.cnsos.net/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.cnsos.net/attachments/month_0812/d20081214224417.rar" target="_blank">点击下载此文件</a><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.cnsos.net/article.asp?id=130</link>
			<title><![CDATA[什么是Rootkit?]]></title>
			<author>wzwyc@yeah.net(aci)</author>
			<category><![CDATA[基础应用]]></category>
			<pubDate>Sat,13 Dec 2008 18:54:08 +0800</pubDate>
			<guid>http://www.cnsos.net/default.asp?id=130</guid>
		<description><![CDATA[　　在网络安全中经常会遇到rootkit，NSA安全和入侵检测术语字典( NSA Glossary of Terms Used in Security and Intrusion Detection)对rootkit的定义如下：A hacker security tool that captures passwords and message traffic to and from a computer. A collection of tools that allows a hacker to provide a backdoor into a system, collect information on other systems on the network,mask the fact that the system is compromised, and much more. Rootkit is a classic example of Trojan Horse software. Rootkit is available for a wide range of operating systems.<br/>　　好多人有一个误解，他们认为rootkit是用作获得系统root访问权限的工具。实际上，rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。通常，攻击者通过远程攻击获得root访问权限，或者首先密码猜测或者密码强制破译的方式获得系统的访问权限。进入系统后，如果他还没有获得root权限，再通过某些安全漏洞获得系统的root权限。接着，攻击者会在侵入的主机中安装rootkit，然后他将经常通过rootkit的后门检查系统是否有其他的用户登录，如果只有自己，攻击者就开始着手清理日志中的有关信息。通过 rootkit的嗅探器获得其它系统的用户和密码之后，攻击者就会利用这些信息侵入其它的系统。<br/>　　什么是rootkit<br/>　　Rootkit出现于二十世纪90年代初，在1994年2月的一篇安全咨询报告中首先使用了 rootkit这个名词。这篇安全咨询就是CERT-CC的CA-1994-01，题目是Ongoing Network Monitoring Attacks，最新的修订时间是1997年9月19日。从出现至今，rootkit的技术发展非常迅速，应用越来越广泛，检测难度也越来越大。<br/>　　rootkit介绍Rootkit是一种奇特的程序，它具有隐身功能：无论静止时（作为文件存在），还是活动时，（作为进程存在），都不会被察觉。换句话说，这种程序可能一直存在于我们的计算机中，但我们却浑然不知，这一功能正是许多人梦寐以求的 ——不论是计算机黑客，还是计算机取证人员。黑客可以在入侵后置入Rootkit，秘密地窥探敏感信息，或等待时机，伺机而动；取证人员也可以利用 Rootkit实时监控嫌疑人员的不法行为，它不仅能搜集证据，还有利于及时采取行动。！<br/>　　一、背景知识<br/>　　我们通常所说的智能机器，大至超级计算机，中到个人PC，小至智能手机，通常都有两部分组成：硬件和软件。并且，设备的智能是通过软件来实现的。所有软件中，有一种是必不可少的，那就是操作系统。操作系统可以简单理解为一组高度复用的核心程序，一方面，它要管理低层的硬件设备，另一方面，为上层其它程序提供一个良好的运行环境。真是同人不同命，同为软件，操作系统却享有至高无上的特权：它不仅管理硬件，而且其他所有软件也都受制于它。<br/>　　因为在应用程序和硬件之间隔着操作系统，所以应用程序不能直接访问硬件，而是通过调用操作系统提供的接口来使用硬件。也就是说，对应用程序而言，硬件是不可见的。当然，凡事是没有绝对的，应用程序绕过操作系统来直接访问硬件也不是不可能的，但这样做会付出高昂的代价。设想一个软件开发商在开发一款功能丰富的软件，功能本身就够他头痛得了，现在他还得操心某个数据在某个磁道的某个簇上，某个字符在某品牌显示器上的颜色的二进制代码等等繁琐的事情，不用说财力和物力，单说开发周期就是无法容忍的。所以，现在的应用程序都是使用操作系统提供的简单明了的服务来访问系统的，因为毕竟没有谁愿意自讨苦吃。<br/>　　二、内核的主要功能<br/>　　从上文中我们已经了解，内核在系统中处于核心枢纽的地位，下面我们具体介绍内核中与Rootkit紧密相关的几个主要功能，更重要的是这些功能对Rootkit的意义所在：<br/>　　进程管理。进程可以简单理解为运行中的程序，它需要占用内存、CPU时间等系统资源。现在的操作系统大多支持多用户多任务，也就是说系统要并行运行多个程序。为此，内核不仅要有专门代码来负责为进程或线程分配CPU时间，另一方面还要开辟一段内存区域存放用来记录这些进程详细情况的数据结构。内核是怎么知道系统中有多少进程、各进程的状态等信息的？就是通过这些数据结构，换句话说它们就是内核感知进程存在的依据。因此，只要修改这些数据结构，就能达到隐藏进程的目的。<br/>　　文件访问。文件系统是操作系统提供的最为重要的功能之一。内核中的驱动程序把设备的柱面、扇区等原始结构抽象成为更加易用的文件系统，并提供一个一致的接口供上层程序调用。也就是说，这部分代码完全控制着对硬盘的访问，通过修改内核的这部分代码，攻击者能够隐藏文件和目录。<br/>　　安全控制。对大部分操作系统来说，因为系统中同时存在多个进程，为了避免各进程之间发生冲突，内核必须对各进程实施有效的隔离措施。比如，在MS-Windows系统中，每个进程都被强制规定了具体的权限和单独的内存范围。因此，对攻击者而言，只要对内核中负责安全事务的代码稍事修改，整个安全机制就会全线崩溃。<br/>　　内存管理。现在的硬件平台（比如英特尔的奔腾系列处理器）的内存管理机制已经复杂到可以将一个内存地址转换成多个物理地址的地步。举例来说，进程A按照地址 0x0030030读取内存，它得到值的是“飞机”；然而，进程B也是按照同样的地址0x0030030来读取内存，但它取得的值却是“大炮”。像上面这样，同一个地址指向截然不同的两个物理内存位置，并且每个位置存放不同的数据这种现象并不足以为怪——只不过是两个进程对虚拟地址到物理地址进行了不同的映射而已。如果这一点利用好了，我们可以让Rootkit躲避调试程序和取证软件的追踪。<br/>　　上面介绍了内核的主要功能，以及它们对 Rootkit的重大意义。说到这里，我们就要切入正题了，即：只要我们颠覆（即修改）了操作系统的核心服务（即内核），那么整个系统包括各种应用就完全处于我们的掌控之下了。要想颠覆内核，前提条件是能把我们的代码导入内核。<br/>　　其中针对SunOS和Linux两种操作系统的rootkit最多(树大招风:P)。所有的rootkit基本上都是由几个独立的程序组成的，一个典型rootkit包括：<br/>　　1 以太网嗅探器程程序，用于获得网络上传输的用户名和密码等信息。<br/>　　2 特洛伊木马程序，例如：inetd或者login，为攻击者提供后门。<br/>　　3 隐藏攻击者的目录和进程的程序，例如：ps、netstat、rshd和ls等。<br/>　　4 可能还包括一些日志清理工具，例如：zap、zap2或者z2，攻击者使用这些清理工具删除wtmp、utmp和lastlog等日志文件中有关自己行踪的条目。<br/>　　一些复杂的rootkit还可以向攻击者提供telnet、shell和finger等服务。<br/>　　还包括一些用来清理/var/log和/var/adm目录中其它文件的一些脚本。<br/>　　攻击者使用rootkit中的相关程序替代系统原来的ps、ls、netstat和df等程序，使系统管理员无法通过这些工具发现自己的踪迹。接着使用日志清理工具清理系统日志，消除自己的踪迹。然后，攻击者会经常地通过安装的后门进入系统查看嗅探器的日志，以发起其它的攻击。如果攻击者能够正确地安装rootkit并合理地清理了日志文件，系统管理员就会很难察觉系统已经被侵入，直到某一天其它系统的管理员和他联系或者嗅探器的日志把磁盘全部填满，他才会察觉已经大祸临头了。但是，大多数攻击者在清理系统日志时不是非常小心或者干脆把系统日志全部删除了事，警觉的系统管理员可以根据这些异常情况判断出系统被侵入。不过，在系统恢复和清理过程中，大多数常用的命令例如ps、df和ls已经不可信了。许多rootkit中有一个叫做FIX的程序，在安装rootkit之前，攻击者可以首先使用这个程序做一个系统二进制代码的快照，然后再安装替代程序。FIX能够根据原来的程序伪造替代程序的三个时间戳(atime、ctime、mtime)、date、permission、所属用户和所属用户组。如果攻击者能够准确地使用这些优秀的应用程序，并且在安装rootkit时行为谨慎，就会让系统管理员很难发现。<br/>　　LINUX ROOTKIT IV<br/>　　前面说过，大部分rootkit是针对Linux和SunOS的，下面我们介绍一个非常典型的针对Linux系统的rootkit--Linux Rootkit IV。Linux Rootkit IV是一个开放源码的rootkit，是Lord Somer编写的，于1998年11月发布。不过，它不是第一个Linux Rootkit，在它之前有lrk、lnrk、lrk2和lrk3等Linux Rootkit。这些rootkit包括常用的rootkit组件，例如嗅探器、日志编辑/删除工具、和后门程序的。<br/>　　经过这么多年的发展，Linux Rootkit IV功能变的越来越完善，具有的特征也越来越多。不过，虽然它的代码非常庞大，却非常易于安装和使用，只要执行make install就可以成功安装。如果你还要安装一个shadow工具，只要执行make shadow install就可以了。注意：Linux Rootkit IV只能用于Linux 2.x的内核。下面我们简单地介绍一下Linux Rootkit IV包含的各种工具，详细的介绍请参考其发布包的README文件。<br/>　　隐藏入侵者行踪的程序<br/>　　为了隐藏入侵者的行踪，Linux Rootkit IV的作者可谓煞费心机，编写了许多系统命令的替代程序，使用这些程序代替原由的系统命令，来隐藏入侵者的行踪。这些程序包括：<br/>　　ls、find、du<br/>　　这些程序会阻止显示入侵者的文件以及计算入侵者文件占用的空间。在编译之前，入侵者可以通过 ROOTKIT_FILES_FILE设置自己的文件所处的位置，默认是/dev/ptyr。注意如果在编译时使用了SHOWFLAG选项，就可以使用 ls -/命令列出所有的文件。这几个程序还能够自动隐藏所有名字为：ptyr、hack.dir和W4r3z的文件。<br/>　　ps、top、pidof<br/>　　这几个程序用来隐藏所有和入侵者相关的进程。<br/>　　netstat<br/>　　隐藏出/入指定IP地址或者端口的网络数据流量。<br/>　　killall<br/>　　不会杀死被入侵者隐藏的进程。<br/>　　ifconfig<br/>　　如果入侵者启动了嗅探器，这个程序就阻止PROMISC标记的显示，使系统管理员难以发现网络接口已经处于混杂模式下。<br/>　　crontab<br/>　　隐藏有关攻击者的crontab条目。<br/>　　tcpd<br/>　　阻止向日志中记录某些连接<br/>　　syslogd<br/>　　过滤掉日志中的某些连接信息<br/>　　木马程序<br/>　　为本地用户提供后门，包括：<br/>　　chfn<br/>　　提升本地普通用户权限的程序。运行chfn，在它提示输入新的用户名时，如果用户输入rookit密码，他的权限就被提升为root。默认的rootkit密码是satori。<br/>　　chsh<br/>　　也是一个提升本地用户权限的程序。运行chsh，在它提示输入新的shell时，如果用户输入rootkit密码，他的权限就被提升为root。<br/>　　passwd<br/>　　和上面两个程序的作用相同。在提示你输入新密码时，如果输入rookit密码，权限就可以变成root。<br/>　　login<br/>　　允许使用任何帐户通过rootkit密码登录。如果使用root帐户登录被拒绝，可以尝试一下rewt。当使用后门时，这个程序还能够禁止记录命令的历史记录。<br/>　　木马网络监控程序<br/>　　这些程序为远程用户提供后门，可以向远程用户提供inetd、rsh、ssh等服务，具体因版本而异。随着版本的升级，Linux Rootkit IV的功能也越来越强大，特征也越来越丰富。一般包括如下网络服务程序：<br/>　　inetd<br/>　　特洛伊inetd程序，为攻击者提供远程访问服务。<br/>　　rshd<br/>　　为攻击者提供远程shell服务。攻击者使用rsh -l rootkitpassword host command命令就可以启动一个远程root shell。<br/>　　sshd<br/>　　为攻击者提供ssh服务的后门程序。<br/>　　工具程序<br/>　　所有不属于以上类型的程序都可以归如这个类型，它们实现一些诸如：日志清理、报文嗅探以及远程shell的端口绑定等功能，包括：<br/>　　fix<br/>　　文件属性伪造程序<br/>　　linsniffer<br/>　　报文嗅探器程序。<br/>　　sniffchk<br/>　　一个简单的bash shell脚本，检查系统中是否正有一个嗅探器在运行。<br/>　　wted<br/>　　wtmp/utmp日志编辑程序。你可以使用这个工具编辑所有wtmp或者utmp类型的文件。<br/>　　z2<br/>　　utmp/wtmp/lastlog日志清理工具。可以删除utmp/wtmp/lastlog日志文件中有关某个用户名的所有条目。不过，如果用于Linux系统需要手工修改其源代码，设置日志文件的位置。<br/>　　bindshell rootkit<br/>　　在某个端口上绑定shell服务，默认端口是12497。为远程攻击者提供shell服务。<br/>　　如何发现rootkit<br/>　　很显然，只有使你的网络非常安全让攻击者无隙可乘，才能是自己的网络免受rootkit的影响。不过，恐怕没有人能够提供这个保证，但是在日常的网络管理维护中保持一些良好的习惯，能够在一定程度上减小由rootkit造成的损失，并及时发现rootkit的存在。<br/>　　首先，不要在网络上使用明文传输密码，或者使用一次性密码。这样，即使你的系统已经被安装了rootkit，攻击者也无法通过网络监听，获得更多用户名和密码，从而避免入侵的蔓延。<br/>　　使用Tripwire和aide等检测工具能够及时地帮助你发现攻击者的入侵，它们能够很好地提供系统完整性的检查。这类工具不同于其它的入侵检测工具，它们不是通过所谓的攻击特征码来检测入侵行为，而是监视和检查系统发生的变化。 Tripwire首先使用特定的特征码函数为需要监视的系统文件和目录建立一个特征数据库，所谓特征码函数就是使用任意的文件作为输入，产生一个固定大小的数据(特征码)的函数。入侵者如果对文件进行了修改，即使文件大小不变，也会破坏文件的特征码。利用这个数据库，Tripwire可以很容易地发现系统的变化。而且文件的特征码几乎是不可能伪造的，系统的任何变化都逃不过Tripwire的监视(当然，前提是你已经针对自己的系统做了准确的配置:P，关于Tripwire和aide的使用请参考本站的相关文章)。最后，需要能够把这个特征码数据库放到安全的地方。<br/>　　Rootkit 是一种特殊类型的 malware（恶意软件）。Rootkit 之所以特殊是因为您不知道它们在做什么事情。Rootkit 基本上是无法检测到的，而且几乎不可能删除它们。虽然检测工具在不断增多，但是恶意软件的开发者也在不断寻找新的途径来掩盖他们的踪迹。<br/>　　Rootkit 的目的在于隐藏自己以及其他软件不被发现。它可以通过阻止用户识别和删除攻击者的软件来达到这个目的。Rootkit 几乎可以隐藏任何软件，包括文件服务器、键盘记录器、Botnet 和 Remailer。许多 Rootkit 甚至可以隐藏大型的文件集合并允许攻击者在您的计算机上保存许多文件，而您无法看到这些文件。<br/>　　Rootkit 本身不会像病毒或蠕虫那样影响计算机的运行。攻击者可以找出目标系统上的现有漏洞。漏洞可能包括：开放的网络端口、未打补丁的系统或者具有脆弱的管理员密码的系统。在获得存在漏洞的系统的访问权限之后，攻击者便可手动安装一个 Rootkit。这种类型的偷偷摸摸的攻击通常不会触发自动执行的网络安全控制功能，例如入侵检测系统。<br/>　　找出 Rootkit 十分困难。有一些软件包可以检测 Rootkit。这些软件包可划分为以下两类：基于签名的检查程序和基于行为的检查程序。基于签名（特征码）的检查程序，例如大多数病毒扫描程序，会检查二进制文件是否为已知的 Rootkit。基于行为的检查程序试图通过查找一些代表 Rootkit 主要行为的隐藏元素来找出 Rootkit。一个流行的基于行为的 Rootkit 检查程序是 Rootkit Revealer.<br/>　　在发现系统中存在 Rootkit 之后，能够采取的补救措施也较为有限。由于 Rootkit 可以将自身隐藏起来，所以您可能无法知道它们已经在系统中存在了多长的时间。而且您也不知道 Rootkit 已经对哪些信息造成了损害。对于找出的 Rootkit，最好的应对方法便是擦除并重新安装系统。虽然这种手段很严厉，但是这是得到证明的唯一可以彻底删除 Rootkit 的方法。<br/>　　防止 Rootkit 进入您的系统是能够使用的最佳办法。为了实现这个目的，可以使用与防范所有攻击计算机的恶意软件一样的深入防卫策略。深度防卫的要素包括：病毒扫描程序、定期更新软件、在主机和网络上安装防火墙，以及强密码策略等。]]></description>
		</item>
		
			<item>
			<link>http://www.cnsos.net/article.asp?id=129</link>
			<title><![CDATA[关于main()函数[转]]]></title>
			<author>wzwyc@yeah.net(aci)</author>
			<category><![CDATA[编程开发]]></category>
			<pubDate>Sat,13 Dec 2008 18:41:28 +0800</pubDate>
			<guid>http://www.cnsos.net/default.asp?id=129</guid>
		<description><![CDATA[*/ --------------------------------------------------------------------------------------<br/>*/ 出自： 编程中国&nbsp;&nbsp;<a href="http://www.bc-cn.net" target="_blank" rel="external">http://www.bc-cn.net</a><br/>*/ 作者： jackys2006&nbsp;&nbsp;&nbsp;&nbsp;E-mail：jackys99@163.com&nbsp;&nbsp;&nbsp;&nbsp;QQ：61520540<br/>*/ 时间： 2007-8-19&nbsp;&nbsp;编程论坛首发<br/>*/ 声明： 尊重作者劳动，转载请保留本段文字<br/>*/ --------------------------------------------------------------------------------------<br/><br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;C的设计原则是把函数作为程序的构成模块。main()函数称之为主函数，一个C程序总是从main()函数开始执行的。<br/><br/>一、main()函数的形式<br/>&nbsp;&nbsp;&nbsp;&nbsp;在最新的 C99 标准中，只有以下两种定义方式是正确的：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int main( void )－－无参数形式<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int main( int argc, char *argv[] )－－带参数形式<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;int指明了main()函数的返回类型，函数名后面的圆括号一般包含传递给函数的信息。void表示没有给函数传递参数。关于带参数的形式，我们等会讨论。<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;浏览老版本的C代码，将会发现程序常常以<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;main()<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;这种形式开始。C90标准允许这种形式，但是C99标准不允许。因此即使你当前的编译器允许，也不要这么写。<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;你还可能看到过另一种形式：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;void main()<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;有些编译器允许这种形式，但是还没有任何标准考虑接受它。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地表示：void main( ) 的定义从来就不存在于 C++ 或者 C 。所以，编译器不必接受这种形式，并且很多编译器也不允许这么写。<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;坚持使用标准的意义在于：当你把程序从一个编译器移到另一个编译器时，照样能正常运行。<br/><br/><br/>二、main()函数的返回值<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;从前面我们知道main()函数的返回值类型是int型的，而程序最后的 return 0; 正与之遥相呼应，0就是main()函数的返回值。那么这个0返回到那里呢？返回给操作系统，表示程序正常退出。因为return语句通常写在程序的最后，不管返回什么值，只要到达这一步，说明程序已经运行完毕。而return的作用不仅在于返回一个值，还在于结束函数。<br/>&nbsp;&nbsp;&nbsp;&nbsp;现在我们来做一个小试验（注意：本人的系统是Windows XP, 编译环境是TC）来观察main()函数的返回值。编写如下代码并编译运行：<br/><br/>&nbsp;&nbsp; //a.c&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;#include &#34;stdio.h&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;int main(void)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;I love you.&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;将这个文件保存为a.c，编译运行后会生成一个a.exe文件。现在打开命令提示符，在命令行里运行刚才编译好的可执行文件，然后输入&nbsp;&nbsp; echo %ERRORLEVEL% ，回车，就可以看到程序返回 一个0 。如果把 return 0; 改为 return 99; ，那么很显然，再次执行上述步骤以后你可以看到程序返回99。要是你这样写 return 99.99; 那还是返回99，因为99.99被传给操作系统之前，被强制类型转换成整数类型了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;现在，我们把a.c改回原来的代码，然后再编写另一个程序b.c：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//b.c<br/>&nbsp;&nbsp;&nbsp;&nbsp;#include &#34;stdio.h&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;int main(void)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;\nI&#39;m too.&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0; <br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;编译运行后打开命令提示符，在命令行里输入a&amp;&amp;b 回车，这样你就可以看到《人鬼情未了》里面经典的爱情对白：<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;I love you.<br/>&nbsp;&nbsp;&nbsp;&nbsp;I&#39;m too.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; 的含义是：如果 &amp;&amp; 前面的程序正常退出，则继续执行 &amp;&amp; 后面的程序，否则不执行。所以，要是把a.c里面的 return 0; 删除或者改为 return 99; ，那么你只能看到 I love you. 。也就是说，程序b.c就不执行了。现在，大家该明白 return 0; 的作用了吧。<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>三、main()函数的参数<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;C编译器允许main()函数没有参数，或者有两个参数（有些实现允许更多的参数，但这只是对标准的扩展）。这两个参数，一个是int类型，一个是字符串类型。第一个参数是命令行中的字符串数。按照惯例（但不是必须的），这个int参数被称为argc（argument count）。大家或许现在才明白这个形参为什么要取这么个奇怪的名字吧，呵呵！至于英文的意思，自己查字典吧。第二个参数是一个指向字符串的指针数组。命令行中的每个字符串被存储到内存中，并且分配一个指针指向它。按照惯例，这个指针数组被称为argv（argument value）。系统使用空格把各个字符串格开。一般情况下，把程序本身的名字赋值给argv[0]，接着，把最后的第一个字符串赋给argv[1]，等等。<br/>&nbsp;&nbsp;&nbsp;&nbsp;现在我们来看一个例子：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//c.c&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;#include &#34;stdio.h&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;int main(int argc, char *argv[])<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int count;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;The command line has %d arguments: \n&#34;,argc-1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(count=1;count&lt;argc;count++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;%d: %s\n&#34;,count,argv[count]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;编译运行，在命令行输入c I love you 回车，下面是从命令行运行该程序的结果：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;The command line has 3 arguments: <br/>&nbsp;&nbsp;&nbsp;&nbsp;1：I<br/>&nbsp;&nbsp;&nbsp;&nbsp;2：love<br/>&nbsp;&nbsp;&nbsp;&nbsp;3：you<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;从本例可以看出，程序从命令行中接受到4个字符串（包括程序名），并将它们存放在字符串数组中，其对应关系：<br/>&nbsp;&nbsp;&nbsp;&nbsp;argv[0]&nbsp;&nbsp;------&gt;&nbsp;&nbsp;&nbsp;&nbsp;c(程序名) <br/>&nbsp;&nbsp;&nbsp;&nbsp;argv[1]&nbsp;&nbsp;------&gt;&nbsp;&nbsp;&nbsp;&nbsp;I <br/>&nbsp;&nbsp;&nbsp;&nbsp;argv[2]&nbsp;&nbsp;------&gt;&nbsp;&nbsp;&nbsp;&nbsp;love<br/>&nbsp;&nbsp;&nbsp;&nbsp;argv[3]&nbsp;&nbsp;------&gt;&nbsp;&nbsp;&nbsp;&nbsp;you<br/>&nbsp;&nbsp;&nbsp;&nbsp;至于argc的值，也即是参数的个数，程序在运行时会自动统计，不必我们操心。<br/>&nbsp;&nbsp;&nbsp;&nbsp;这个例子中，每个字符串都时一个单词（字母），那既然是字符串，要把一句话当作参数赋给程序该怎么办？你可以在命令行里这样输入 c&nbsp;&nbsp;&#34;I love you.&#34;&nbsp;&nbsp;&#34;I&#39;m too.&#34;。程序运行结果：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;The command line has 2 arguments: <br/>&nbsp;&nbsp;&nbsp;&nbsp;1：I love you.<br/>&nbsp;&nbsp;&nbsp;&nbsp;2：I&#39;m too.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;其对应关系：<br/>&nbsp;&nbsp;&nbsp;&nbsp;argv[0]&nbsp;&nbsp;------&gt;&nbsp;&nbsp;&nbsp;&nbsp;c(程序名) <br/>&nbsp;&nbsp;&nbsp;&nbsp;argv[1]&nbsp;&nbsp;------&gt;&nbsp;&nbsp;&nbsp;&nbsp;I love you.<br/>&nbsp;&nbsp;&nbsp;&nbsp;argv[2]&nbsp;&nbsp;------&gt;&nbsp;&nbsp;&nbsp;&nbsp;I&#39;m too.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;要注意的是，你在命令行的输入都将作为字符串形式存储于内存中。也就是说，如果你输入一个数字，那么要输出这个数字，你应该用%s格式而非%d或者其他。<br/>&nbsp;&nbsp;&nbsp;&nbsp;再来看一个例子：<br/>&nbsp;&nbsp;&nbsp;&nbsp;//d.c<br/>&nbsp;&nbsp;&nbsp;&nbsp;#include &#34;stdio.h&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;int main(int argc, char *argv[])<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FILE *fp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fp=fopen(argv[1],&#34;w&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fputs(&#34;I love you.&#34;,fp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose(fp);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;编译运行，打开命令行并输入d love.txt 回车。这样，打开d.c文件所在的目录，你会发现多了一个名为 love.txt 的文件，打开后里面的内容正是世界上说的最多的那句话。<br/>&nbsp;&nbsp;&nbsp;&nbsp;当然，你可能会说我不需要使用命令行参数就可以做到这些。是的，你当然可以。使用命令行参数的理由或许就是练习命令行用法，以备以后需要编写基于命令行的程序。还有一个好处是，不需要C环境就可以运行已经编译好的程序。比如，你把上面那个程序编译后生成的d.exe发给你的女朋友，再告诉她怎么运行，这样，你的女朋友可以用另一种方式体会到你对她的浓情蜜意。]]></description>
		</item>
		
</channel>
</rss>
