如何在DELPHI中判断本地机的文件是否共享?(50分)

  • 主题发起人 主题发起人 delphiasp
  • 开始时间 开始时间
D

delphiasp

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在DELPHI中判断本地机的文件是否共享?
如何在程序中更改它的共享属性?
 
在注册表上/hkey_local_machine/software/microsoft/windows/currentversion/network/lanman
 
Win2k是在注册表中的
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/Shares项中
 
能否具体一点?在Delphi中如何实现?
 
代码如下,不一定全对,但方法肯定对。
procedure TMain.FormCreate(Sender: TObject);
var myreg : tregistry;
begin
top:=10;
myreg := tregistry.create;
myreg.rootkey := HKEY_LOCAL_MACHINE;
myreg.OpenKey('software/microsoft/windows/currentversion/network/lanman',false);
myname:=myreg.GetKeyNames(label1.caption);
end
你可以查一下Delphi帮助中的TRegistry或TReginiFile
 
多人接受答案了。
 
解决了?
给你copy 一粉代码:
procedure getsharefolder(const computername:string);//获取某一计算机上的共享目录
var
errcode,a:integer;
netres:array[0..1023] of netresource;
enumhandle:thandle;
enumentries,buffersize:dword;
s:string;
mylistitems:tlistitems;
mylistitem:tlistitem;
mystrings:tstringlist;
begin
// 开始
with netres[0] do begin
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_DISK;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SHARE;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=pchar(computername);
lpcomment :=nil;
lpprovider :=nil;
end;
// 获取根结点
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
if errcode=NO_ERROR then
begin
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
end;
wnetcloseenum(enumhandle);
a:=0;
mylistitems:=controlcenter.lstfile.Items ;
mylistitems.Clear ;
while (string(netres[a].lpprovider)<>'') and (errcode=NO_ERROR) do
begin
with mylistitems do
begin
mylistitem:=add;
mylistitem.ImageIndex :=4;
mylistitem.Caption :=extractfilename(netres[a].lpremotename);
end;
a:=a+1;
end;
end;

 
后退
顶部