1、把做好的dll文件放到虚拟目录后,运行客户端程序一次后,再想把新的dll文件去覆盖原dll文件时,总是提示“文件正在使用”不能覆盖,一定得重起计算机吗?有什么办法不重起?
2、dll文件一起发布的有一个ini配置文件,发布在同一目录下,可他就是找不到,指定绝对路径后可以找到,为什么?指定绝对路径安装可不方便啊

解决方案 »

  1.   

    用delphi自帶的webdebug來調試你的dll,無誤後再發布!!!
      

  2.   

    对于ini文件,如果不指定绝对路径,则系统只会从WinNT或者Windows目录(因操作系统而异)查找
      

  3.   

    补充,如果不指定绝对路径,TINIFile.Create(sFile)首先是从“系统变量->环境变量->Path”里面指定的目录列表里面查找sFile,如果找不到,就会自动在WinNT或者Windows目录(因操作系统而异)中创建sFile。
      

  4.   

    1.应该把Internet服务停掉就可以了,如果你用IIS的话。
    如果你是用WebServices写的,应该把服务程序关闭就可以了,是否有些没有Free,检查以下代码吧。
    2.在程序中指定当前目录,通过application的Path进行转换
      

  5.   

    to hhytsoft(雨中独行):
    他的是DLL,是没有Application对象的
      

  6.   

    一.如果你用的是IIS5以下的版本,直接停止WWW服务就可以覆盖原来的.dll了,如果用的IIS是5.0版本:右击虚拟目录,在弹出菜单里选“属性”,在“属性”界面的“虚拟目录”(或“主目录”)标签下的界面点击“应用程序保护”后面的“卸载”按钮,等卸载完成后就可以覆盖原来的.dll了
    二.试试在文件夹选项里选中“显示所有文件”看看能不能显示出你说的那个.ini文件。
      

  7.   

    1.关闭IIS服务即可
    2.用下面的函数来取路径试试,如果你用的是ParamStr(0),获得的路径一般是系统路径.
    function GetDllPath(): string;
    var
      arrPath: array[0..260] of Char;
    begin
      FillChar(arrPath, SizeOf(arrPath), 0);
      GetModuleFileName(HInstance, arrPath, 260);
      Result := arrPath;
      Result := ExtractFilePath(Result);
    end;
      

  8.   

    谢了,你们的方法我都会试一下,不过,重起IIS是没用的
      

  9.   

    谁有这方面的资料啊,给我发一份好吗?
    [email protected]
      

  10.   

    这就是windows的dll卸载漏洞!
    很多病毒都是利用这个原理!