虽然很多用户使用Windows都有很长一段时间了,但是很多用户都不知道Windows中存在什么快捷键,包括笔者也是会使用几个比较普遍的快捷键。实际上很多快捷键都是非常有用的,让我们来看看:

  CTRL+A:选中活动窗口的所有内容

  CTRL+C:把选中的东西复制到粘贴板

  CTRL+F:显示“查找和替换”对话框

  CTRL+G:显示定位对话框

  CTRL+N:显示新建对话框

  CTRL+O:显示打开对话框

  CTRL+P:显示打印对话框

  CTRL+S:保存当前文档

  CTRL+V:粘贴

  CTRL+X:剪切

  CTRL+Z:撤销

  CTRL+F4:关闭当前活动窗口

  CTRL+拖放文件:复制拖放的文件

  CTRL+ESC:显示开始菜单

  CTRL+F6:打开活动应用程序的下一个文档窗口

  ALT+ENTER:显示选中对象的属性

  ALT+F4:关闭活动项目或者退出活动的程序

  ALT+空格:打开当前活动窗口的快捷菜单

  ALT+TAB:在打开窗口间切换

  ALT+ESC:以打开的顺序切换窗口

  F1:提供当前窗口或者选中项目的帮助文件

  F2:重命名选中的项目

  F3:搜索文件或文件夹

  F4:显示我的电脑或Windows Explorer中的地址栏

  F5:刷新活动窗口

  F6:在当前窗口中的元素间切换,与TAB键功能一样

  F10:激活当前窗口的菜单栏

  Win:显示或隐藏开始菜单

  Win+BREAK:显示系统属性对话框

  Win+D:显示桌面

  Win+M:最小化所有窗口

  Win+SHIFT+M:恢复最小化窗口

  Win+E:打开我的电脑

  Win+F:搜索文件或文件夹

  CTRL+Win+F:搜索计算机

  Win+F1:显示Windows帮助文件

  Win+L:锁住键盘

  Win+R:打开运行窗口

  Win+U:打开辅助工具管理器

  TAB:在选项间切换

  SHIFT+TAB:在选项间切换,顺序与TAB相反

  CTRL+TAB:在标签间进行切换

  CTRL+SHIFT+TAB:在标签间反向切换

  ALT+带下划线的字母:运行相应的命令或选择相应的选项

  空格键:如果焦点选中复选框,选择或反选复选框

  以下的快捷键用于与Windows资源管理器类型的程序:

  NUM LOCK+星号(*):显示选中文件夹的所有子文件夹

  NUM LOCK+加号(+):显示选中文件夹的内容

  NUM LOCK+减号(—):折叠选中文件夹

  相辛辛苦苦敲了大半天键盘,一篇文章眼看就快完成了,可是就在这时突然停电,或者程序停止了响应,甚至电脑死机,未完成的Word文档还没有保存……人世间最痛苦的事莫过于此。

  为了防止这样痛苦的事情发生,笔者觉得有必要向大家推荐防止Word文件丢失的方法。

  一、使用自动恢复功能:

  Word 2000/XP 能够自动恢复尚未保存的数据。大家只要单击“工具”菜单中的“选项”命令,然后单击“保存”标签,并选中“自动保存时间间隔”复选框,在“分钟”框中,输入时间间隔,以确定Word 2000/XP 保存文档的时间。时间越短,Word 2000/XP 保存文档越频繁,在 Word 2000/XP 中打开文档后出现断电或类似问题时,能够恢复的信息当然也就越多,一般我们设置为1分钟。

  经过上面的设置后,所有在发生断电或类似问题时处于打开状态的文档在下次启动Word时都会显示出来,大家可以对它们进行保存。不过在替换原有文档之前,请验证恢复文件包含有您需要的信息,不要覆盖了原先的文件。

  提示:

  (1)Word 2000/XP/XP的定时保存文件功能仅对DOC文件有效,其他文件无效,所以笔者建议您在编辑的时候先把文档存为Word格式,等编辑完成后再另存为其他格式;

  (2)“自动恢复”功能并不等同于正常的文档保存。如果在 Word 2000/XP 打开恢复文件后选择了不进行保存,则该文件将被删除,未保存的修改也将丢失。如果选择了保存恢复文件,它将会替换原文档(除非给它指定了一个新的文件名)。

  二、让文档自动备份

  如果我们的文档在保存的时候能够再保留一个备份的话,那无疑会使文档保险许多。而在Word 2000/XP中我们完全可以进行设置,让它保存文档的备份:

  单击“工具”菜单中的“选项”命令,接着选择“保存”标签,选中“保留备份”复选框,单击“确定”按钮。经过这样设置后, Word 2000/XP 就会自动保存文档的备份了。

  提示:

  (1)注意Word在编辑文档时会自动地保存其备份,它的扩展名不是“.bak”,而是“.wbk”,如果遇到文档打不开,则只要在打开的范围中选择“所有文件”,直接打开备份文档即可。

  (2)该备份提供了上一次所保存的副本,这样,原文档中会保存有当前所保存的信息,而副本中会保存有上次所保存的信息。每次保存文档时,新的备份都会取代已有的备份。这样就不用担心会不小心保存了不需要的信息或删除了原文件,保留备份可使工作成果免受损失。

  三、恢复受损文档中的文本

  有时候我们在试图打开一个文档时,计算机可能长时间无响应,则表示该文档可能已损坏。这时候同样不需担心,因为下次启动 Word 2000/XP 时,Word 2000/XP 会自动使用专门的文件恢复转换器来恢复损坏文档中的文本。也可随时用此文件转换器打开已损坏的文档并恢复其中的文本。而且操作起来也很简单:

  单击“工具”菜单中的“选项”命令,然后单击“常规”选项卡,并确认选中了“打开时确认转换”复选框,然后单击“确定”按钮。以后单击“打开”按钮 ,单击“文件类型”框中的“从任意文件中恢复文本”选项,成功打开损坏文档,可将它保存为 Word 格式或其他格式(例如,文本格式或 HTML 格式)。段落、页眉、页脚、脚注、尾注和域中的文字将被恢复为普通文字。

  提示:如果在“文件类型”框中没有看到“从任意文件中恢复文本”,则需要安装相应的文件转换器,单击“安装/卸载”选项卡上的“Microsoft Office”选项,并安装“文本恢复工具”即可。

作为一个程序员,在完成设计后还要根据程序的情况以及用户的反映不断对程序进行改进,这样才能不断地完善自己的作品。我在制作完软件商务网 http://www.bizsofts.com 的论坛后,发现人们总喜欢在帖子中加上各种有用的URL链接或Email地址。而我当初设计时没有考虑到这一点,使得这些URL链接或Email地址只能 以文字的形式而并不是以超链接的形式显示,其它浏览帖子的人还必须把这些URL链接拷贝到浏览器中或把Email地址拷贝到Outlook中才能转到相应 的链接地址或发送电子邮件到相应的Email地址。
  发现这个问题后,我就着手进行解决。首先是从网上查找有关这方面的现在代码,可惜的是,在搜索引擎上反复查找也没有发现这方面的文章。后来我一想,干脆我自己用ASP.NET编写一个。
  要想自动显示超链接的关键在于如何能正确识别超链接,毫无疑问的,最有效的方法是用正则表达式。正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式,描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取 出符合某个条件的子串等。.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类,用它就可以自动探测出文字中的URL链接或 Email地址。下面我具体讲讲如何用ASP.NET(C#)一步步实现我们的目的:

  首先,要想在ASP.NET(C#)中使用正则表达式就必须把 System.Text.RegularExpressions 这个命名空间包含进来:

using System.Text.RegularExpressions;

  第二步是用正则表达式识别URL超链接:

Regex urlregex = new Regex(@\"(http:\\/\\/([\\w.]+\\/?)\\S*)\",
RegexOptions.IgnoreCase|RegexOptions.Compiled);

  这里的代码是用正则表达式识别Email地址:

Regex emailregex = new Regex(@\"([a-zA-Z_0-9.-]+\\@[a-zA-Z_0-9.-]+\\.\\w+)\",
RegexOptions.IgnoreCase|RegexOptions.Compiled);

  第三步,当程序已经识别出URL超链接或Email地址后,必须用<a href=…>超链接</a>对这些超链接进行替换,这样才能把这些文字显示为链接的形式。我这里把它们全部包含在函数中:

private void Button1_Click(object sender, System.EventArgs e)
{
string strContent = InputTextBox.Text;
Regex urlregex = new Regex(@\"(http:\\/\\/([\\w.]+\\/?)\\S*)\",
RegexOptions.IgnoreCase| RegexOptions.Compiled);
strContent = urlregex.Replace(strContent,
\"<a href=\\\"\\\" target=\\\"_blank\\\"></a>\");
Regex emailregex = new Regex(@\"([a-zA-Z_0-9.-]+\\@[a-zA-Z_0-9.-]+\\.\\w+)\",
RegexOptions.IgnoreCase| RegexOptions.Compiled);
strContent = emailregex.Replace(strContent, \"<a href=mailto:></a>\");
lbContent.Text += \"<br>\"+strContent;
}

  通过以上几步,你就可以在网页上自动显示超链接以及Email地址了。欢迎大家下载本示例的源代码,以及到http://www.bizsofts.com 的论坛上观看实际效果。(作者注:该篇文章的英文版已经发表在CodePoject和CodeGuru上)

<SCRIPT language=JavaScript1.2>
message="任何款式的虚拟主机空间均可免费试用一周。(先试用,后付款!)所试用的空间是真实的空间,即试用空间=将要购买的空间。"
ns6switch=1
var ns6=document.getElementById&&!document.all
mes=new Array();
mes[0]=-1;
mes[1]=-4;
mes[2]=-7;mes[3]=-10;
mes[4]=-7;
mes[5]=-4;
mes[6]=-1;
num=0;
num2=0;
txt="";
function jump0(){
if (ns6&&!ns6switch){
jump.innerHTML=message
return
}
if(message.length > 6){
for(i=0; i != message.length;i++){
txt=txt+"<span style=‘position:relative;‘ id=‘n"+i+"‘>"+message.charAt(i)+"</span>"};
jump.innerHTML=txt;
txt="";
jump1a()
}
else{
alert("上海伯汉网络科技有限公司")
}
}
function jump1a(){
nfinal=(document.getElementById)? document.getElementById("n0") : document.all.n0
nfinal.style.left=-num2;
if(num2 != 9){
num2=num2+3;
setTimeout("jump1a()",50)
}
else{
jump1b()
}
}

function jump1b(){
nfinal.style.left=-num2;
if(num2 != 0){num2=num2-3;
setTimeout("jump1b()",50)
}
else{
jump2()
}
}
function jump2(){
txt="";
for(i=0;i != message.length;i++){
if(i+num > -1 && i+num < 7){
txt=txt+"<span style=‘position:relative;top:"+mes[i+num]+"‘>"+message.charAt(i)+"</span>"
}
else{txt=txt+"<span>"+message.charAt(i)+"</span>"}
}
jump.innerHTML=txt;
txt="";
if(num != (-message.length)){
num–;
setTimeout("jump2()",50)}
else{num=0;
setTimeout("jump0()",50)}}
</SCRIPT>
<DIV id=jumpx style="COLOR: #3C6897"></DIV>
<SCRIPT>
if (document.all||document.getElementById){
jump=(document.getElementById)? document.getElementById("jumpx") : document.all.jumpx
jump0()
}
else
document.write(message)
</SCRIPT>

终于将手上的已有资料整理了一下,帖到了Blog上面。不过还有好多没有帖。很晚了,不弄了。等有时间再接着弄。
我发现我在blogcn上的blog,在baidu上基本都可以搜到了。http://g0dspeed.blogcn.com
现在用上了这套Blog系统,虽然目前还有些BUG,但感觉爽多了,比用Blogcn的服务要快多了。Under Control的感觉就是好。

大家好,我是Asp.net的忠实爱好者,很想把这方面的经验和大家分享一下. 目前我选用的是时代互联(http://www.now.net.cn )的Asp.net+ACCESS空间(增强C).
欢迎大家一起进来讨论讨论!
——————————————————————————–

注意:要运行上述ACCESS例程请先下载数据库, 与例程放在同一目录下。
<%@ Import Namespace="System.Data" %>
<%@ Import NameSpace="System.Data.OleDb" %>
<script laguage="VB" runat="server">
Dim myConnection As OleDbConnection
Dim myCommand As OleDbCommand
sub page_load(sender as Object,e as EventArgs)
‘1.连接数据库
dim dbname as string
dbname=server.mappath("authors.mdb")
myConnection = New OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source="&dbname )
myConnection.Open()
la1.text="Connection Opened!"

‘2.添加记录
myCommand = New OleDbCommand( "Insert INTO Authors(Authors,country) Values(‘Simson‘,‘usa‘)", myConnection )
myCommand.ExecuteNonQuery()
la2.text="New Record Inserted!"

‘3 更新数据(Access)
myCommand = New OleDbCommand( "UPDATE Authors SET Authors=‘Bennett‘ WHERE Authors = ‘Simson‘", myConnection )
myCommand.ExecuteNonQuery()
la3.text="Record Updated!"

‘4 删除数据(access)
myCommand = New OleDbCommand( "DELETE FROM Authors WHERE Authors = ‘David‘", myConnection )
myCommand.ExecuteNonQuery()
la4.text="Record Deleted!"

‘5 使用DateGrid显示数据
myCommand = New OleDbCommand( "select * FROM Authors", myConnection )
MyDataGrid.DataSource=myCommand.Executereader()
MyDataGrid.DataBind()

end sub
</script>
<html>
<body>
<asp:label id="la1" runat="server" /><br>
<asp:label id="la2" runat="server" /><br>
<asp:label id="la3" runat="server" /><br>
<asp:label id="la4" runat="server" /><br>
<ASP:DataGrid id="MyDataGrid" runat="server"
BorderColor="black"
BorderWidth="1"
GridLines="Both"
CellPadding="3"
CellSpacing="0"
Font-Name="Verdana"
Font-Size="10pt"
HeaderStyle-BackColor="#aaaadd"
AlternatingItemStyle-BackColor="#eeeeee"
>
</asp:DataGrid>

</body>
</html>
注意:要运行上述ACCESS例程请先下载数据库,与例程放在同一目录下。

Asp.net+ACCESS这款时代互联的空间在使用的速度和稳定上我都是非常满意的!

Asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家权威机构—时代互联(www.now.net.cn),
他们在2003年便更新使用微软发布最新版本的ASP.net Web Matrix了.经笔者的使用测试,
他提供的ASP.NET空间性能非常的稳定,版本也会定期的更新升级!

使用详解和例程: http://www.now.net.cn/support/host/(这里有更多更细的Asp.net的详细例程)
全球免费咨询电话:http://www.now.net.cn/customer/moreline.net(很方便的)
时代互联的Asp.net空间购买方法:http://www.now.net.cn/host

Asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家权威机构—时代互联(www.now.net.cn),
他们在2003年便更新使用微软发布最新版本的ASP.net Web Matrix了.经笔者的使用测试,
他提供的ASP.NET空间性能非常的稳定,版本也会定期的更新升级!

喜欢asp.net和需要建网站的朋友,可以去网站看看,相信会在asp.net的使用方面会有更深的认识。

通过修改主板BIOS,来安装联想XP操作系统,具体修改方式和修改字节,网友们已经了解,但对于其它品牌机随带的XP安装系统,如何修改,请看:
  1.联想: HOME/PRO通用
  通过BIOS修改: 在BIOS任意地方加入"LEGEND Dragon"字符串,一般加入到BIOS Message哪里就可以了。注意大小写。
  通过DMI修改: 也是在任意地方加入"LEGEND Dragon"字符串,不过不要动一些关键的值,比如CPU类型什么的,在那种地方改会让你得不偿失的。
  2.清华同方: HOME/PRO通用
  通过BIOS修改:在BIOS任意地方加入"THTF"字符串,加入到BIOS Message就可以了,和上面的联想是可以共存的。
  通过DMI修改: 也是一样,加入"THTF"字符串到任意位置。
  3.HP: HOME/PRO通用 不过PRO在某些KT333以前的VIA芯片组主板上不能用,是它本身的问题,提示“硬盘不能大于512GB”。
  只能通过DMI修改,在System项里面把Manufacturer Name改成"Hewlett-Packard",在Base Board项里,同样把Manufacturer Name改成"Hewlett-Packard"。注意哦,执行HP恢复盘的标准恢复是要清空整个硬盘的,只想安装系统的请用Advanced模式来做。
  4.其他一些问题
  修改BIOS用相应的BIOS工具,AMI用AMIBCP修改,Award用MODBIN或MODBIN6来修改。最好在纯DOS下进行,否则可能出现保存不了的情况,MODBIN6不要用2.0beta版,会弄坏你的BIOS文件的。
修改DMI用DMICFG来修改,也必须在DOS下运行,比修改BIOS安全一些。推荐修改DMI,而不修改BIOS。
  接下来就是HP PRO的问题了,这个恢复盘在检测硬盘的时候有一个小BUG,会和某些VIA主板有冲突,现象就是显示“硬盘不能大于512GB”,经过测试KT333没有这个问题,而比较老的KT133系列不论任何品牌都有这个问题。建议使用VIA主板的朋友不要使用HP PRO,除非你用KT333,其他芯片组的主板没有问题。
如何挑选各个厂商的OEM呢?我的建议是不用挑选!因为各个厂商的OEM差别很小,只在BIOS检测部分有差异,毕竟都是出自M$之手,安装任何厂商的都一样。不必再浪费时间下载了,手里有什么就装什么吧。
  破解其他厂商的OEM的方法:安装前只要用上面几个厂商安装盘里的oembios.*这4个文件替换你想要安装的OEM光盘的i386下的相应文件就可以了。如果安装前没有替换,安装后提示激活,那么就用解压缩后的oembios.dat oembios.bin oembios.sig oembios.cat替换system32下面的相应文件就可以了。然后按照上面已知厂商的方法修改BIOS/DMI就行了,这样就省去了重新下载的麻烦。

  1.3721的卸载

  首先,用3721自带的卸载功能卸载3721,但是这个3721网络实名插件是使用Rundll32.exe调用连接库的,系统无法终止Rundll32.exe进程,所以我们必须重新启动计算机,按 F8 进入安全模式(F8 只能按一次,千万不要多按!)之后,单击开始 → 运行 regedit.exe 打开注册表,进入:

  HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun

  删除键:CnsMin,其键值为:Rundll32.exe C:WINNTDOWNLO~1CnsMin.dll,Rundll32

  (如果是win98,这里的 C:WINNTDOWNLO~1 为 C:WINDOWSDOWNLO~1)

  HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternetExplorerAdvancedOptions

  删除整个目录:!CNS

  这个目录在 Internet 选项 -> 高级 中加入了3721网络实名的选项。

  HKEY_LOCAL_MACHINESOFTWARE3721 以及 HKEY_CURRENT_USERSoftware3721

  删除整个目录:3721

  注:如果您安装了3721的其它软件,如"极品飞猫"等,则应删除整个目录:

  HKEY_LOCAL_MACHINESOFTWARE3721CnsMin 以及 

  HKEY_CURRENT_USERSoftware3721CnsMin

  HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMain

  删除键:CNSEnable 其键值为:a2c39d5f

  删除键:CNSHint 其键值为:a2c39d5f

  删除键:CNSList 其键值为:a2c39d5f

  在删除完注册表中的项之后,还需要删除存储在硬盘中的3721网络实名文件。

  删除如下文件:

  C:WINNTDOWNLO~1 目录下

  (如果是win98,这里的 C:WINNTDOWNLO~1 为 C:WINDOWSDOWNLO~1 下同)

  2001-08-09 15:34

  3721

  2001-08-02 17:03 40,960 cnsio.dll

  2001-08-08 14:14 102,400 CnsMin.dll

  2001-08-24 23:14 42 CnsMin.ini

  2001-08-09 10:18 13,848 CnsMinEx.cab

  2001-07-06 17:57 32,768 CnsMinEx.dll

  2001-08-25 02:52 115 CnsMinEx.ini

  2001-08-25 02:51 17,945 CnsMinIO.cab

  2001-08-02 17:02 32,768 CnsMinIO.dll

  2001-08-24 23:15 40,793 CnsMinUp.cab

  C:WINNTDOWNLO~13721 目录下

  2001-08-02 17:03 40,960 cnsio.dll

  2001-08-24 15:53 102,400 CnsMin.dll

  2001-07-06 17:59 213 CnsMin.inf

  2001-08-24 15:48 28,672 CnsMinIO.dll

  以上文件全部删除,这样3721网络实名"病毒"就从您的计算机中全部清除

了。

  最后,重新启动计算机,进入正常模式。现在已经完全没有3721网络实名的

困扰了!

  2.阻止"淘宝"网弹出窗口的办法

  IE用户的免疫方法

  如果系统是win 2000/XP/2003,请在"开始"→"运行"中输入:

  notepad.exe %windir%\system32\drivers\etc\hosts

  如果系统是win 98/me,请在"开始"→"运行"中输入:

  notepad.exe %windir%\hosts

  如果系统提示:

  找不到文件hosts.txt是不是创建新的文件?请选择否

  在最后添加如下内容:

  #kill taobao

  0.0.0.0 www.taobao.com

  0.0.0.0 page.taobao.com

  0.0.0.0 search.taobao.com

  0.0.0.0 taobao.com

  0.0.0.0 www.unionsky.cn #掏宝网广告代理

  0.0.0.0 www.allyes.com #掏宝网广告代理

  保存后,重启计算机即可。(XP/2003系统不需重启)

  如果在前面操作遇到提示找不到文件hosts.txt,请按照以下步骤保存:

  用菜单:文件–>另存为

  在"文件另存为"对话框中,把文件类型改为"所有文件(*.*)"

  再输入文件名:

  如果系统是win 2000/XP/2003,请输入(建议复制粘贴):

  %windir%\system32\drivers\etc\hosts

  如果系统是win 98/me,请输入(建议复制粘贴):

  %windir%\hosts

  点[确定]按钮。

  用My IE2、GreenBrowser、Maxthon屏蔽办法:

  启动窗口过滤、网页内容过滤

  把下列网页加入弹出窗口过滤、网页内容过滤列表:

  http://*.unionsky.cn/*

  http://*.unionsky.*/*.*

  http://www.unionsky.cn/script/*

  http://www.unionsky.cn/script/*.*

  http://adtaobao.allyes.com/*

  3.如何删除dudu加速器

  第一次安装dudu后,在C:\Program Files下生成HDP文件夹;在进程里表现

出来的是MSHTA.exe和henbang.exe,分别对应的运行窗口和驻留在任务栏上的

henbang,启动项里会添加"很棒小秘书"(手动安装时会提示)。卸载它,先在

"添加/删除程序"里,发现有 HAP 和 很棒小秘书 ,直接执行卸载。

  注意的是,先执行卸载"HAP",然后再执行卸载"很棒小秘书"。否则,

C:\Program Files\HDP依然存在,且程序完整,执行的删除没有完成。最后检查,

往system32里写入的三个文件(二个ini文件,一个hbhap.dll 文件),也成功删

除。

  所以,如果大家电脑里有这个软件且一时无法卸载的或提示pupw.sys错误

的,可主动安装一次,然后按上面方法执行卸载。

  另检查一下是否有C:\Program Files\HBClient,如果有,说明系统里还装有装

上 很棒通行证 ,可在添加删除里执行卸载 Henbang Passport 。

  4.中文通用网址的卸载

  首先进入安全模式。把C:\Program Files目录下的CNNIC目录给删除,然后打

开注册表编辑器。在运行-〉regedit,在安全模式下就可以删除这两个键值了。

    在安全模式下把Run目录下的CdnCtr和ExFilter这两个键值删除。然后

对注册表进行查找。查找一切和CNNIC、cdnup.exe字符有关的键值和目录。统统

删除。OK。现在再重新启动机器。烦人的CNNIC终于离我而去了。不过CNNIC

这样被删除之后。好像会导致不能在IE窗口中输入中文。不知道有没有其它人碰

到这种情况。还有一个方法可以避免下次再次运行这个烦人的插件。新建一个文本

文件,内容如下:

  REGEDIT4

  #9A578C98-3C2F-4630-890B-FC04196EF420 /CNNIC

  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX

Compatibility\{9A578C98-3C2F-4630-890B-FC04196EF420}]

  "Compatibility Flags"=dword:00000400

  保存为.reg的文件,然后双击执行此文件即可。

  5."很棒小秘书"卸载方法

  双击"c:\windows\system32"下的uninstall.exe 或者henbangkiller.exe 即可,

  然后删除这两个文件和C:\Program Files\henbang文件夹。

  如果你是xp sp2版,可以按照以下方法关闭它:

  1:首先打开ie,然后选择"internet选项"

  2:选择"程序"页,点击"管理加载项"

  3:选中"UrlMonitor Class",选择禁用此项

  4:OK了

  最好运行msconfig将winup.exe的加载项去掉

  木马 winup.exe 彻底删除方法

  木马 winup.exe经常和"很棒小秘书"一同出现,所以也要一起清除。

  1、 在IE的工具里点"管理加载项",禁用Downloadvalue Class , EyeOnIe Class ,

  URLMonitor Class

  2、在system32中运行一下henbangkiller.exe 再删除 winhtp.dll hap.dll

  xpieknl.dll winup.exe

  3、在注册表中删除

  HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run下的

winup 键

  HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run下

的 updata键

  在msconfig里面还有一个可疑的东西:msstart.exe 在任务管理器里干掉

msstart的进程, 然后再到system32目录下delete掉msstart.exe这个文件。

  6."网络猪"与"划词搜索"的卸载

  网络猪与划词搜索虽然可以通过添加\删除软件进行卸载,但是总卸载不干

净,必须要手动删除安装目录。为此你首先需要卸载掉网络猪与划词搜索;然后单

击"开始"-"运行",输入"msconfig",回车后在弹出的窗口中选择"启动"

标签,在启动中找到"SEARCH.EXE",去除前边的勾选;按"Ctrl+Shift+ESC"

打开"任务管理器",在进程中结束"SEARCH.EXE";单击"开始"-"运

行",输入"regedit",打开注册表,搜索"SEARCH.EXE"的项值,删除相关的

项。最后删除整个安装目录。

  7 eBay 易趣

  详见常用反制工具

  8 青娱乐聊天软件

  控制面板→添加\删除程序 即可卸载

  9 百度搜霸、百度超级搜霸

  控制面板→添加\删除程序 即可卸载

  10 一搜工具条

控制面板→添加\删除程序 即可卸载

1、好好规划自己的路,不要跟着感觉走;

  根据个人的理想来安排自己的生活,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,痛快一些,那么就需要慎重安排自己的的轨 迹,从一个行业入手逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的 体会以后,钱根本不是问题,频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手。

  2、可以做技术的,切不可沉湎于技术;

  千万不可一门心思钻营技术,给自己造成很多压力,如果你的心思全部放在上面那么注定你将成为孔乙己一类的人物,适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的支柱,除非你只愿意到老,还是个工程师。

  3、不要去做技术高手,只去做综合素质高手;

  在企业里工作,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官,”这是普遍的、典型的工程师的迂腐之言,你想想,老板搞经 营那么多年难道见识不如你这个新兵?人家或许善于管理,善于领会老板意图,善于部门协调等等等,因此务必培养自己多方面的能力,包括,管理,亲和力,公关 能力等要成为最综合素质的高手则前途无量,技术以外的技能才是更重要的本事,从古到今,一律如此。

  4、多交“三教九流”的朋友;

  不要只和工程师交往,认为有共同语言,其实更重要的是和其他类人物交往,如果你希望有朝一日当老板或高层管理者,那么你整日面对的就是这些 人。了解他们的经历,思维习惯,爱好,学习他处理问题的模式,了解社会各个角落的现象和问题,这是以后发展的巨大本钱,没有这些以后就会笨手笨脚,跌跌撞 撞,遇到重重困难,交不少学费的成功的概率大大降低。

  5、知识涉猎不仅要专,还一定要广;

  多看看其他方面的书,金融,财会,进出口,税务,法律等等为以后做一些积累的以后的用处会更大,会少交许多的学费。

  6、抓住时机向技术管理或市场销售方面转变;

  要想有前途就不能一直搞开发,适当时候要转变为管理和或销售的前途会更大,以前搞技术也没有白搞,以后还用得着,搞管理可以培养自己的领导能力,搞销售可以培养自己的市场概念和思维,同时为自己以后发展积累庞大的人脉,应该说这才是前途的真正支柱。

  7、逐渐客户自己的心理弱点和性格缺陷;

  多疑,敏感,犹豫不决,胆怯,多虑,这些工程师普遍存在的性格弱点必须改变,很难吗,只在床上想一想当然不可能改变,去帮朋友守一个月地摊,包准有效果,去实践,而不要只想,不克服这些缺点,一切不可能,甚至连项目经理都当不好,—尽管你可能技术不错。

  8、工作的同时要为以后做准备,建立自己的工作的环境;

  及早为自己配置一个工作环境,装备电脑,模拟器,编程器等,业余时间可以接点活,一方面接触市场,培养市场感觉,同时也积累资金,更重要的是 准备自己的产品,咱搞技术的没有钱,只有技术,技术的代表不是学历和证书,而是产品,拿出像样的产品,就可以技术转让或与人合作搞企业,先把东西准备好, 等待机会,否则,有了机会也抓不住。

  9、要学会善于推销自己;

  不仅要干,还要能说,能写,善于利用一切机会推销自己,树立自己的品牌形象,要创造条件让别了解自己,不然老板怎么知道你能干,外面的投资人 怎么相信你,提早把自己推销出去,机会自然会来找你,搞个个人主页是个好主意,特别是培养自己在行业的名气,有了名气,高薪机会自不在话下,更重要的是有 合作的机会。

  10、该出手时便出手。

  永远不可能有百分之百把握,条件差不多就要大胆去干,去闯出自己的事业,不要犹豫,不要彷徨,干了不一定成功,但至少为下一次冲击积累了经验,不干永远没出息,而且要干成必然要经历失败,不经历风雨,怎么见彩虹,没有人能随随便便成功。

本文是我在进行MS-Windows、HP-Unix网络编程的实践过程中总结出来的一些经验,仅供大家参考。本文所谈到的Socket函数如果没有特别说明,都是指的Windows Socket API。

  一、WSAStartup函数

  int WSAStartup(
  WORD wVersionRequested,
  LPWSADATA lpWSAData
  );

  使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本, 其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSAStartup函数 时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的 Socket库中的其它Socket函数了。该函数执行成功后返回0。

  例:假如一个程序要使用2.1版本的Socket,那么程序代码如下

  wVersionRequested = MAKEWORD( 2, 1 );
  err = WSAStartup( wVersionRequested, &wsaData );

  二、WSACleanup函数

  int WSACleanup (void);

  应用程序在完成对请求的Socket库的使用后,要调用WSACleanup函数来解除与Socket库的绑定并且释放Socket库所占用的系统资源。

  三、socket函数

  SOCKET socket(
  int af,
  int type,
  int protocol
  );

  应用程序调用socket函数来创建一个能够进行网络通信的套接字。第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议 族,该参数置PF_INET;第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM;第三 个参数指定应用程序所使用的通信协议。该函数如果调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID_SOCKET。套接字描述符是一 个整数类型的值。每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接 字的描述符,另一个字段存放套接字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描 述符表但是套接字数据结构都是在操作系统的内核缓冲里。下面是一个创建流套接字的例子:

  struct protoent *ppe;
  ppe=getprotobyname("tcp");
  SOCKET ListenSocket=socket(PF_INET,SOCK_STREAM,ppe->p_proto);

  四、closesocket函数

  int closesocket(
  SOCKET s
  );

  closesocket函数用来关闭一个描述符为s套接字。由于每个进程中都有一个套接字描述符表,表中的每个套接字描述符都对应了一个位于 操作系统缓冲区中的套接字数据结构,因此有可能有几个套接字描述符指向同一个套接字数据结构。套接字数据结构中专门有一个字段存放该结构的被引用次数,即 有多少个套接字描述符指向该结构。当调用closesocket函数时,操作系统先检查套接字数据结构中的该字段的值,如果为1,就表明只有一个套接字描 述符指向它,因此操作系统就先把s在套接字描述符表中对应的那条表项清除,并且释放s对应的套接字数据结构;如果该字段大于1,那么操作系统仅仅清除s在 套接字描述符表中的对应表项,并且把s对应的套接字数据结构的引用次数减1。

  closesocket函数如果执行成功就返回0,否则返回SOCKET_ERROR。

  五、send函数

  int send(
  SOCKET s,
  const char FAR *buf,
  int len,
  int flags
  );

  不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通 常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参数指明一个存放应用程序要发送数据的缓冲区;第三个参数指明 实际要发送的数据的字节数;第四个参数一般置0。这里只描述同步Socket的send函数的执行流程。当调用该函数时,send先比较待发送数据的长度 len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR;如果len小于或者等于s的发送缓冲区 的长度,那么send先检查协议是否正在发送s的发送缓冲中的数据,如果是就等待协议把数据发送完,如果协议还没有开始发送s的发送缓冲中的数据或者s的 发送缓冲中没有数据,那么send就比较s的发送缓冲区的剩余空间和len,如果len大于剩余空间大小send就一直等待协议把s的发送缓冲中的数据发 送完,如果len小于剩余空间大小send就仅仅把buf中的数据copy到剩余空间里(注意并不是send把s的发送缓冲中的数据传到连接的另一端的, 而是协议传的,send仅仅是把buf中的数据copy到s的发送缓冲区的剩余空间里)。如果send函数copy数据成功,就返回实际copy的字节 数,如果send在copy数据时出现错误,那么send就返回SOCKET_ERROR;如果send在等待协议传送数据时网络断开的话,那么send 函数也返回SOCKET_ERROR。要注意send函数把buf中的数据成功copy到s的发送缓冲的剩余空间里后它就返回了,但是此时这些数据并不一 定马上被传到连接的另一端。如果协议在后续的传送过程中出现网络错误的话,那么下一个Socket函数就会返回SOCKET_ERROR。(每一个除 send外的Socket函数在执行的最开始总要先等待套接字的发送缓冲中的数据被协议传送完毕才能继续,如果在等待时出现网络错误,那么该Socket 函数就返回SOCKET_ERROR)

  注意:在Unix系统下,如果send在等待协议传送数据时网络断开的话,调用send的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。

六、recv函数

  int recv(
  SOCKET s,
  char FAR *buf,
  int len,
  int flags
  );

  不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符;第二个参数指明一 个缓冲区,该缓冲区用来存放recv函数接收到的数据;第三个参数指明buf的长度;第四个参数一般置0。这里只描述同步Socket的recv函数的执 行流程。当应用程序调用recv函数时,recv先等待s的发送缓冲中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据时出现网络错误,那么 recv函数返回SOCKET_ERROR,如果s的发送缓冲中没有数据或者数据被协议成功发送完毕后,recv先检查套接字s的接收缓冲区,如果s接收 缓冲区中没有数据或者协议正在接收数据,那么recv就一直等待,只到协议把数据接收完毕。当协议把数据接收完毕,recv函数就把s的接收缓冲中的数据 copy到buf中(注意协议接收到的数据可能大于buf的长度,所以在这种情况下要调用几次recv函数才能把s的接收缓冲中的数据copy完。 recv函数仅仅是copy数据,真正的接收数据是协议来完成的),recv函数返回其实际copy的字节数。如果recv在copy时出错,那么它返回 SOCKET_ERROR;如果recv函数在等待协议接收数据时网络中断了,那么它返回0。

  注意:在Unix系统下,如果recv函数在等待协议接收数据时网络断开了,那么调用recv的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。

  七、bind函数

  int bind(
  SOCKET s,
  const struct sockaddr FAR *name,
  int namelen
  );

  当创建了一个Socket以后,套接字数据结构中有一个默认的IP地址和默认的端口号。一个服务程序必须调用bind函数来给其绑定一个IP 地址和一个特定的端口号。客户程序一般不必调用bind函数来为其Socket绑定IP地址和断口号。该函数的第一个参数指定待绑定的Socket描述 符;第二个参数指定一个sockaddr结构,该结构是这样定义的:

  struct sockaddr {
  u_short sa_family;
  char sa_data[14];
  };

  sa_family指定地址族,对于TCP/IP协议族的套接字,给其置AF_INET。当对TCP/IP协议族的套接字进行绑定时,我们通常使用另一个地址结构:

  struct sockaddr_in {
  short sin_family;
  u_short sin_port;
  struct in_addr sin_addr;
  char sin_zero[8];
  };

  其中sin_family置AF_INET;sin_port指明端口号;sin_addr结构体中只有一个唯一的字段s_addr,表示 IP地址,该字段是一个整数,一般用函数inet_addr()把字符串形式的IP地址转换成unsigned long型的整数值后再置给s_addr。有的服务器是多宿主机,至少有两个网卡,那么运行在这样的服务器上的服务程序在为其Socket绑定IP地址时 可以把htonl(INADDR_ANY)置给s_addr,这样做的好处是不论哪个网段上的客户程序都能与该服务程序通信;如果只给运行在多宿主机上的 服务程序的Socket绑定一个固定的IP地址,那么就只有与该IP地址处于同一个网段上的客户程序才能与该服务程序通信。我们用0来填充 sin_zero数组,目的是让sockaddr_in结构的大小与sockaddr结构的大小一致。下面是一个bind函数调用的例子:

  struct sockaddr_in saddr;
  saddr.sin_family = AF_INET;
  saddr.sin_port = htons(8888);
  saddr.sin_addr.s_addr = htonl(INADDR_ANY);
  bind(ListenSocket,(struct sockaddr *)&saddr,sizeof(saddr));

  八、listen函数

  int listen( SOCKET s, int backlog );

  服务程序可以调用listen函数使其流套接字s处于监听状态。处于监听状态的流套接字s将维护一个客户连接请求队列,该队列最多容纳backlog个客户连接请求。假如该函数执行成功,则返回0;如果执行失败,则返回SOCKET_ERROR。

  九、accept函数

  SOCKET accept(
  SOCKET s,
  struct sockaddr FAR *addr,
  int FAR *addrlen
  );

  服务程序调用accept函数从处于监听状态的流套接字s的客户连接请求队列中取出排在最前的一个客户请求,并且创建一个新的套接字来与客户 套接字创建连接通道,如果连接成功,就返回新创建的套接字的描述符,以后与客户套接字交换数据的是新创建的套接字;如果失败就返回 INVALID_SOCKET。该函数的第一个参数指定处于监听状态的流套接字;操作系统利用第二个参数来返回新创建的套接字的地址结构;操作系统利用第 三个参数来返回新创建的套接字的地址结构的长度。下面是一个调用accept的例子:

  struct sockaddr_in ServerSocketAddr;
  int addrlen;
  addrlen=sizeof(ServerSocketAddr);
  ServerSocket=accept(ListenSocket,(struct sockaddr *)&ServerSocketAddr,&addrlen);

  十、connect函数

  int connect(
  SOCKET s,
  const struct sockaddr FAR *name,
  int namelen
  );

  客户程序调用connect函数来使客户Socket s与监听趎ame所指定的计算机的特定端口上的服务Socket进行连接。如果连接成功,connect返回0;如果失败则返回SOCKET_ERROR。下面是一个例子:

  struct sockaddr_in daddr;
  memset((void *)&daddr,0,sizeof(daddr));
  daddr.sin_family=AF_INET;
  daddr.sin_port=htons(8888);
  daddr.sin_addr.s_addr=inet_addr("133.197.22.4");
  connect(ClientSocket,(struct sockaddr *)&daddr,sizeof(daddr));