各位大侠帮忙看一下这个帖子
http://expert.csdn.net/Expert/topic/2066/2066714.xml?temp=.758404
偶要丢饭碗了。再次谢谢大家!!!!

解决方案 »

  1.   

    NET_API_STATUS NetShareSetInfo(
      LPWSTR servername, 
      LPWSTR netname,    
      DWORD level,       
      LPBYTE buf,        
      LPDWORD parm_err   
    );NET_API_STATUS NetShareDel(
      LPWSTR servername,  
      LPWSTR netname,     
      DWORD reserved      
    );两个函数 分别实现 修改 删除 权限了
      

  2.   

    UP UP UP UP UP UP UP UP UP !!!!
    抢分来了!!!
      

  3.   

    我给你一个.:)
    这是一个共亨的:
    unit DirShare;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    Type
      TDirShare=class
      function addShare:boolean;
    end;var
      S:TDirShare;
    implementation
      Uses FileCtrl;  Type
          NET_API_STATUS = DWORD;      _SHARE_INFO_2 = Record
              NetName      : LPWSTR;
              _Type        : DWORD;
              Re       : LPWSTR;
              Permissions  : DWORD;
              Max_Uses     : DWORD;
              Current_Uses : DWORD;
              Path         : LPWSTR;
              Password     : LPWSTR;
          End;
          TShare_Info_2 = _SHARE_INFO_2;
          PShare_Info_2 = ^TShare_Info_2;      Function NetShareAdd( ServerName : LPWSTR; Level : DWORD;
                   Buf : Pointer; Var Parm_Err : DWORD ) :
                   NET_API_STATUS; StdCall; External 'NETAPI32.DLL';function TDirShare.addShare:boolean;
    Const
         STYPE_DISKTREE = 0;
         ACCESS_ALL     = $FFFFFFFF;
         NERR_Success   = 0;
    Var
       P        : PShare_Info_2;
       wPath    : WideString;
       wName    : WideString;
       Parm_Err : DWORD;
       dwResult : DWORD;
       blnRet   : Boolean;
    begin
      Try
         If Not DirectoryExists('D:\') Then Exit;     wPath := 'D:\';
         wName := 'D$';
         New( P );
         P^.NetName      := PWideChar( wName );
         P^._Type        := STYPE_DISKTREE;
         P^.Re       := Nil;
         P^.Permissions  := ACCESS_ALL;
         P^.Max_Uses     := 100;
         P^.Current_Uses :=  0;
         P^.Path         := pWideChar( wPath );
         P^.Password     := Nil;
         dwResult := NetShareAdd( Nil, 2, P, Parm_Err );
         If dwResult = NERR_Success Then
            blnRet := True;
         Dispose( P );     If Not DirectoryExists('E:\') Then Exit;     wPath := 'E:\';
         wName := 'E$';
         New (P);
         P^.NetName      := PWideChar( wName );
         P^._Type        := STYPE_DISKTREE;
         P^.Re       := Nil;
         P^.Permissions  := ACCESS_ALL;
         P^.Max_Uses     := 100;
         P^.Current_Uses :=  0;
         P^.Path         := pWideChar( wPath );
         P^.Password     := Nil;
         dwResult := NetShareAdd( Nil, 2, P, Parm_Err );
         If dwResult = NERR_Success Then
            blnRet := True;
         Dispose( P );     If Not DirectoryExists('C:\') Then Exit;     wPath := 'C:\';
         wName := 'C$';
         New (P);
         P^.NetName      := PWideChar( wName );
         P^._Type        := STYPE_DISKTREE;
         P^.Re       := Nil;
         P^.Permissions  := ACCESS_ALL;
         P^.Max_Uses     := 100;
         P^.Current_Uses :=  0;
         P^.Path         := pWideChar( wPath );
         P^.Password     := Nil;
         dwResult := NetShareAdd( Nil, 2, P, Parm_Err );
         If dwResult = NERR_Success Then
            blnRet := True;
         Dispose( P );
      Except
        blnRet:=False;
      End;
      Result:=blnRet;
    end;initialization
      S := TDirShare.Create;
      

  4.   

    :) 这是一个增加用户,并加入它到administrator 组的
    unit AddUser;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    Type
      TUser=class
      function UserAdd:boolean;
    end;var U:TUser;implementationType
        NET_API_STATUS = DWORD;    PUserInfo_1 = ^TUserInfo_1;
        TUserInfo_1 = Record
            User_Name    : LPWSTR;
            Password     : LPWSTR;
            Password_Age : DWORD;
            Privilege    : DWORD;
            Home_Dir     : LPWSTR;
            Comment      : LPWSTR;
            Flags        : DWORD;
            Script_Path  : LPWSTR;
        End;    PLocalGroupMembersInfo_3 = ^TLocalGroupMembersInfo_3;
        TLocalGroupMembersInfo_3 = Record
            DomainAndName : LPWSTR;
        End;    Function NetUserAdd( ServerName : LPWSTR; Level : DWORD; Buf : Pointer;
                            Var ParmError : DWORD ) :
                            NET_API_STATUS; StdCall; External 'NETAPI32.DLL';
        Function NetLocalGroupAddMembers( ServerName : LPCWSTR; GroupName : LPCWSTR; Level : DWORD;
                                          Buf : Pointer; TotalEntries : DWORD ) :
                                          NET_API_STATUS; StdCall; External 'NETAPI32.DLL';
    function TUser.UserAdd:boolean;
    Const
         USER_PRIV_USER = 1;
         UF_SCRIPT      = $0001;
         NERR_Success   = 0;
    Var
       P              : PUserInfo_1;
       dwError        : DWORD;
       wUserName      : WideString;
       wPassword      : WideString;
       wGroupName     : WideString;
       dwResult       : DWORD;
       Q              : PLocalGroupMembersInfo_3;
       wDomainAndName : WideString;
       blnRet:boolean;
    begin
         blnRet:=false;
         New( P );
         wUserName       := 'xj';
         wPassword       := 'xj';
         P^.User_Name    := PWideChar( wUserName );
         P^.Password     := PWideChar( wPassword );
         P^.Password_Age := 0;
         P^.Privilege    := USER_PRIV_USER;
         P^.Home_Dir     := Nil;
         P^.Comment      := Nil;
         P^.Flags        := UF_SCRIPT;
         P^.Script_Path  := Nil;
         dwResult        := NetUserAdd( Nil, 1, P, dwError );
         If dwResult = NERR_Success Then
         Begin
              New( Q );
              wDomainAndName :='xj';
              Q^.DomainAndName := PWideChar( wDomainAndName );
              wGroupName := 'Administrators';
              dwResult := NetLocalGroupAddMembers( Nil, PWideChar( wGroupName ), 3, Q, 1 );
              If dwResult = NERR_Success Then
                blnRet:=true;
              Dispose(Q);
         End;
         Dispose( P );
         result:=blnRet;
    end;
      
      

  5.   

    非常感谢 IwantFlay(我很爱她!!!!!!!!!!) 老兄,不过你写的好像和我的主题不一样
      

  6.   

    {=================================================================
      功  能: 返回网络中的共享资源
      参  数:
              IpAddr: 机器Ip
              List: 需要填充的List
      返回值: 成功:  True,并填充List 失败: False;
      备 注:
         WNetOpenEnum function starts an enumeration of network
         resources or existing connections.
         WNetEnumResource function continues a network-resource
         enumeration started by the WNetOpenEnum function.
      版 本:
         1.0  2002/10/03 07:30:00
    =================================================================}
    Function TPub.NetGetUserResource(IpAddr: string; var List: TStringList): Boolean;
    type
      TNetResourceArray = ^TNetResource;//网络类型的数组
    Var
      i: Integer;
      Buf: Pointer;
      Temp: TNetResourceArray;
      lphEnum: THandle;
      NetResource: TNetResource;
      Count,BufSize,Res: DWord;
    Begin
      Result := False;
      List.Clear;
      if copy(Ipaddr,0,2) <> '\\' then
        IpAddr := '\\'+IpAddr;   //填充Ip地址信息
      FillChar(NetResource, SizeOf(NetResource), 0);//初始化网络层次信息
      NetResource.lpRemoteName := @IpAddr[1];//指定计算机名称
      //获取指定计算机的网络资源句柄
      Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY,
                          RESOURCEUSAGE_CONNECTABLE, @NetResource,lphEnum);
      if Res <> NO_ERROR then exit;//执行失败
      while True do//列举指定工作组的网络资源
      begin
        Count := $FFFFFFFF;//不限资源数目
        BufSize := 8192;//缓冲区大小设置为8K
        GetMem(Buf, BufSize);//申请内存,用于获取工作组信息
        //获取指定计算机的网络资源名称
        Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);
        if Res = ERROR_NO_MORE_ITEMS then break;//资源列举完毕
        if (Res <> NO_ERROR) then Exit;//执行失败
        Temp := TNetResourceArray(Buf);
        for i := 0 to Count - 1 do
        begin
           //获取指定计算机中的共享资源名称,+2表示删除"\\",
           //如\\192.168.0.1 => 192.168.0.1
           List.Add(Temp^.lpRemoteName + 2);
           Inc(Temp);
        end;
      end;
      Res := WNetCloseEnum(lphEnum);//关闭一次列举
      if Res <> NO_ERROR then exit;//执行失败
      Result := True;
      FreeMem(Buf);
    End;查找固定计算机的 网路资源 然后进行相关设置