用VB写了一个ActiveX DLL文件(abc.dll)供PowerBuilber程序调用,
我注册abc.dll这个文件(regsvr32 abc.dll)...
 {因为在PowerBuilber调试这个DLL,DLL中的函数有问题还要调整DLL文件里的函数}
...然后在反注册后(regsvr32 abc.dll -u)删除这个文件,但删除不了,必须重新启动电脑才能删除掉,
主要因为在调试DLL中的函数,觉得老重启电脑很麻烦,
如何我不重启的前提下能删除这个文件

解决方案 »

  1.   

    不需要反注册,修改后直接编译dll覆盖即可
      

  2.   

    反注册只是从注册表里移除信息,如果dll还被其他程序调用,那么它还是被锁定的,不能删除
    你应该估计什么程序会占用它,是不是你的调试器?然后退掉,或者用unlocker查看一下可以查出来的
    只要不和系统进程挂钩,一般不需要重启都能删掉
      

  3.   


    'DeleteDll.vbs
    on error resume next
    sFile=wscript.arguments(0)
    if sFile="" then wscript.quit
    ext=mid(sfile,instrrev(sfile,".")+1)
    'if lcase(ext) <> "dll" then wscript.quit
    sName=mid(sFile,instrRev(sfile,"\")+1)
    set objShell=createObject("Wscript.Shell")
    sCmd="%comspec% /k COLOR 1A "
    sCmd=sCmd & "&& @echo 正在结束所有调用" & sFile & "的进程... "
    sCmd=sCmd & "&& taskkill /f /fi " & chr(34) & "MODULES EQ " & sName & chr(34) & " /im * "
    sCmd=sCmd & "&& @echo 正在反注册" & sFile & " "
    sCmd=sCmd & "&& regsvr32 /u " & chr(34) & sFile & chr(34) & " "
    sCmd=sCmd & "&& del /p " & chr(34) & sFile & chr(34) & " "
    sCmd=sCmd & "&& pause "
    sCmd=sCmd & "&& exit"
    objshell.run sCmd
    set objShell=nothing
      

  4.   

    安装 Unlocker 也可以:-)