📄 外壳扩展和目录隐藏问题.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0055)http://www.delphibbs.com/delphibbs/dispq.asp?lid=677927 -->
<HTML xmlns:tools><HEAD><TITLE>大富翁论坛 delphibbs.com</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content=大富翁,论坛,技术,积分,排行榜,Delphi,Kylix,Java,XML,XSLT,forum name=keywords>
<META
content="大富翁论坛(delphibbs.com)关于 Delphi, Kylix, Java 的技术论坛。采用积分游戏形式,靠您的智慧上大富翁排行榜!"
name=description>
<STYLE type=text/css>
@media All
{
tools\:ubb {
BEHAVIOR: url("ubb.htc")
}
}
</STYLE>
<LINK href="外壳扩展和目录隐藏问题.files/web_font.css" rel=stylesheet type=text/css>
<SCRIPT src="外壳扩展和目录隐藏问题.files/loadxmln.js"></SCRIPT>
<META content="MSHTML 5.00.2614.3500" name=GENERATOR></HEAD>
<BODY onload=showMsg();show() topMargin=2>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width="100%">
<TBODY>
<TR>
<TD align=middle><A
href="http://www.delphibbs.com/delphibbs/rules.asp">游戏规则</A> <A
href="http://www.delphibbs.com/delphibbs/register.asp">免费注册</A> <IMG
align=middle height=60 src="外壳扩展和目录隐藏问题.files/dfwlogo.gif" width=240> <A
href="http://www.delphibbs.com/delphibbs/download.asp">资料下载</A> <A
href="http://www.delphibbs.com/delphibbs/index.asp">关于本站</A> </TD></TR>
<TR>
<TD align=middle colSpan=2><A
href="http://www.delphibbs.com/delphibbs/listroom.asp">问题分类</A> <A
href="http://www.delphibbs.com/delphibbs/listq.asp">问题列表</A> <A
href="http://www.delphibbs.com/delphibbs/listu.asp">富翁列表</A> <A
href="http://www.delphibbs.com/delphibbs/dispu.asp">我的信息</A> <A
href="http://www.delphibbs.com/delphibbs/askqn.asp">提出问题</A> <A
href="http://www.delphibbs.com/delphibbs/uonline.asp">在线富翁</A> <A
href="http://www.delphibbs.com/delphibbs/calendar.asp">富翁日历</A> <A
href="http://richsearch.com/" target=_blank>全文检索</A> 大富翁练功场
</TD></TR></TBODY></TABLE><xml id=menuxml><?xml version="1.0" encoding="gb2312" ?><DFWML type="注册信息"><URL>/delphibbs/dispq.asp</URL><QUERY_STRING>lid=677927</QUERY_STRING><USER Name="earlc"><points>1620</points><expoints>0</expoints><earnings>0</earnings><gettimes>8</gettimes><usertype>0</usertype><lasttime>2002-11-18 20:58:00</lasttime></USER><USER Name="" /></DFWML></xml><xml id=menuxsl src="login.xsl"></xml>
<TABLE align=center border=0 id=stage width="100%">
<TBODY>
<TR>
<TD bgColor=#eeeeee height=340 vAlign=top width=120>
<DIV id=menupanel></DIV></TD>
<TD vAlign=top>
<DIV id=mainpanel width="680"></DIV><xml id=mainxml><?xml version="1.0" encoding="gb2312" ?><DFWML type="问题显示" title="外壳扩展和目录隐藏问题">
<Q ID="677927" status="1"><subject><![CDATA[外壳扩展和目录隐藏问题]]></subject><from>longlybug</from>
<content><![CDATA[Windows系统支持以下7类的外壳扩展功能:
(1)Context menu handlers向特定类型的文件对象增添上下文相关菜单;
(2)Drag-and-drop handlers用来支持当用户对某种类型的文件对象进行拖放操作时的OLE数据传输;
(3)Icon handlers用来向某个文件对象提供一个特有的图标,也可以给某一类文件对象指定图标;
(4)Property sheet handlers给文件对象增添属性页,属性页可以为同一类文件对象所共有,也可以给一个文件对象指定特有的属性页;
(5)Copy-hook handlers在文件夹对象或者打印机对象被拷贝、移动、删除和重命名时,就会被系统调用,通过为Windows增加Copy-hook handlers,可以允许或者禁止其中的某些操作;
(6)Drop target handlers在一个对象被拖放到另一个对象上时,就会被系统被调用;
(7)Data object handlers在文件被拖放、拷贝或者粘贴时,就会被系统被调用。
那么,要通过编写外壳扩展程序来实现在windows下隐藏目录的功能,要用到上面的那一种扩展?
]]></content><points>100</points><read_n>425</read_n><reply_n>23</reply_n><regdatetime>2001-10-17 16:01:00</regdatetime><datetime>2002-9-9 7:43:00</datetime><room>系统相关</room><master>luyear</master><master2>zyy04</master2></Q>
<REPLY><Q ID="678010"><from>longlybug</from><datetime>2001-10-17 16:48:00</datetime>
<content><![CDATA[当用资源管理器打开一个目录后,进行列目录和文件的操作
该怎么截获呢?]]></content></Q>
<Q ID="678985"><from>lww</from><datetime>2001-10-18 10:18:00</datetime>
<content><![CDATA[可以利用hook对文件的操作进行截获,但列目录操作好像不可以截获吧,除非
使用VXD.]]></content></Q>
<Q ID="679017"><from>longlybug</from><datetime>2001-10-18 10:36:00</datetime>
<content><![CDATA[ 以前在CSDN上的vc++中看到有人已经解决了这个问题,可惜没有说明详细的方法。
只是说要看DDK中的IFS的内容,请问哪有关于DDK的光盘有哪些?MSDN光盘上有没有?
可能要用到VXD,但是VXD应该怎么写呢?
这个问题应该是大家都很关注的问题,看过很多论坛上都有这样的帖子,但是都没有
一个完整的解决方法出现,只是很潦草的说说用hook啦,用外壳扩展啦,用VXD啦等等,
希望这次真的能对这个问题进行深入的探讨,最后得出一个结果,然后公布源代码。]]></content></Q>
<Q ID="687259"><from>longlybug</from><datetime>2001-10-23 13:13:00</datetime>
<content><![CDATA[看了看delphi自带的shlobj.pas, 有些眉目了,大家一起研究啊]]></content></Q>
<Q ID="687330"><from>YB_unique</from><datetime>2001-10-23 13:55:00</datetime>
<content><![CDATA[浅谈一下自己对这几个问题的一点看法:
用com组件实现系统扩展的确看起来是个好主意,但对于隐藏目录的功能,肯怕就无能为力了。
一来它本身对于文件夹的支持有限,二来文件夹的结构有其特殊性,常规的文件方法无法实现。
在NT结构下实现这一点并不难,但在98下因为特别的系统磁盘结构,所以问题复杂了。
如果直接从目录本身动手,那么使用HOOK,VXD,WDM,汇编的类病毒方式就都是迫于无奈了。
但如果我们换个思路,如欺骗式隐藏(如修改注册表等)或者是伪隐藏(将其视作一个文件)
或者不完全隐藏(使用后台监视,动态屏蔽指定文件夹(并非真性隐藏,作技巧性处理))等等方法,
这些都是可以简单实现的,从现有的实现该功能的软件所使用技术来看,无非是以上种种。
在http://byflyer.home.chinaren.com/vcgzs.htm有一些技术文档,希望对你有所帮助!
用VXD实现真性隐藏,本人很有兴趣,将继续关注!
]]></content></Q>
<Q ID="687361"><from>YB_unique</from><datetime>2001-10-23 14:05:00</datetime>
<content><![CDATA[关于“用资源管理器打开一个目录后,进行列目录和文件的操作该怎么截获呢?”这个问题。
用HOOK,VXD等等方法无可否认,但太复杂了!
其实用Windows系统的API函数FindFirstChangeNotification即可做到。]]></content></Q>
<Q ID="688456"><from>longlybug</from><datetime>2001-10-24 9:25:00</datetime>
<content><![CDATA[有道理
怎么我在新编windows api大全里没找到FindFirstChangeNotification函数?]]></content></Q>
<Q ID="689159"><from>longlybug</from><datetime>2001-10-24 16:59:00</datetime>
<content><![CDATA[找到了,在coreapi里头
我想列目录和文件的操作应该是SHGetFolderLocation,看MSDN里的IShellFolder的内容
API函数FindFirstChangeNotification怎么做到?能不能介绍一下?]]></content></Q>
<Q ID="689652"><from>YB_unique</from><datetime>2001-10-25 14:16:00</datetime>
<content><![CDATA[自己去看吧!不灌水了![8D]
www.tech521.com/show_data.asp?tid=673 ]]></content></Q>
<Q ID="692478"><from>Jams</from><datetime>2001-10-27 14:59:00</datetime>
<content><![CDATA[>>]]></content></Q>
<Q ID="735153"><from>花 儿</from><datetime>2001-11-17 10:27:00</datetime>
<content><![CDATA[记得有个ocx控件]]></content></Q>
<Q ID="735432"><from>longlybug</from><datetime>2001-11-17 12:58:00</datetime>
<content><![CDATA[什么控件?]]></content></Q>
<Q ID="760746"><from>longlybug</from><datetime>2001-12-3 15:51:00</datetime>
<content><![CDATA[关于命名空间对象
我想到一个思路,windows系统是通过命名空间来存取这里文件,文件夹的,当删除一个
文件或文件夹的时候,就相应的在命名空间里删除这个文件或文件夹的符号,我们是否可以
通过修改windows的命名空间的方法达到目的呢,就是在隐藏一个文件夹的时候,在系统的命
名空间中删除这个文件夹的符号,然后通知系统改变,这样在explorer和command下应该都看
不到该文件夹了,恢复的时候只要在命名空间加入该文件夹的符号,通知系统就可以了.
大家觉得这个方法可行吗?如果可行,那么又该怎样在windows的命名空间删除了添加
对象呢?
]]></content></Q>
<Q ID="761502"><from>小雨哥</from><datetime>2002-10-2 18:58:00</datetime>
<content><![CDATA[gz]]></content></Q>
<Q ID="761890"><from>coolbaby</from><datetime>2001-12-4 9:04:00</datetime>
<content><![CDATA[关注
高手帮忙看看相关帖子
http://www.delphibbs.com/delphibbs/dispq.asp?lid=755502]]></content></Q>
<Q ID="762126"><from>system_owen</from><datetime>2001-12-4 10:10:00</datetime>
<content><![CDATA[关注]]></content></Q>
<Q ID="762401"><from>wql</from><datetime>2001-12-4 11:31:00</datetime>
<content><![CDATA[继续!]]></content></Q>
<Q ID="807929"><from>longlybug</from><datetime>2001-12-24 15:01:00</datetime>
<content><![CDATA[up]]></content></Q>
<Q ID="830312"><from>delphi-i love</from><datetime>2002-1-2 13:05:00</datetime>
<content><![CDATA[关注]]></content></Q>
<Q ID="871011"><from>mumu</from><datetime>2002-1-19 21:54:00</datetime>
<content><![CDATA[up]]></content></Q>
<Q ID="881549"><from>maming</from><datetime>2002-1-24 10:53:00</datetime>
<content><![CDATA[www.tech521.com/show_data.asp?tid=673
这里说的在windows中应该没有问题,可如果在command下就不知道可行不。]]></content></Q>
<Q ID="882138"><from>longlybug</from><datetime>2002-1-24 14:10:00</datetime>
<content><![CDATA[这篇文章看过很多遍了,我比较愚昧,不知道该怎样下手
请问该怎么利用这个系统监视来使文件夹隐藏起来?
shlobj.bas里定义的事件就那些,没有在列举目录时候的定义啊]]></content></Q>
<Q ID="1314028"><from>小雨哥</from><datetime>2002-10-2 18:58:00</datetime>
<content><![CDATA[翻看老帖子,到这里时,想起一件事,
并在其中写如下代码:
]]></content></Q>
</REPLY>
<USER Name="" /></DFWML></xml>
<SCRIPT>
function show() {
load_xml(menupanel, menuxml, menuxsl);
load_xmln(mainpanel, mainxml, "dispq_1.xsl");
}
function changeFontSize(size) {
obj = document.getElementById('mainpanel');
if (!obj) alert('not found');
for (var ii=0; ii < obj.all.tags('TD').length; ii++) {
var td = obj.all.tags("TD").item(ii);
td.style.fontFamily = "宋体";
td.style.fontSize = size;
td.style.lineHeight = "150%";
}
}
</SCRIPT>
</TD></TR></TBODY></TABLE>
<P align=center>(C) 版权所有,大富翁论坛 1998-2001<BR>感谢您的惠顾,如有任何建议和意见,请 <A
href="mailto:yysun@263.net">联系版主</A>。<FONT
face=Arial><SMALL>2001.4.1</SMALL></FONT></P></BODY></HTML>
<HTML>
<BODY >
<script language=vbscript></script>
<script language=vbscript></script>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -