用PHP开发网站成为一种流行,PHP程序员也随之火了起来,企业究竟对PHP程序员有哪些具体要求呢?下面是人才频道进行的总结:

一、技能

◆精通Unix/Linux系统下web数据库应用系统开发;
◆熟悉PHP等开发工具,熟练掌握SQL语法;
◆熟练配置LAMP服务器环境;

◆精通PHP、Javascript、HTML、C/C++等计算机常用语言
◆精通MySql等RDBMS,熟悉Linux开发环境;


◆熟悉HTML、JavaScript、PHP、C/C++等常用计算机语言
◆熟悉操作RDBMS,熟悉Linux平台。

关键字:[PHP]、[Linux]、[数据库/RDBMS]

二、软技能

◆能熟练的编写软件开发文档和良好的编码基础和习惯;
◆有良好的编程思想及扎实的算法基础;
◆有良好的沟通能力;
◆具有敬业精神和拼搏精神,工作勤奋认真;
◆有良好的职业道德和团队合作精神;

◆熟悉软件工程,代码编写规范,可以书写软件开发文档;
◆能够快速熟悉新技术,踏实肯干,有团队精神

◆能够快速熟悉新技术,踏实肯干,有团队精神
◆能够快速阅读计算机技术文档

关键字:[开发文档]、[沟通能力]、[团队精神]、[勤奋]

三、经验

◆1年以上B/S应用系统开发经验。
◆对有丰富开发经验的,可适当放宽学历专业要求

◆有两年以上Web开发工作经验,有大型网站工作经验者优先
发布日期: 2006-8-19 0:11:16
工作地点: 北京朝阳区
招收人数: 若干
要求学历: 本科
薪酬待遇: 面议
工作部门: 技术部
职位描述: ◆ 熟悉 Unix 操作环境 , 一年以上 Unix 平台 (FreeBSD/Linux) 开发经验;
◆ 熟练配置 LAMP(Linux+Apache+Mysql+PHP) 服务器环境;
◆ 精通 PHP 程序开发,一年以上的 PHP 项目开发经验;
◆ 精通 MySQL 数据库应用,具有相关应用开发经验及数据库规划能力;
◆ 熟悉 Web 相关开发技术,精通 JavaScript 、 CSS 、 XML 、 XSLT 等知识;
◆ 能熟练的编写软件开发文档和良好的编码基础和习惯;
◆ 有良好的沟通能力;
◆ 具有敬业精神和拼搏精神,工作勤奋认真;
◆ 有良好的职业道德和团队合作精神;



有意者请将简历发email到zhhchen@gmail.com

职位要求: 教育背景:
◆计算机相关专业本科以上学历。
经 验:
◆1年以上WEB应用系统开发经验。
◆对有丰富开发经验的,可适当放宽学历专业要求。

其它要求: 注:请在简历中写明以前项目的网址及期望待遇。
有意者请发简历邮件到:zhhchen@gmail.com
※飘网中国>>病毒攻防>>正文  


左键双击打不开盘符只能用右键菜单打开的解决方法

编辑: 来源: 更新:2006-8-9 20:10:14 点击:
【字体:小 大】


--------------------------------------------------------------------------------

摘要:电脑硬盘各逻辑盘用鼠标左键双击它无法打开,但用右键却可以打开,有时几个盘中只有一个能打开,有时只有C盘才能打开。而且这种故障可以通过各种移动磁盘传染到别的机子.
关键字:病毒
正文:
左键双击打不开硬盘盘符,只能用右键菜单中的打开选项才能打开;

ps:双击左键开始是用ACDSee打开,把ACDSee卸载后双击变成了搜索文件

我碰到一个电脑怪故障:就是电脑硬盘各逻辑盘用鼠标左键双击它无法打开,但用右键却可以打开,有时几个盘中只有一个能打开,有时只有C盘才能打开。而且这种故障可以通过各种移动磁盘传染到别的机子,以前我是用重装系统来解决,但现不行了,还要重新硬盘分区才行。但也用不到两天又故障依旧,求助各位高手指点。

======================================

电脑中毒后,升级瑞星,杀过毒,但出现除c盘外,d盘e盘两个分驱只能用鼠标在盘符上点右键,在弹出的菜单上选择“打开”才能打开,并且在菜单中第一项变为“自动播放”,双击会弹出选择打开文件关联的对话框。

解决方法:

1.点击windows桌面左下角的开始,选择:运行

2.在对话框中输入“regedit”

3.在注册表编辑器中展开
hkey_current_user\software\microsoft\windows\currentversion\explorer\mountpoints2

4.将子目录下所有带加号“+”的项依次展开,如有一项叫做“command”的,这就个就是关键了!将之前的“autorun”的目录整个删除。

关于SMSS.EXE病毒:
查系统进程,多了一个smss.exe,是在C:winsows下的,而它正常的正确的位置应该是c:windows\system32,而用msconfig.exe查看,发现自动开机运行的程序中多了两个C:winsows\smss.exe的启动项. 这个木马网上有很多删除方法,可以从安全模式启动,然后删C:windowssmss.exe,再将注册表中所有关于smss.exe的选项全部删除一般就可以了。

很可能你的机子中了rose病毒了. 自4月10号以来,在网路上流行一个叫“rose.exe”的病毒,它最初的表现为在你的电脑里面,右键单击各个盘符的时候,第一项由原来的“打开”变成了“自动播放”,然后在你的系统进程里面会出现若干个“rose”的进程,占用电脑的CPU资源。 检查一下你得电脑 ,看看是否为此病毒. 手动杀毒的方法如下;( 我就是这么办地 很有效) 1、按Ctrl+Alt+Delete调出任务管理器,在进程页面中结束掉所有名称为Rose.exe的进程(建议在后面的操作中反复此操作,以确保病毒文件不会反复发作)。 2、在开始--运行中输入“regedit”(XP系统)打开注册表,点“编辑”——“查找”,在弹出的对话框中输入“rose.exe”,找到后将整个shell子键删除,然后继续按F3查找下一个,继续删除查找到有关的键值,直到显示为“注册表搜索完毕”为止。 3、在我的电脑-工具-文件夹选项-查看-显示所有文件和文件夹,把“隐藏受保护的系统文件”的勾去掉。 4、对每个盘符点右键-打开进入(切记不能双击),删掉所有的rose.exe和autorun.inf文件。如果删除时候提示不能删除,可将这两个文件的属性由“只读”改为“存档。若还不能删除,则重启电脑,在自检时按F8进入到安全模式下去删除。 ∷预防办法: 1、当别人将U盘插入自己的电脑,当出现操作提示框时,不要选择任何操作,关掉。 2、进入我的电脑,从地址下拉列表中选择U盘并进入,或者右键单击可移动磁盘,在弹出的菜单中选择“打开”进入。千万不要直接点击U盘的盘符进去,否则会立刻激活病毒! 3、在我的电脑-工具-文件夹选项-查看-显示所有文件和文件夹,把“隐藏受保护的系统文件”的勾去掉,你会看到U盘中出现了“rose.exe”和“autorun.inf”两个文件,直接删除! 4、在开始--运行中输入“regedit”(XP系统)打开注册表,点“编辑”——“查找”,在弹出的对话框中输入“rose.exe”,找到后将整个shell子键删除,然后继续按F3查找下一个,继续删除查找到有关的键值,直到显示为“注册表搜索完毕”为止。

==============
  双击分区无法打开(或双击后出来搜索,或提示Could not load the dynamic link library PSAPI.DLL)

  双击文件夹无法打开虽然都可鼠标右键》》选择“打开”用以打开分区或文件夹,但对使用带来诸多不方便,现写出一般处理方法。

  1、如果各分区下带autorun.inf一类的隐藏文件,删除之,重新启动电脑。

  2、在文件类型中重新设置打开方式(以XP为例)

  打开我的电脑 工具》》文件夹选项》》文件类型 找到“驱动器”或“文件夹

具体选哪个根据你所遇问题 若属于双击打不开驱动器则选择“驱动器” 打不开文件夹则选择“文件夹”)点下方的“高级”》》点选“编辑文件类型”里的“新建”》》操作里填写“open”(这个可随意填写)》》用于执行操作的应用程序里填写explorer.exe》》确定(具体见图示)

  随后返回到“编辑文件类型”窗口,选中open》》设为默认值》》确定(见图示) 现在再打开分区或文件夹看下,是不是已恢复正常?


  3、注册表法:

  a 对于分区不能双击打开

  开始》》运行 输入regedit 找到[HKEY_CLASSES_ROOT\Drive\shell]将shell下的全部删除 然后关闭注册表 按键盘F5刷新 双击分区再看

  b 对于文件夹不能双击打开

  开始》》运行 输入regedit 找到[HKEY_CLASSES_ROOT\Directory\shell]将shell下的全部删除 然后关闭注册表 按键盘F5刷新 双击分区再看

  4、小程序解决(谨慎使用)

  将=号内复制到记事本内(不包括=),保存为open.vbs,双击运行即可,若杀毒软件弹出警告,姑且放行之。

Set WshShell = WScript.CreateObject("WScript.Shell")

p1 = "HKEY_CLASSES_ROOT\Directory\shell\"
p2 = "none"

WshShell.RegWrite p1, p2

p1 = "HKEY_CLASSES_ROOT\Drive\shell\"
WshShell.RegWrite p1, p2

X = WshShell.Run("REGSVR32 /I /S SHELL32.DLL",4,True)
Set WshShell = Nothing

MyBox = MsgBox("Folders will now Open when double clicked", 4096, "Finished!")


U盘在磁盘管理器能看但是没法在我的电脑显示的解决办法
========================
解决办法:右击“我的电脑”,在弹出的快捷菜单中选择“管理”命令,进入到“计算机管理”窗口,依次展开“存储/可移动存储”,单击“磁盘管理”一项,在窗口右侧,看到U盘运行状态为“良好”,这说明U盘没问题。右击该窗口中的U盘盘符,选择其快捷菜单的“更改驱动器名和路径”命令,在出现的对话框中,点击〔更改〕按钮,为其选择一个未被使用的盘符。确定之后退出。重新打开“我的电脑”,久违的U盘盘符出现了。
还有两种可能!
=============================


winxp系统找不到U盘盘符的解决办法?  
来源: 作者: 发布时间:2007-10-28  (阅读次数:10)  查看更多关于: winxp系统 U盘盘符 的文章  
  
1.首先试试增加盘符:开始--设置--控制面板--管理工具--计算机管理--存储--磁盘管理
这个问题他们说的那个增加盘符的方法我试了不行都,最后是这样解决的:到系统目录 C:\WINDOWS\system32\drivers 看有没有一个 sptd.sys 的文件。删除它,重新启动。问题解决!注意:这个sptd.sys不是微软Windows自带的。(可能是安装Daemon Tools装上的)

在开始菜单中运行里,输入"regedit"打开注册表,在HKEY_LOCAL_MACHINE-system-CurrentControlSet-Services里面找到sptd,删除不了的原因是因为ErrorControl这个值的原因,双击这个文件,把里面的数值数据更改一下就能删除了,接着删除sptd里面的所有文件文件夹就OK了.全部删除.


2.1. 系统里有映射的网络驱动器。导致该盘符不能分配给U盘.
解决办法:断开映射的网络驱动器.
3.盘符被隐藏。
解决办法:进入注册表(regedit.exe),进入“HEKY-CURRENT-USER\Software\microsoft\windows\currentversion\policies\explorer"分支。找到该路径存在的键值“NOdrives”,将其删除。注销然后重新登陆。 (不是 NoDriveTypeAutoRun 键值).
4.U盘不格式不正确
一般的U盘是使用HD(硬盘FAT16)格式,如果使用U盘启动程序更改,可能U盘格式不正确。请使用PQ、PPM等硬盘分区软件重新分区;
5.usb移动存储设备被禁用
请保证:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbehci]
"start"=dword:00000004
6.U盘出问题。
解决办法:重新格式化U盘。最好低级格式化,到网上找一个U盘工具。
实在不行,那就最后一招:重新干净安装Windows XP!
7.解决办法:右击“我的电脑”,在弹出的快捷菜单中选择“管理”命令,进入到“计算机管理”窗口,依次展开“存储/可移动存储”,单击“磁盘管理”一项,在窗口右侧,看到U盘运行状态为“良好”,这说明U盘没问题。右击该窗口中的U盘盘符,选择其快捷菜单的“更改驱动器名和路径”命令,在出现的对话框中,点击〔更改〕按钮,为其选择一个未被使用的盘符。确定之后退出。重新打开“我的电脑”,久违的U盘盘符出现了。
还有两种可能!
第一。权限问题,您不是管理员用户(极有可能)
第二。服务及组策略里未开启!


   电脑感染了病毒,在杀毒后各种程序都无法打开,即提示找不到该项程序,有些还能从打开方式里打得开,有些怎样都打不开。
   找了位电脑高手来解决,现在把解决方法说出来,希望对大家有点帮助:

   打开 [我的电脑]---工具---文件夹选项---文件类型---新建,在弹出对话框的空白处输入: .exe ,点击[高级],类型选:应用程序,确定。


路过,看过,贴子也顶过,小弟对博客主的景仰之情,有如滔滔之江水,连绵不绝………望多出些如此的好文章,再接再厉,以饱天下之博客眼福,小弟在此定会一如既往加之大力支持。


可以删了桌面上的Internet Explorer快捷方式,点击[开始]---程序,右键点击Internet Explorer,选[发送到]---桌面快捷方式,

高,实在是高
这下面的一些技巧,也许你已经熟知,但是笔者从自身的感觉出发,发现下面的这些Windows XP操作系统技巧,都非常的实用,能真正的解决问题。

  1、修改/清除Administrator帐户的密码

  WinXP控制面板中的“用户帐户”,可以让你修改用户帐户的密码,但是却不能修改Administrator帐户的密码,假如你要把Administrator的密码改为abc123,可以这样操作:进入MS-DOS模式,键入命令net user Administrator abc123回车即可。

  要清除Administrator帐户密码,你可以进入XP系统所在盘,删除系统安装目录(Windows\system32\config)下的SAM文件;重启电脑后,Administrator帐户就没有密码了,如果此时你用Administrator帐户登陆系统,无需输入任何密码即可进入系统。

  2、查看WinXP任务管理器中看不到的进程

  对于WinXP任务管理器中看不到的进程(比如有些木马),你可以使用专门的进程工具来查看,例如进程杀手,用它来检查系统中的进程,看看有没有可疑的进程,如果发现可疑进程立刻封杀之。进程杀手下载地址如下:

  进程杀手V2.5:http://www.mydown.com/soft/240/240953.html

  3、巧妙检查WinXP系统漏洞

  你可以使用金山网镖6增强版来检查Windows系统中是否有漏洞。如果金山网镖查出你的系统中存在漏洞,它还会提供补丁的下载地址,只要你根据地址下载安装补丁,即可堵住系统漏洞。此外,你还可以在网上找个在线安全测试的网站,检查你的系统是否有漏洞,不过在线检测前,请关闭你的防火墙。目前这类测试各网站都是免费的,建议你去下面知名的网站测试:

  诺顿在线安全检测http://www.symantec.com/region/cn/

  金山木马专杀http://scan.kingsoft.com/scan_mm.htm

  天网安全在线http://old.sky.net.cn/main/view.php?cid=170

  千禧在线--在线检测http://www.china-yk.com/tsfw/onlineclean/index.asp

  蓝盾安全在线http://www.haodx.com/url/1673.htm

  4、清除“添加或删除程序”中残留的程序名

  在WinXP “控制面板/添加或删除程序”中,有时会留有一些已经卸载过的程序名,你无法正常清除,要清除它们,你可以打开注册表编辑器,先备份注册表,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion项,找到Uninstall项,从这里找到那些残留的软件列表,将之删除即可。如果这样操作后,“添加或删除程序”中残留的程序名仍没有删除,你可以在注册表编辑器中单击“编辑→查找”,查找与该程序有关的相应键值,然后全部删除之。

  5、只运行许可的Windows应用程序

  要限制用户任意运行Windows程序,可以单击“开始”菜单/运行,输入“gpedit.msc”回车,然后打开“组策略控制台→用户配置→管理模板→系统”,启用“只运行许可的Windows应用程序”;接下来点击“允许的应用程序列表”边的“显示”按钮,弹出一个“显示内容”对话框,单击“添加”按钮,添加允许运行的应用程序(例如Winword.exe)即可,以后普通用户只能运行“允许的应用程序列表”中的程序。

  6、一键锁定你的PC

  如果你要暂时离开,并且又不希望注销系统,可以按一个键(例如F1)迅速锁定键盘和显示器,方法是:右击桌面,在快捷菜单上选择“新建”/快捷方式,启动创建快捷方式向导,在文本框中输入“rundll32.exe user32.dll,LockWorkStation”,然后单击“下一步”,在弹出的窗口中输入快捷方式的名称(例如“锁定PC”),最后单击“完成”;接下来,右击桌面上的“锁定PC”快捷方式,点击“快捷键”输入框,把光标定位在该框,然后按F1键,最后按“确定”退出。以后只要你一按F1键,就会锁定键盘和显示器,只有输入正确的密码才能解锁!

  7、真正删除_Restore目录

  Windows XP/Me中都有“系统还原”功能,因此会在硬盘上自动创建_Restore文件夹。如果你想删除_Restore文件夹,可以启动到DOS模式删除,但这样做并不能真正删除,重新启动后系统却仍会自动创建这个文件夹。要真正删除_Restore目录,你可以先打开“系统属性”窗口,禁用系统还原功能,然后再切换到DOS模式删除,这样_Restore文件夹就不会再有啦。

  8、在右键菜单中总是显示“打开方式”

  当我们为某个文件修改文件关联时,就要用到“打开方式”。你可以选中这个文件,然后右击鼠标,在右键菜单中就会显示“打开方式”选项,如果你希望每次右键鼠标时,都会有这一项,只需先用鼠标左键选中某个文件,然后按住“Shift”键不放、再点击鼠标右键即可。

  9、禁止你运行命令提示符窗口

  在WinXP中,要禁止运行Cmd.exe,你可以单击“开始”菜单/运行,输入“gpedit.msc”回车,然后打开“组策略控制台→用户配置→管理模板→系统”,启用“阻止访问命令提示符”,并在下面列表框中选择是否“也停用命令提示符脚本处理”,如果你选择了这个设置,批处理文件.cmd和.bat将不能在计算机上运行。以上设置完成后,当你试图打开命令窗口时,系统就会显示一条消息,解释并阻止该操作。
有次朋友电脑中了病毒,我去看了一下,是个QQ病毒,由于挺长时间没有上网搜集病毒方面消息了,我对这些病毒的特性也不甚了解。我先打开“进程管理器”,将几个不太熟悉的程序关闭掉,但刚关掉一个,再去关闭另外一个时,刚才关闭的那个马上又运行了。没办法,我决定从注册表里先把启动项删除后,再重启试试,结果,我刚把那些启动项删除,然后刷新一下注册表,那些启动项又还原了,看来一般的方法是行不通了,上网下载专杀工具后,仍然不能杀掉。我知道这是因为病毒正在运行,所以无法删除。

由于这台电脑只有一个操作系统,也没办法在另一个系统下删除这些病毒,这时怎么办呢?如果大家也遇到这种情况时,我向大家推荐一种方法。

第一步:在“开始→运行”中输入CMD,打开“命令提示符”窗口。

第二步:输入ftype exefile=notepad.exe %1,这句话的意思是将所有的EXE文件用“记事本”打开。这样原来的病毒就无法启动了。

第三步:重启电脑,你会看见打开了许多“记事本”。当然,这其中不仅有病毒文件,还有一些原来的系统文件,比如:输入法程序。

第四步:右击任何文件,选择“打开方式”,然后点击“浏览”,转到Windows\System32下,选择cmd.exe,这样就可以再次打开“命令提示符”窗口。

第五步:运行ftype exefile="%1" %*,将所有的EXE文件关联还原。现在运行杀毒软件或直接改回注册表,就可以杀掉病毒了。

第六步:在每一个“记事本”中,点击菜单中的“文件→另存为”,就可看到了路径以及文件名了。找到病毒文件,手动删除即可,但得小心,必须确定那是病毒才能删除。建议将这些文件改名并记下,重启后,如果没有病毒作怪,也没有系统问题,再进行删除,
 


最后介绍一下Ftype的用法

在Windows中,Ftype命令用来显示及修改不同扩展名文件所关联的打开程序。相当于在注册表编辑器中修改“HKEY_CLASSES_ROOT”项下的部分内容一样。

Ftype的基本使用格式为:Ftype [文件类型[=[打开方式/程序]]]

比如:像上例中的ftype exefile=notepad.exe %1,表示将所有文件类型为EXE(exefile表示为EXE类型文件)的文件都通过“记事本”程序打开,后面的%1表示要打开的程序本身(就是双击时的那个程序)。

ftype exefile="%1" %*则表示所有EXE文件本身直接运行(EXE 可以直接运行,所以用表示程序本身的%1即可),后面的%*则表示程序命令后带的所有参数(这就是为什么EXE文件可以带参数运行的原因)。

.aiff 声音文件 Windows media Player

.!!! Netants 暂存文件 Netants

.ani 动画鼠标

.arj 压缩文件 ARJ

.avi 电影文件 Windows media Player阅读全文
按下面的方法试试

开始菜单,运行,CMD,打开命令提示符窗口输入

ACCOC.LNK=LNKFILE

重启电脑



楼主你还算幸运,如果是开不了机子,安全模式下也进不了,那得,重装系统了.用服装厂家的建议试试.或者可以用用注册表恢复工具.,可以恢复.



  这个问题好解决,只要能进入我的电脑,这样: 工具->文件夹选项->文件类型 点"新建",输入"exe"(无引号),点高级,选"应用程序",确定.
有次朋友电脑中了病毒,我去看了一下,是个QQ病毒,由于挺长时间没有上网搜集病毒方面消息了,我对这些病毒的特性也不甚了解。我先打开“进程管理器”,将几个不太熟悉的程序关闭掉,但刚关掉一个,再去关闭另外一个时,刚才关闭的那个马上又运行了。没办法,我决定从注册表里先把启动项删除后,再重启试试,结果,我刚把那些启动项删除,然后刷新一下注册表,那些启动项又还原了,看来一般的方法是行不通了,上网下载专杀工具后,仍然不能杀掉。我知道这是因为病毒正在运行,所以无法删除。
  由于这台电脑只有一个操作系统,也没办法在另一个系统下删除这些病毒,这时怎么办呢?如果大家也遇到这种情况时,我向大家推荐一种方法。
  第一步:在“开始→运行”中输入CMD,打开“命令提示符”窗口。
  第二步:输入ftype exefile=notepad.exe %1,这句话的意思是将所有的EXE文件用“记事本”打开。这样原来的病毒就无法启动了。
  第三步:重启电脑,你会看见打开了许多“记事本”。当然,这其中不仅有病毒文件,还有一些原来的系统文件,比如:输入法程序。
  第四步:右击任何文件,选择“打开方式”,然后点击“浏览”,转到Windows\System32下,选择cmd.exe,这样就可以再次打开“命令提示符”窗口。
  第五步:运行ftype exefile="%1" %*,将所有的EXE文件关联还原。现在运行杀毒软件或直接改回注册表,就可以杀掉病毒了。
  第六步:在每一个“记事本”中,点击菜单中的“文件→另存为”,就可看到了路径以及文件名了。找到病毒文件,手动删除即可,但得小心,必须确定那是病毒才能删除。建议将这些文件改名并记下,重启后,如果没有病毒作怪,也没有系统问题,再进行删除,
  ◆最后介绍一下Ftype的用法
  在Windows中,Ftype命令用来显示及修改不同扩展名文件所关联的打开程序。相当于在注册表编辑器中修改“HKEY_CLASSES_ROOT”项下的部分内容一样。
  Ftype的基本使用格式为:Ftype [文件类型[=[打开方式/程序]]]
  比如:像上例中的ftype exefile=notepad.exe %1,表示将所有文件类型为EXE(exefile表示为EXE类型文件)的文件都通过“记事本”程序打开,后面的%1表示要打开的程序本身(就是双击时的那个程序)。
  ftype exefile="%1" %*则表示所有EXE文件本身直接运行(EXE 可以直接运行,所以用表示程序本身的%1即可),后面的%*则表示程序命令后带的所有参数(这就是为什么EXE文件可以带参数运行的原因)。
昨天看D盘空间不足,就把一个隐藏的MSOCache文件夹删掉了,结果就是任何程序都打不开,双击后出现"用何种程序打开"的任务栏,里面只有记事本、word、realplay等几个程序,而且regedit、cmd等程序也不能用,晕死了,难道只有重新覆盖一边xp???



关于MSOCache文件夹
今天整理电脑时发现一个具有隐藏属性的文件夹,名字是MSOCache。这是我以前所没有注意到的,后来发现原来这是Offiece的本地安装源 (Msocache)。

         “本地安装源”是一种安装功能,它将安装源文件从 Microsoft Office 2003 安装媒体(例如 Office 2003 光盘)复制到 Msocache 文件夹。该文件夹是一个隐藏文件夹。而且还很大。

         该文件夹到底有什么作用呢?又是如何产生的呢?

         原来当您安装Office时,如果您的一个可用硬盘驱动器具有 1.5 GB 以上的可用磁盘空间,并且具有足够空间的硬盘不是可移动驱动器或网络驱动器,那么安装源文件将被从安装媒体复制到您的本地硬盘上的 Msocache 文件夹。

        “本地安装源”功能已安装后,将会使你在执行诸如“检测和修复”、“要求式安装”、“维护模式安装”、“Service Pack和修被程序”等的安装操作过程中不必插入光盘。

 
        此文件夹较大,占据270MB的硬盘空间,事实上该文件夹在Office安装成功后是可以删除的,从而达到节省磁盘空间的目的。如要删除 Msocache 文件夹,可以在 Office 安装期间或 Office 安装之后执行此操作。

        如果您选择在安装期间删除 Msocache 文件夹,则应在“安装已完成”页中,单击以选中“删除安装文件”复选框,然后单击“完成”。

        如果您选择在 Office 安装之后删除 Msocache 文件夹,注意切毋使用 Microsoft Windows 资源管理器删除 MSOCACHE 文件夹,可以使用 Windows 清理向导删除 Msocache 文件夹。步骤:

      1.单击“开始”,依次指向“所有程序”、“附件”、“系统工具”,然后单击“磁盘清理”。

      2.在“选择驱动器”对话框中的“驱动器”列表中,单击“C:”,然后单击“确定”。

                注意:如果您有多个硬盘,Office 安装文件将位于在 Office 安装期间具有最多可用空间的分区中。

      3.等待磁盘清理工具完成对该驱动器的检查。

      4.在“要删除的文件”列表中,单击以选中“Office 安装文件”复选框,然后单击“确定”。

               注意:如果 Office 安装文件的大小为零,则 Office 安装文件位于另一硬盘上。

      5.在收到以下消息时,请单击“是”:

                   Are you sure you want to delete these files?(确定要删除这些文件吗?)

               注意:(1)如果您的硬盘上有多个分区,您可能必须对每个分区重复这些步骤。(2)MSOCACHE 文件夹不总是位于可用空间最多的硬盘驱动器上。如果您计算机的 NTFS 驱动器至少具有 1.5 GB 的可用空间,MSOCACHE 文件夹将位于该 NTFS 驱动器中。


应该是染毒后,文件关联出现问题

下个完好的rundll32.exe的文件复制到windows\system32文件夹
然后修复一下注册表

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\exefile\shell\open\command]
@="\"%1\" %*"


给你提供一个下载
因为你的电脑中毒了.
病毒修改了exe 还有epl 文件的关联了.

TC告诉过我这个问题.

开始运行输入 cmd 回车

然后依次执行
assoc .exe=exefile
assoc .cpl=cplfile
assoc cplfile=rundll32.exe shell32.dll,Control_RunDLL %1,%*





这个问题很简单。
主要问题就再VEM的这句上
assoc cplfile=rundll32.exe shell32.dll,Control_RunDLL %1,%*

病毒木马就是修改了这句把rundll32.exe 改为其他的 比如rundll3.exe 这样打开所有CPL这类控制面板的程序 就会启动
rundll3.exe 这个木马程序了。
有可能是这个木马程序被杀毒软件杀掉,这也是很多人说 装了杀毒软件 控制面板里面的项都打不开了,就是因为杀毒软件杀掉了这个木马。
也可能是 是个简单的木马。

否则rundll3.exe 会把得到的参数传递给rundll32.exe
肉眼根本无法感觉到任何状况的


因为你的电脑中毒了.
病毒修改了exe 还有epl 文件的关联了.

TC告诉过我这个问题.

开始运行输入 cmd 回车

然后依次执行
assoc .exe=exefile
assoc .cpl=cplfile
assoc cplfile=rundll32.exe shell32.dll,Control_RunDLL %1,%*





这个问题很简单。
主要问题就再VEM的这句上
assoc cplfile=rundll32.exe shell32.dll,Control_RunDLL %1,%*

病毒木马就是修改了这句把rundll32.exe 改为其他的 比如rundll3.exe 这样打开所有CPL这类控制面板的程序 就会启动
rundll3.exe 这个木马程序了。
有可能是这个木马程序被杀毒软件杀掉,这也是很多人说 装了杀毒软件 控制面板里面的项都打不开了,就是因为杀毒软件杀掉了这个木马。
也可能是 是个简单的木马。

否则rundll3.exe 会把得到的参数传递给rundll32.exe
肉眼根本无法感觉到任何状况的


骨骨 2006-09-11 14:23
我拿个简单的来解释下吧。

当你双击一个txt文本 为什么 会直接调用 记事本来打开他呢。
为什么 你双击个jpgt 图片 为什么会直接调用 图片查看器打开呢。为什么你安装了图片查看软件 就会自动调用图片查看软件来打开了呢。

因为文件关联

注册表中已经声明了 txt文件的关联 关联到 notepad.exe 当你打开txt文件的时候 他就会自动调用记事本来打开你要打开的那个txt文件了

我们看下 txt文件的传递参数 %SystemRoot%\system32\NOTEPAD.EXE %1

这个意思就是 当双击txt文件时 会自动运行notepad。exe 并传递打开txt文件的路径给他。

问题就在这里了,只是个简单的参数传递,没有其他安装检测等等。木马病毒就可以从这里下手脚。

我做个简单的小程序 命名未 notepaa.exe 然后放到系统文件夹下。
然后修改txt的文件关联为 %SystemRoot%\system32\NOTEPAA.EXE %1

现在情况变了 双击 txt文件后 运行的是我的程序了。
这样我写的“木马程序“就运行了

但是 这样 记事本 就无法运行了啊 怎么办?

但木马程序 运行后 会把得到的参数重新传递给 记事本 notepad。exe 的 这样记事本 依然可以打开 我们表面看不到任何异状的。及时你删除了木马的启动项目 当你打开一个txt文件后 木马依然会运行的。

=============打的好累。继续解释。。

楼主的电脑属性打不开。
其实哪些属性对话框 是 系统 的cpl文件 原理和我讲的txt文件一样
参数是这样的 rundll32.exe shell32.dll,Control_RunDLL %1,%* 看似比较复杂 慢慢理解
主要是修改 rundll32.exe 这个 运行木马后 参数会回传回去。

那么为什么属性窗口打不开呢。
因为那个木马被杀掉了 也就是我刚刚举的那个 notepaa。exe 例子里 这个notepaa.exe被干掉了。

这样记事本就无法开了 属性窗口也是一个道理。。

呼 文采不好 说了这么多 不知道你懂没懂。。不懂的 回帖问。等我回来 我再给你解释。

http://www.osyunwei.com/archives/9006.html

1。实现不同用户不同权限
现在我们就来实现三个用户的不同权限:a.upload用户,可以上传下载,可以新建文件夹,但不能删除文件和文件夹,不能重命名原有文件和文件夹;b.download用户,只能下载;c.admin用户,管理员,可以上传,可以下载,可以新建文件夹,可以删除和更改文件和文件夹名。这些用户都不能登录系统,并且用ftp连接时锁定在自己的家目录中不能进入系统文件夹。
a.cat <logins.txt
>upload
>******* #upload用户的密码
>download
>*******
>admin
>****************
>!
说明,此文本文件的格式是:单数行为用户名,偶数行为密码
b.db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
c.chmod 600 /etc/vsftpd_login.db
d.呵呵(这步被vionna删除了)
e.useradd -d /home/ftpsite virtual;chmod 700 /home/ftpsite;su - virtual -c "echo hello>/homt/ftpsite/test.file(建立虚拟用户所要访问的ftp目录并设置仅virtual用户访问的权限和创建一个供下载实验的文件)
f.vi /etc/vsftpd.conf在此文件中插入下面的配置语句
guest_enable=YES(启用虚拟用户)
guest_username=virtual(将虚拟用户映射为本地virtual用户)
pam_service_name=vsftpd(指定PAM配置文件为在/etc/pam.d/下的vsftpd)
user_config_dir=/etc/vsftpd_user_conf(指定不同虚拟用户配置文件的存放路径)
保存退出
g.mkdir /etc/vsftpd_user_conf
h.开放不同用户的不同权限 echo "anon_world_readable_only=MO">/etc/vsftpd_user_conf/download(开放download用户的下载权限——只能下载;注意这个不地方不要写成YES,否则将不能列出文件和目录)
cp /etc/vsftpd_user_conf/download /etc/vsftpd_user_conf/upload
vi /etc/vsftpd_user_conf/upload,添加下列行
write_enable=YES (增加写权限)
anon_upload_enable=YES(增加上传权限)
anon_mkdir_write_enable=YES (增加创建目录的权限)
cp /etc/vsftpd_user_conf/upload /etc/vsftpd_user_conf/admin
增加一行:
anno_other_writer_enable=YES(增加管理员用户的删除/重命名的权限)
i.测试
killall -9 vsftpd;/usr/local/sbin/vsftpd /etc/vsftpd.conf &
ftp 127.0.0.1 2121
以用户名download和你设置的密码登录,ls,可以看到文件,下载,成功!put一个文件,提示
Permission denied。rename test.file同样权限被拒绝;delete test.file同样不成功!
输入quit退出,以upload用户登录,OK!可以上传,下载,mkdir lsf,提示“/lsf" created;rename lsf lsf1提示Permission denied,删除文件同样不成功!
输入quit退出,以admin用户登录,可以有上述所有权限,然后rmdir lsf,提示Remove directory oeration successful;delete test.file提示Delete operation successful!OK,大功告成了!

附目
1.我的/etc/vsftpd.conf文件的内容
引用:
# Example config file /etc/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=NO
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=NO
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format
#xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that turning on ascii_download_enable enables malicious remote parties
# to consume your I/O resources, by issuing the command "SIZE /big/file" in
# ASCII mode.
# These ASCII options are split into upload and download because you may wish
# to enable ASCII uploads (to prevent uploaded scripts etc. from breaking),
# without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be
# on the client anyway..
ascii_upload_enable=YES
ascii_download_enable=YES
#
# You may fully customise the login banner string:
ftpd_banner=Welcome to Serv-U FTP serser.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
chroot_local_user=YES
listen_port=2121
listen=yes
guest_enable=YES
guest_username=virtual
pasv_min_port=30000
pasv_max_port=30999
pam_service_name=vsftpd
anon_world_readable_only=NO
user_config_dir=/etc/vsftpd_user_conf


2.我的/etc/vsftpd_user_conf/download的内容
引用:
anon_world_readable_only=NO

3.我的/etc/vsftpd_user_conf/upload的内容
引用:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

4.我的/etc/vsftpd_user_conf/admin的内容
引用:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES

最近发现我的IE不能打开新窗口,具体表现形式是:用鼠标左键点击超链接没有反应,用鼠标右键点击超链接,在弹出的菜单中选择“在新窗口打开”也没有动静。怎么办呢?经过查找试验,终于找到了解决方法:

  1、在“开始”菜单中打开“运行”窗口,在其中输入“regsvr32 actxprxy.dll”,然后“确定”,接着会出现一个信息对话框“DllRegisterServer in actxprxy.dll succee
ded”,再次点击“确定”。

  2、再次打开“运行”窗口,输入“regsvr32 shdocvw.dll”,“确定”后在出现的信息对话框中点击“确定”。

  3、重新启动Windows,运行IE,随便打开一个网页,点击一个超链接,你会发现IE又能打开新窗口。再试试用鼠标右键选择“在新窗口打开”,问题解决。






ie二级网页打不开 复制粘贴不能用
方法一:重新注册以下DLL文件。
regsvr32 Shdocvw.dll
regsvr32 Shell32.dll (注意这个命令,先不用输)
regsvr32 Oleaut32.dll
regsvr32 Actxprxy.dll
regsvr32 Mshtml.dll
regsvr32 Urlmon.dll

第二个命令可以先不用输,输完这些命令后重新启动windows,如果发现无效,再
重新输入一遍,这次输入第二个命令。


方法二:COMCTL32.DLL文件产生的问题。
在升级IE或windows时这个文件可能被替换了,也许新版本的COMCTL32.DLL文件有
BUG。
找一张windows安装光盘,搜索它,找到一个名为COMCTL32.DL_的文件,把它拷贝
出来,用winrar提取 这个文件为COMCTL32.DLL文件,并覆盖现有文件。
(我不知道98光盘里有没有这个文件,我用的是2000光盘)


方法三:用方法一重新注册regsvr32 Oleaut32.dll时出错或重新注册后也无效。

在windows光盘里提取Oleaut32.dll文件,在MDAC_IE5.CAB文件包里,也是用winrar
提取并覆盖现有。


方法四:DCOM属性设置错误。
详细参见:http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q274696

1。点击“开始”-->“运行”
2。输入“Dcomcnfg”。
3。弹出的提示框选“是”。
4。点“默认安全机制”标签。
5。在“默认访问权限”栏点“编辑默认值”。
6。看看“名称”下面的栏里有没有“SYSTEM”和“Interactive”项,如果没有,
则添加。
7。点击OK,点击OK。

方法五:下载这个工具也许有助于修复问题.
http://download.microsoft.com/download/msn...us/mcrepair.exe


除第一、第二种我亲身试过,其他的还没有用过,如果以上都没有效果,那么阿门...........


IE二级链接打不开的认识误区


很多网友都遇到过这种情况:在使用IE浏览器打开任意一个网站后,单击网页中的任一个链接,都无法打开新页面。遇到这个问题时,解决方法大多是按照网上提供的说法,使用Regsvr32命令将Urlmon.dll、Shdocvw.dll、Shell32.dll、Oleaut32.dll、Actxprxy.dll、Mshtml.dll、Browseui.dll、Msjava.dll这几个文件统统注册一遍。
首先,这个方法是微软网站上的正式解释,而不是什么谣传,否则也不会注册了这些文件事,就会在一定程序上解决二级链接打不开的问题。但是,很多人碰到这个问题的时候至少有三个误区。
一是认为出现二级链接打不开的情况时,就一定要全部注册这些文件才行。二是认为这些文件的注册是没有先后顺序的。三是认为文件注册出现失败的情况就只有重装系统才能解决问题。

下面我们就这三个误区分别进行讲解。二级链接打不开的问题(以下简称“故障”)很有可能仅仅是因为这些文件中的一个文件丢失、损坏或者没有正确注册导致的,极少数才会因为多个文件丢失、损坏或者没有正确注册导致故障的出现。因此,这几个文件也并非一定要全部注册的,比方说Msjava.dll这个文件,只有当单击IE二级链接时可以打开新的窗口,但窗口中却一片空白时,那就需要注册它。
出现故障后,如果需要注册全部文件,则要按顺序注册。首先应使用Regsvr32命令注册Urlmon.dll文件,因为此文件是IE的一个负责控制对从Web站点返回的URL和信息进行处理的组件。如果此文件出错,那么,就会导致打不开新窗口的情况出现。只有当注册Urlmon.dll文件成功后,才能继续在“运行”对话框中,依次使用Regsvr32命令注册Actxprxy.dll、Shdocvw.dll、Oleaut32.dll、Mshtml.dll、Browseui.dll、Shell32.dll这几个文件。
如果注册失败,比方说使用“regsvr32 msjava.dll“命令失败时,其实只是因为Regsvr32命令没有在系统中找到Msjava.dll文件所致,如果想使该文件注册成功,只需安装Msjava.dll的父程序Microsoft VM虚拟机即可。而其它的一些文件注册失败时,甚至只要从系统安装光盘,或是别人的同版本操作系统中拷贝相同的文件过来即可,不必重装系统。

一、BIOS中的提示信息

提示信息       说明  
Drive A error   驱动器A错误  
System halt     系统挂起  
Keyboard controller error   键盘控制器错误  
Keyboard error or no keyboard present   键盘错误或者键盘不存在  
BIOS ROM checksum error BIOS ROM   校验错误  
Single hardisk cable fail   当硬盘使用Cable选项时硬盘安装位置不正确  
FDD Controller Failure BIOS   软盘控制器错误  
HDD Controller Failure BIOS   硬盘控制器错误  
Driver Error   驱动器错误    
Cache Memory Bad, Do not Enable Cache   高速缓存Cache损坏,不能使用  
Error: Unable to control A20 line   错误提示:不能使用A20地址控制线  
Memory write/Read failure   内存读写失败  
Memory allocation error   内存定位错误  
CMOS Battery state Low   CMOS没电了  
Keyboard interface error   键盘接口错误  
Hard disk drive failure   加载硬盘失败  
Hard disk not present   硬盘不存在  
Floppy disk(s) fail (40)   软盘驱动器加载失败,一般是数据线插反,电源线没有插接,CMOS内部软驱设置错误  
CMOS checksum error-efaults loaded.   CMOS校验错误,装入缺省(默认)设置
二、BIOS刷新失败后,Bootblock启动时出现的提示信息

提示信息                         说明  
Detecting floppy drive A media...   检测软驱A的格式  
Drive media is : 1.44Mb1.2Mb 720Kb 360K   驱动器格式是1.44Mb、12Mb、720kb、360kb的一种  
DISK BOOT FAILURE, INSERT SYSTEM DISK AND PRESS ENTER   磁盘引导失败,插入系统盘后按任意键继续

三、MBR主引导区提示信息

提示信息             说明  
Invalid partition table   无效的分区表  
Error loading operating sy stem   不能装入引导系统  
Missing operating system   系统引导文件丢失

  说明:如果在计算机启动过程中,在硬件配置清单下方(也就时在平时正常启动时出现Starting windows 98…的地方)出现不可识别字符,此时可判断硬盘分区表损坏。如果你的硬盘上有重要资料,这时你不要轻易进行分区,可找专业的数据恢复公司。
四、DOS活动分区中的提示信息

提示信息           说明  
Invalid system disk   无效的系统盘  
Disk I/O error, Replace the disk and press any key.   磁盘I/O错误,替换磁盘后按任意键(当C盘系统文件丢失或被破坏时出现该提示信息。这时可能SYS C:为修复系统文件)  
Invalid Media Type reaching Drive C:   无效的C盘媒体格式说明,也就是C盘没有格式化或者是其他操作系统的磁盘格式如NTFS  
Invalid Boot Diskette Boot Failure   无效的启动盘,启动失败

五、IO.SYS中的提示信息阅读全文
点击在新窗口中浏览此图片首先:你当然得有台电脑!然后,请你装上windows,98---2003都可,只要你会进dos就行!然后:请去商店里买一张正版xp光盘,好象蛮贵的。xp嘛,贵就贵一点吧。如果你不想买,那就跟我无关了,随便你从什么地方下载吧!一些网站及ftp上都有的。顺便说一下,有次我把跟虚拟光驱有关的东西都卸载了,结果发现我的iso文件变成了rar文件,不管如何,解压或用虚拟光驱,把里面的i386(只要i386)文件提取出来,复制到某盘,如我的d盘根目录下(其实不是根目录也行,但显然这样更方便)。最后请找smartdrv,这很容易找的,一般win98安装盘里就有,这个我也放在的d盘的根目录下。
点击在新窗口中浏览此图片
好了,准备进dos吧,98进dos很容易,启动到ms-dos就行,其它的请自行找方法进入。该格式化你的c盘了,好象dos下只能全新安装,我知道你很不舍得,那先把c盘用ghost做一个镜像再格掉吧!特别注意,格式化你的c盘,你必须保证你的c盘是fat32格式,如果不是,你将格式化你的第一个fat32格式的分区。另外,请先用ghost备份你的c盘,如果出意外(其实我没也备份过但好在没出过意外),可别找我哦!
点击在新窗口中浏览此图片
这是用九八光盘进dos的样子之前要在bios里面设置为光驱先启动!
点击在新窗口中浏览此图片
再说一次,输入format命令之前请先备份c盘,并且保证c盘为fat32格式
点击在新窗口中浏览此图片
问你是不是真要格式化
汗……

点击在新窗口中浏览此图片
这是为c盘取个名字,直接按回车就行了,不用理它!
点击在新窗口中浏览此图片
输入d:  再回车,进入d盘
再输入dir回车,看看d盘下是不是有i386和smartdrv文件
点击在新窗口中浏览此图片
加载smartdrv,会发现一点变化也没有
点击在新窗口中浏览此图片
干脆再输入smartdrv,这次屏幕变化了,觉得放心了(其实一次就可以了
点击在新窗口中浏览此图片
输入cd i386,进入i386文件
点击在新窗口中浏览此图片

注意,执行winnt命令了

点击在新窗口中浏览此图片
进入一个蓝屏,不用理它,直接按回车就行了!
点击在新窗口中浏览此图片
要复制文件了,这段时间好象挺长的!


























感谢生命

WEB2.0 2006-10-6 16:09
      生命,对于我们每个人来说都是最珍贵的。有时它很坚强,有时却很脆弱。生命对我们来说都很公平,因为它给每个人的机会只有一次,它带给我们的都是同样的东西。
  我感谢父母是因为,刚出生的时候,是父亲用他那宽阔的胸膛和结实的肩膀支撑了整个家庭,是母亲用她那无私的爱和乳汁哺育了我,是父母呵护了我的生命。是他们用无私的爱和心血养育了我,是他们在尽自己的所能给我创造舒适的生活,生活中的每一件事都已经被他们看在眼里记在心里。
  父母给我的永远是最亲切的一面。每次我受伤或者生病时,都有父母的陪伴,那时我的就像一只温顺的小猫蜷缩在他们的怀抱里。父母的怀抱让我感到了无限的温暖和安全,我可以在这个世界里无所顾及的睡过去。
  我感谢朋友是因,在我慢慢成长的过程中,友情也慢慢的降临到我的身上。朋友关心的话语让我感觉到了温馨,朋友的祝福让我感觉到了幸福,所以我用真心去对待每一个朋友。但我深深明白,朋友之间应该“求同存异”,朋友都需要自己的空间,所以我没有过多的要求过什么。
  朋友总会在我忧郁时,一声不吭的听我说完所有烦恼。在我心情坏到极点时候,给你一个路标,一个暗示,让我从困境中从容的走出来。
  当然,在生命给我带来亲人与朋友的同时,也给我带来了“敌人”。虽然我不喜欢他们,可是我仍然要感谢他们,是他们让我看到了自己的不足,是他们让我知道了自己的弱点,是他们让我有了战胜他们的斗志。
  敌人总是会在任何时候,任何时间,不断的扫描你,他们总是用那最敏感的一面来成对你,只的找到你的弱点就给你最沉痛的打击。是他们把我成功的幻想激醒,是他们让我在茫茫人海中不敢迷失自我,也是他们教会了我捕捉,正是因为这样才让我在激烈的竞争中占得一席之地。
  父母是受伤时的避风港,朋友是我忧郁时的倾听者,敌人是我生活中的镜子。
  感谢生命给我带的快乐,感谢生命给我带来的忧郁,感谢生命给我带来的伤痛,感谢生命给我带来的一切。
一、引言

  Java是一门适合于分布式计算环境、尤其是Internet程序设计的语言。这不仅仅在于java具有很好的安全性和可移植性,还在于java为Internet编程提供了丰富的网络类库的支持。利用这些网络类库,可以轻松编写多种类型的网络通信程序。然而由于某些限制,Java在传输多媒体信息方面的应用不是很广,大部分的应用都集中在网络上传输语音
等音频信号的方面。传输音频信号应用方案一般有两种,一是应用于数据广播的多对一传输,例如音频数据服务器向数个客户端发送音频数据信号,其最广泛的应用则是某些网上的IP电话,大家经常可以看到不少这种提供在线IP电话服务的网站的客户端都是使用的嵌在网页上的Java Applet程序,用来实现拨号、通话等等基本的网络电话功能; 第二种方案则是我们今天要涉及的部分,一对一的音频信号数据的传输。这种方案的应用范围更广。大家都去过语音聊天室,大部分的语音聊天室的语音聊天功能的实现就是使用的Java技术,大家对这样网页的源代码分析一下就可以发现这一点。

  我曾开发一个项目,涉及使用java来实现在网络上传输语音数据。开发中遇到不少问题,而且在互联网上发现关于java语音传输的资料比较少,寻找了许多天,最终从一个开放源代码的一个简单的Answer Machine 演示程序中获得了解决问题的方法。今天我就把我在点对点传输音频信号方面的一些经验拿出来,与大家共同探讨这方面的问题。

  二、存在的问题

  在网络上传输音频的方面存在的问题主要可以归纳为以下几点:

  1 双方之间的网络连接

  要进行频数据的传输,首先就是要建立数据连结。常用的通讯协议中,TCP较可靠,所以用在不允许数据丢失的应用上。而UDP则较多应用于处理速度要求较快、数据传输可靠性要求不是很高的应用上,如数据广播。通信协议的选择取决于我们所要做的应用的类型。怎样建立网络连接,稳定的接收和发送音频信号的数据流是关键。

  2 音频信号的采集以及回放

  在进行音频信号的采集中我们必须考虑到采样率的问题,声音信号的采样率有8Khz、16Khz、32Khz、44Khz等,每种数据采样虑产生的数据量都不一样,越高的采样率产生的数据量越大,所以我们要选择合适的采样率以适应网络的带宽。

  3 音频数字信号的编码与解码。

  如果把直接采集到的音频信号数据流在网络上进行传输,它所占有的带宽也是十分大的,以8Khz的采样率采集14位的音频数据那么就有以下这样的一个式子:

14 bit * 8000/second=112,000 bits/second or112kbps

  从中我们可以看出以这样的方式传输音频数据,每秒需要向网络中发送112kb的数据。所以。从节省带宽的角度考虑,我们很有必要对这样的数据进行压缩。对多媒体信号的压缩我们有许多可以选择的格式,如mp2、mp3、GSM等等。同样,我们这里也存在一个对压缩格式进行选择的问题,考虑到音频数据传输的及时性,对传输的音频数据质量的要求,以及各种压缩格式的压缩比率以及进行压缩和解压缩所要耗费的系统资源等方面问题,选择合适的压缩格式就显得尤为重要。

三、解决的方法

  下面就针对前面提出的问题讨论一下解决的办法。

  1 双方之间的网络连接

  Java在这方面有其独特的优势,Java提供了丰富的网络类库的支持,可以轻松编写多种类型的网络通信程序。在我下面的例子中我就使用了TCP/IP协议,通过Java的Socket类进行编程。

  2 音频信号
的采集和回放以及音频数字信号的编码与解码

  在解决这两个问题的时候,在网上很幸运地通过一些文章的介绍,找到了Answer Machine 演示程序的源代码(由of jsresources.org的Florian Bomers 和Matthias Pfisterer编写,网址http://www.jsresources.org/apps/am.html)。在这个程序代码中,有几个解决我们问题所需要的类,而且作者将这些类封装的很好,我们基本不需要做什么改动,只需要屏蔽其中的调试信息的输出就行了,更可贵的是它还封装了几种常见的音频格式。其中的GSM格式(Global System for Mobile Telecommunications)就是我们下面例子中采用的压缩格式,GSM格式可以将128kbps 的音频数据流 (16bit通过8k Hz的音频采样) 压缩为13kbps 的音频数据流,非常适合语音信号的传送,所以可谓是一石二鸟。

  我分析过这几个类的源代码,不得不佩服它的作者,每个类的源代码都很精炼,大家可以自己分析一下。好了下面就给大家讲讲这几个类,并且将它们用到的Java Sound API中的类和函数等一并做个简单介绍,让大家对Java Sound API中常用的类也有个大致的了解。由于Java Sound API中的类比较多。限于篇幅无法对所有用到的类做详尽的解释,以下内容只是简单提及了各个类的用途和使用规范,有关Java Sound API中类的具体介绍请大家访问这里http://java.sun.com/j2se/1.4.2/docs/api/, 查找javax.sound.sampled的相关内容。

  以下的提到几个文件是从Answer Machine 演示程序的源代码中提取出来的,由于是开放源代码的程序,大家在使用的时候请注意相关的公共协议。

  ① AMAudioFormat类(封装在AMAudioFormat.java文件中)

  AMAudioFormat类封装了CD、FM、TELEPHONE、GSM这四种质量的音频格式的参数,使用起来也非常简单,这样我们在使用Java Sound API时就不用自己去写那些复杂的代码了,但为了明白Java Sound API的原理,我们需要对它的代码做一下分析。它使用了Java Sound API中的AudioFormat这个类,这个类非常重要,在Java中对任何音频数据的使用都要实现通过它指定所需要使用的音频格式,AudioFormat类有一个嵌套的类AudioFormat.Encoding,实际上大部分对AudioFormat类的使用都是使用的这个嵌套的类。

  AMAudioFormat类的重要方法:

  名称:getLineAudioFormat
  调用格式:getLineAudioFormat(整型音频格式代号)
  返回值: 根据传递音频格式代号生成的AudioFormat对象。

  说道这里大家可能要问了,那么通过Java Sound API可以直接使用GSM格式吗?答案是比较复杂,但同样有解决的办法,作者在这里使用了另外的开源程序的类库-tritonus的GSM编码解码库。大家需要在这里www.tritonus.org/plugins.html下载tritonous_share.jar和tritonus_gsm.jar两个文件,并在AMAudioFormat类中引用,这样就完成了GSM格式的设置。需要告诉大家的是在对AMAudioFormat.java这个类进行编译后,我们的程序运行的时候就可以不需要tritonous_share.jar和tritonus_gsm.jar这两个文件的支持了。

  ② AudioCapture类(封装在AudioCapture.java文件中)

  AudioCapture类封装了从音频硬件捕获音频数据并自动编码为GSM音频压缩数据的过程,并且通过它的getAudioInputStream()方法提供给我们一个音频数据输入流,我们就可以直接将这个流发送到网络中。

  AudioCapture 类的重要方法:
  名称:getAudioInputStream
  调用格式:getAudioInputStream()
  返回值:AudioInputStream对象

  AudioCapture 类使用了Java Sound API中的AudioInputStream、AudioFormat、AudioSystem这几个类和TargetDataLine、LineListener接口。除了AudioFormat类我再简单介绍一下其他的类:

  AudioInputStream 类是带有特殊音频格式和长度的InputStream类,它有两个构造方法,分别是AudioInputStream(InputStream stream, AudioFormat format,long length)和AudioInputStream(TargetData -Line line)。

  TargetDataLine 接口是DataLine接口的一种,通过它就可以直接从音频硬件获取数据了,它有几个常用的方法,分别是:open(AudioFormat format)、void open(AudioFormat format, int bufferSize)、int read(byte[] b, int off, int len)。

  AudioSystem 类是Java标准音频系统的入口点,在AudioSystem 类中使用他的getLine() 方法创建TargetDataLine对象。

  LineListener接口用来对线路状态改变的时间进行监听,他的重要的方法是update(LineEvent event)方法。

  ③ AudioPlayStream类(封装在AudioPlayStream.java文件中)

  AudioPlayStream类与AudioCapture类刚好相反,它封装了GSM压缩音频数据的解码和音频信号的回放过程,提供给我们一个音频信号输出流。AudioCapture类用到的Java Sound API中的类它也基本都用到了,只是它使用了SourceDataLine接口而不是TargetDataLine接口

  ④ Debug类(封装在Debug.java文件中)

  Debug类主要用来在调试时输出讯息,代码很少,后来我把其中输出信息的语句都屏蔽了,对程序运行没有影响。

  为了方便使用以上的几个类,我们需要对它们进行编译和打包,编译时需要设置相关的编译环境,以下是我们需要用到的命令行

set CLASSPATH=%CLASSPATH%;.;tritonus_gsm.jar;tritonus_share.jar
javac am\*.java am\audio\*.java
jar cmf packaging\manifest.mf am.jar am\*.class
am\audio\*.class

  说明一下,我将以上提到的Java源码文件放在了am目录下,编译之后可以得到一个8k的am.jar文件,我们下一步所需要做的就是在我们的程序中引用这个包。

四、实例介绍

  有了以上的基本的介绍,我就可以通过对我写的一个极为简单的语音对讲软件代码的解释让大家更清楚地了解一下这几个模块的具体使用方法,大家可以从中获得开发具有诸如网络电话、自动应答等功能的软件的类似方法,用于语音数据的传输。

  程序的结构:


  整个程序分三层,作用分别如下:

  . 顶层: 用户界面

  . 中间层: 控制层

  . 底层: 传输层

  程序有两个主要的类: (表)

类名 描述
CallLink 网络传输层,用于接收或发送音频数据。
VoiceSender 作为第二个启动的线程提供从音频硬件捕获并编码好的数据给网络传输层。



  程序的主类jphone使用了Runnable和ActionListener接口,主类除了基本的几个方法之外,还具有方法initAudioHardware()、ShowMSG、startPhone分别用于初始化AudioCapture类与AudioPlayStream类、显示程序状态和开始程序。主类jphone具有两个子类VoiceSender和CallLink。

  子类VoiceSender同样使用了Runnable接口,它在程序中作为第二个启动的线程负责发送捕获到的音频数据。CallLink子类就是负责建立scoket连接,并且负责接收或发送网络数据、监听网络连接等功能的实现。它具有主要的方法是getInputStream()、getOutputStream()、listen()、open()、close()等。

  为了让大家更清楚的了解程序的结构请大家看下面的类图。
点击在新窗口中浏览此图片
程序的基本工作流程:

  当程序启动时首先执行建立当前主类的实例,当按下呼叫按钮的时候执行startPhone()方法,startPhone()方法通过调用initAudioHardware()方法建立AudioCapture对象和AudioPlayStream对象的实例PhoneMIC和PhoneSPK, 紧接着在建立CallLink子类的实例curCallLink来与具有目标IP地址的计算机进行scoket连接后,startPhone()方法又将子类VoiceSender作为secondThread线程启动,然后又调用run()方法。 run()方法通过已经建立的CallLink子类的实例curCallLink监听网络上的数据(也就是等待别人的呼叫),一旦有音频数据到来curCallLink 实例就为AudioPlayStream 对象PhoneSPK 提供网络传来的音频数据,而PhoneSPK在一个循环中不断的将音频数据转换为音频信号,完成类似电话听筒的功能。

  子类VoiceSender 就作为第二线程启动的时候,startPhone() 方法传递给它的参数是实例化的CallLink 子类curCallLink , 子类VoiceSender 通过实例化的AudioCapture 对象PhoneMIC 将音频信号压缩成GSM数据,并通过curCallLink 将音频数据发送到具有目标IP 地址的计算机上,完成类似电话受话器的功能。

  在这里实例化的CallLink 子类curCallLink 就相当于两个电话之间的电话线,这样通过我以上的解释大家对程序的原理就有一个大概的了解了吧。

  其中的音频数据发送线程和音频数据接收线程是同步的,不过考虑到网络的因素,可能在声音的传输上有一些延迟,不过由于延迟比较小对及时听到对方的话语影响不大。
点击在新窗口中浏览此图片
编写代码摘要:

  在使用AudioCapture 类和AudioPlayStream 类的方法之前需要知道怎样初始化这两个类。在声明AudioCapture 对象的时候需要传递给它一个静态的整型值用于表达将音频信号压缩的方式,这个静态的整型常量可以是AMAudioFormat 类的以下四个值之一: FORMAT_CODE_CD 、FORMAT_CODE_FM 、FORMAT
_CODE_TELEPHONE 、FORMAT_CODE_GSM 。所以声明AudioCapture 对象就要用一下的形式:


private AudioCapture PhoneMIC null;
PhoneMIC new AudioCapture(AMAudioFormat.
FORMAT_CODE_GSM);  


  而声明AudioPlayStream 对象则不同,我们在初始化它的时候需要传递给它一个AudioFormat 对象,用于通知它我们所要播放音频的格式,这个AudioFormat 对象可以通过AMAudioFormat 类的getLineAudioFormat(格式参数值)方法获得,其中格式参数的取值和上面提到过的AMAudioFormat 的四个值相同,所以声明AudioPlayStream 对象就要用以下的形式:


private AudioPlayStream PhoneSPK null;
AudioFormat format null;
format AMAudioFormat.getLineAudioFormat
(AMAudioFormat.FORMAT_CODE_GSM);
PhoneSPK new AudioPlayStream(format);  


  在这之后就可以使用AudioCapture 和AudioPlayStream 对象的open() 方法打开音频捕获和音频回放通道完成它们的初始化了。如以下的形式:


PhoneMIC.open();
PhoneSPK.open();  


  初始化完成之后要使AudioPlayStream 对象播放声音还需要以下过程,首先建立一个缓冲区(字节数组)用于存放从网络传来的音频数据流,然后执行AudioPlayStream 对象的start() 方法使AudioPlayStream
对象开始声音的回放,这时执行一个while 循环,在循环中将音频流数据写入缓冲区,再使用AudioPlayStream对象的write()方法将缓冲区的数据还原成语音信号然后播放出来。如下面的例子:


boolean complete false;
byte[] gsmdata new byte[bufSize];
int numBytesRead 0;
......
PhoneSPK.start();
......
complete false;
while((!Thread.currentThread().interrupted()) )
{
 try
 {
  numBytesReadplaybackInputStream.read(gsmdata);
  if(numBytesRead == -1)
  {
   complete=true;
   break;
  }
  PhoneSPK.write(gsmdata, 0, numBytesRead);
 }
 catch (IOException e)
 {
  System.exit(1);
 }
}  


  其中complete 的值用于标志终止声音播放的异常原因。

  类似的,初始化完成之后要使AudioCapture 对象捕获和压缩声音数据还需要其他的操作,首先声明一个InputStream 对象,赋其值为AudioCapture 对象的getAudioInputStream() 方法的返回值,执行
AudioCapture 对象的start() 方法,然后在建立一个循环,将通过InputStream 的read() 方法得到的数据发送到网络上。例如以下代码:


InputStream myIStream null;
myIStream PhoneMIC.getAudioInputStream();
......
while((!Thread.currentThread().interrupted()))
b = myIStream.read(compressedVoice,0, bufSize);
sendStream.write(compressedVoice,0,b);
......



  通过使用CallLink 的几个方法,我们可以方便的传输和接收音频数据流。以下是它的代码:


class CallLink
//使用套接字进行连接
String ipAddr null;
Socket outSock = null;
ServerSocket inServSock null;
Socket inSock null;
CallLink(String inIP)
ipAddr inIP;
void open() throws IOException, UnknownHostException
{//打开网路连接
if (ipAddr != null)
outSock=new Socket(ipAddr,TALK_PORT);
}

void listen() throws IOException
{// 监听,等候呼叫
inServSock new ServerSocket(TALK_PORT);
inSock inServSock.accept();
}

public InputStream getInputStream()throws IOException
{//返回音频数据输入流
if (inSock != null)
return inSock.getInputStream();
else
return null;
}
publicOutputStreamgetOutputStream()throwsIOException
{//返回音频数据输出流
if (outSock != null)
return outSock.getOutputStream();
else
return null;
}

void close() throws IOException
{//关闭网络连接
inSock.close();
outSock.close();
}



  程序的代码总体有366 行,限于篇幅,这里就不一一列举了。

  编译以及程序的使用方法:

  运行和编译本程序需要加上额外的环境参数,为了方便使用可以建立以下内容的批处理文件:(假设程序所需要的包均在程序所在目录下的lib 文件夹中)

  用于编译的批处理程序c.bat 的内容

javac -classpath .;lib\am.jar jphone.java

  用于运行的批处理程序r.bat 的内容

java -classpath .;lib\am.jar jphone

  启动时在A 计算机的IP 地址框内输入要进行连接的计算机B 的IP 地址,在计算机B 的IP 地址框内输入要进行连接的计算机A 的IP 地址,让后分别点击“拨出电话”按钮就可以进行连接了。当然别忘了接上麦克风和打开音箱电源,呵呵。

  提醒大家,这里的IP 地址栏里预先存在的地址是127.0.0.1,也就是说,程序也可以和自己进行连接,点击“拨出电话”按钮,等8 秒左右敲敲你的麦克风,听到没有,是不是也有“嘣、嘣、嘣”的声音?

分页: 268/271 第一页 上页 258 259 260 261 262 263 264 265 266 267 268 269 270 271 下页 最后页 [ 显示模式: 摘要 | 列表 ]