故事是这样的:
我想用“复制钩子”技术屏蔽对某些文件夹的操作!
我将受保护的文件夹路径保存到一个Access数据库中,然后想在CopyCallback方法中进行匹配,可是添加如下代码:
ADOQuery1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=E:\Data.mdb;Persist Security Info=False"; 
ADOQuery1.SQL.Add("select * from table"); 
ADOQuery1.Active=true; 
后编译通过了,但是将生成的DLL文件注册到系统后进行文件夹(复制,重命名,剪切,删除)操作时就会出错。
大家说这样行的通吗?为什么不能连接数据库呢?
有人告诉我不用连接数据库,直接将数据读入内存,可是我哪里会啊,你会吗?
如果你有更好的办法,麻烦你告诉我啊!

解决方案 »

  1.   

    你把应用程序和DLL联调一下,感觉很数据库连接没有什么关系,不然把代码贴出来看看
      

  2.   

    我的应用程序跟DLL没关系,而且DLL里面只覆盖了CopyCallback方法(也只有这一个方法),而且这个方法里面目前我只添加了连接数据库的代码!
    如果添加别的代码是可以实现的,比如MessageBox('你确定要执行该操作么?','注意',MB_YESNO)
      

  3.   

    加上CoInitialize(nil)和CoUninitialize试试(分别在代码开始和结束)
      

  4.   

    关键在于你的DLL接口有没有export
    我的想法:
    从数据库中取要拷贝的文件名是绝对没问题的
    但是关键你的应用程序传的参数是否一一对应.
      

  5.   

    to clasj(我蛮怀) :  
    >>写到文本里面,你保证能读吗?
    如果寫到文本里不能保證能讀, 那同樣不能保證寫到數據庫就能讀啊!!