怎样把程序拷贝到网络中共享的目录里?(100分)

  • 主题发起人 主题发起人 fanren945
  • 开始时间 开始时间
F

fanren945

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样把程序拷贝到网络中共享的目录里?
我希望在我程序执行的时候自动搜索网络中共享的目录,之后把自己拷贝到共享目录中,
但我不知道该怎样做,请高手给出源代码,有源程序就更好了。
 
>自动搜索网络中共享的目录,请参考 :

http://www.delphibbs.com/delphibbs/dispq.asp?lid=103193

>把自己拷贝到共享目录中:

http://www.delphibbs.com/delphibbs/dispq.asp?lid=169288
 
老兄:
你不是想做Nimda病毒吧!!
 
我用以下方法可以得到某一工作组内的所有主机或某一主机内的所有共享文件夹名
procedure TSearchFileThread.Execute;//线程
Var
EnumHandle : THandle;
FileRS : TNetResource;
Buf : Array[1..500] of TNetResource;
BufSize : DWord;
Entries : DWord;
Result : Integer;
begin
mydir := mydir + #0;//mydir为工作组名时可以得到组内所有主机名
//mydir为主机名时可以得到机内所有共享文件夹名
FillChar(FileRS, SizeOf(FileRS) , 0);
With FileRS do begin
dwScope := 2;
dwType := 3;
dwDisplayType := 1;
dwUsage := 2;
lpRemoteName := @mydir[1];
end;
WNetOpenEnum( RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
0,
@FileRS,
EnumHandle );
Repeat
Entries := 1;
BufSize := SizeOf(Buf);
Result := WNetEnumResource( EnumHandle,Entries,@Buf,BufSize );
If (Result = NO_ERROR) and (Entries = 1) then
begin
s:= StrPas(Buf[1].lpRemoteName); //得到网上资源名,主机或文件夹
Synchronize(AddFile); //Form1.ListBox1.Items.Add(s);
end ;
Until (Entries <> 1) or (Result <> NO_ERROR);
WNetCloseEnum( EnumHandle );
end;
如令mydir 为WorkGroup则可得到WorkGroup内所有计算机名
如令mydir 为//201 则可得到主机//201内所有共享文件夹名
现在的问题是 如令mydir 为//201/share (已知share为//201内一共享文件夹),则
ListBox1内没有显示,即得不到 //201/share 内的共享文件夹名和文件名。
不知何故,请教各位。

这个问题我自己解决了!
可以用以下方法获得已知共享文件夹中的文件。
Found := FindFirst(mydir+'/*.*', $0000003F , searchrec);
while Found = 0 do
begin
listBox1.items.Add(searchrec.name);
Found := FindNext(SearchRec);
end;
FindClose(SearchRec);
换一个问题吧。怎样才能让程序知道一个共享文件夹打开时需要密码?

用WNetAddConnection2, 然后看返回值是否为ERROR_INVALID_PASSWORD
 
<<老兄:
<< 你不是想做Nimda病毒吧!!

我很想啊,不过暂时没时间做,有时间大家可以研究研究嘛。

十分感谢卷起千堆雪tyn。
 
不好意思TYZhang,没想到你也回答了这个问题对您的回答我十分满意,
早知道我就不那么早分配分了,下次补上,谢了。
 
后退
顶部