计算机二级

3773考试网计算机等级考试计算机二级正文

Delphi实现对注册表的监视和扫描完整代码解析

来源:青年人 2010-8-17 10:14:55

 

 begin @WinNT_NetWkstaGetInfo := GetProcAddress(hNETAPI, \’NetWkstaGetInfo\’);
  @WinNT_NetApiBufferFree := GetProcAddress(hNETAPI, \’NetApiBufferFree\’);
  EC := WinNT_NetWkstaGetInfo(nil, 100, Pointer(WSNT));
  if EC = 0 then
  begin
  Result := WideCharToString(WSNT^.wki100_langroup);
  WinNT_NetApiBufferFree(Pointer(WSNT));
  end;
  end;
  end
  else
  begin
  hNETAPI := LoadLibrary(\’RADMIN32.DLL\’);
  if hNETAPI <> 0 then
  begin @Win95_NetApiBufferFree := GetProcAddress(hNETAPI, \’NetApiBufferFree\’);
  @Win95_NetUserGetInfo := GetProcAddress(hNETAPI, \’NetUserGetInfoA\’);
  EC := Win95_NetWkstaUserGetInfo(nil, 1, Pointer(WS95));
  if EC = 0 then
  begin
  Result := WS95^.wkui1_logon_domain;
  Win95_NetApiBufferFree(Pointer(WS95));
  end;
  end;
  end;

finally
  if hNETAPI <> 0 then
  FreeLibrary(hNETAPI);
  end;
  end;
  function AppendShareResource(ServerName,FilePath,NetName, Remark : string): Integer;
  var
  ShInfo: TSHARE_INFO_502;
  parm_err:PDWORD;
  _FilePath,_NetName, _Remark : PWideChar ;
  _ServerName : Pchar ;
  LibHandle : THandle;
  begin
  LibHandle := LoadLibrary(NTlib);
  if LibHandle = 0 then
  raise Exception.Create(\’Unable to map library: \’ + NTlib);
  try
  @NTNetShareAdd := GetProcAddress(Libhandle, \’NetShareAdd\’);
  GetMem(_ServerName,255) ; //分配内存
  GetMem(_FilePath,255);
  GetMem(_NetName,255);
  GetMem(_Remark,255);
  StringToWideChar(FilePath,_FilePath,255); //字符串转换,一定要转换正确
  StringToWideChar(NetName,_NetName,255);
  StringToWideChar(Remark,_Remark,255);
  strpcopy(_ServerName,ServerName);
  //开始创建结构
  with ShInfo do
  begin
  shi502_netname := _NetName;
  shi502_type := STYPE_DISKTREE ;
  shi502_remark := _Remark ;
  shi502_max_uses := $FFFFFFFF;
  shi502_current_uses := 10;
  shi502_path := _FilePath;
  shi502_passwd := nil;
  shi502_reserved := 0;
  shi502_security_descriptor := nil;
  shi502_permissions := ACCESS_ALL;
  end;
  try
  Result := NTNetShareAdd(_ServerName, 502, @ShInfo, parm_err);
  finally // 别忘了释放内存
  FreeMem(_ServerName,255);
  FreeMem(_FilePath,255);
  FreeMem(_NetName,255);
  FreeMem(_Remark,255);
  end;
  finally
  FreeLibrary(Libhandle);
  end;
  end;
  function DeleteShareResource(ServerName: string; NetName: string): Integer;
  var
  _ServerName : Pchar ;
  LibHandle : THandle;
  begin
  LibHandle := LoadLibrary(NTlib);
  if LibHandle = 0 then
  raise Exception.Create(\’Unable to map library: \’ + NTlib);
  try
  @NTNetShareDel := GetProcAddress(Libhandle, \’NetShareDel\’);
  GetMem(_ServerName,255) ; //分配内存
  strpcopy(_ServerName,ServerName);
  try
  Result := NTNetShareDel(_ServerName, NetName,0);
  finally
  FreeMem(_ServerName,255);
  end;
  finally
  FreeLibrary(Libhandle);
  end;
  end;

 function AddShareResource (ServerName : PChar; FilePath : PChar;
  NetName : PChar; Remark : PChar ) : Integer;
  var
  MyShare : Share_Info50;
  PMyShare : ^Share_Info50;
  LibHandle : THandle;
  begin
  LibHandle := LoadLibrary(NTlib);
  if LibHandle = 0 then
  raise Exception.Create(\’Unable to map library: \’ + MElib);
  try
  @MENetShareAdd := GetProcAddress(Libhandle, \’NetShareDel\’);
  strLcopy(MyShare.shi50_netname,NetName,13);
  MyShare.shi50_type := 0;
  MyShare.shi50_flags := 0;
  MyShare.shi50_remark := Remark;
  MyShare.shi50_path := FilePath;
  {MyShare.shi50_rw_password := nil ;
  MyShare.shi50_ro_password :=nil ;}
  PMyShare := @MyShare;
  Result := MENetShareAdd(ServerName,50,PMyShare,SizeOf(MyShare));
  finally
  FreeLibrary(Libhandle);
  end;
  end;
  function DelShareResource(ServerName: string; NetName: string): Integer;
  var
  _ServerName : Pchar ;
  LibHandle : THandle;
  begin
  LibHandle := LoadLibrary(NTlib);
  if LibHandle = 0 then
  raise Exception.Create(\’Unable to map library: \’ + MElib);
  try
  @NTNetShareDel := GetProcAddress(Libhandle, \’NetShareDel\’);
  GetMem(_ServerName,255) ; //分配内存
  strpcopy(_ServerName,ServerName);
  try
  Result := NTNetShareDel(_ServerName, NetName,0);
  finally
  FreeMem(_ServerName,255);
  end;
  finally
  FreeLibrary(Libhandle);
  end;
  end;

 

 

上一页  [1] [2] 

触屏版 电脑版
3773考试网 琼ICP备12003406号-1