有相应API函数,NetShareAdd()和NetShareDel(),你自己看看帮助,应该能看得懂的
要不改注册表也行
    

解决方案 »

  1.   

    拷贝的~~呵呵~~你看看~~:)
    网络共享目录的设定
    --------------------------------------------------------------------------------(【问题】 在局域网环境中共享目录或者共享打印机等是常见的操作,许多日常工作都是依赖于此的。如果能通过程序完成以往人工繁琐的操作,无疑会方便用户的使用。 【原理】 
    在Windows95/97/98中有一个svrapi.dll动态库,基本上所有的设定网络资源共享的函数都存在于此,我们只要调用这里的函数就能完成我们希望的功能。但是要注意的是这个动态库仅仅在Windows95/97/98中有效,在NT下为了保证其安全性,是通过更复杂的函数调用完成这些操作的,所以这里的方法不适于NT环境。 【步骤】 
    我们将用到的几个函数封装起来以方便使用,此外根据svrapi.h,补充了一些常量申明,使得调用更加直观。 unit Sharing; { Sharing 98 v2.0 freeware} 
    interface 
    uses Sysutils ,ShareErr {其中包含一些意外错误的代码和其他的小功能}; 
    Type 
    Share_Info50 = Packed Record 
    shi50_netname : Array[0..12] of Char; {13} 
    shi50_type : Byte; 
    shi50_flags : Word; 
    shi50_re : PChar; 
    shi50_path : PChar; 
    shi50_rw_password : Array[0..8] of Char; {9} 
    shi50_ro_password : Array[0..8] of Char; 
    End; 
    Const 
    NERR_Success = 0; { Success – 没有发生错误 } 
    NERR_BASE = 2100; {资源类型常量} 
    STYPE_DISKTREE = 0; {共享目录} 
    STYPE_PRINTQ = 1; {共享打印机} {属性标记常量} 
    SHI50F_RDONLY = 1; { 只读共享} 
    SHI50F_FULL = 2; { 开放所有权限的共享} 
    SHI50F_DEPENDSON = (SHI50F_RDONLY or SHI50F_FULL); {根据用户口令访问} {下面两者的关系是OR, 例如: flags := (SHI50F_RDONLY OR SHI50F_SYSTEM 
    ) } 
    SHI50F_PERSIST = 256; {系统启动时建立} 
    SHI50F_SYSTEM = 512; {共享不可见} 
    ShareResource: 在指定机器上共享指定资源. 
    参数: 
    ServerName= 需要共享资源的机器的名字,如果是 Nil 则表示本机 
    FilePath = 需要共享的资源的目录. (字母都应大写); 
    NetName = 共享资源的网络名称(别名),最长12个字母 
    Re = 备注,可以为空 
    ShareType = 资源类别,参见常量设定. 
    Flags = 共享标记,参见常量设定. 
    RWPass = 读/写权限的口令,可以为空 
    ROPass = 只读权限的口令,可以为空 例如: ShareResource(Nil, 'C:\TEMP', 'TESTING', 'My Comment', STYPE_DIS 
    KTREE, SHI50F_RDONLY, '','MYPASS'); 
    这里需要将本机的 C:\TEMP共享为'TESTING',备注是 'My Comment'。 
    访问权限是只读(Read Only), 只读权限口令是 'MYPASS'. 没有全权访问口令 function ShareResource(ServerName : PChar; FilePath : PChar; 
    NetName : PChar; Re : PChar; 
    ShareType : Byte; Flags : Word; 
    RWPass : PChar; ROPass : PChar ) : Integer; 
    { DeleteShare: 在指定机器上删除指定的已经共享的资源. 
    参数: 
    ServerName=需要共享资源的机器的名字,如果是 Nil 则表示本机. 
    NetName =共享资源的网络名称(别名),最长12个字母 例如: DeleteShare(Nil, 'TESTING'); 
    这个操作将本机上的名为'TESTING'的共享资源取消共享 
    function DeleteShare(ServerName : PChar; NetName : PChar) : Integer; { GetShareInfo: 取得指定机器上指定的共享资源的信息 
    参数: 
    ServerName =共享资源存在的机器的名字,如果是 Nil 则表示本机; 
    NetName =共享资源的网络名称(别名),最长12个字母; 
    ShareStruct = Share_Info50.共享资源的信息将添入到此结构中去; 例如: 
    var MyShareStruct : Share_Info50; 
    GetShareInfo(Nil, 'TESTING', MyShareStruct); 这个操作将本机上的名为'TESTING'的共享资源的信息填入 MyShareStruct结 
    构中去} 
    function GetShareInfo(ServerName : PChar; NetName : PChar; Var ShareSt 
    ruct : Share_Info50) : Integer; { SetShareInfo: 设置指定机器上指定的共享资源的信息. 
    参数: 
    ServerName =共享资源存在的机器的名字,如果是 Nil 则表示本机; 
    NetName =共享资源的网络名称(别名),最长12个字母; 
    ShareStruct =需要设置的共享资源信息; 例如: SetShareInfo(Nil, 'TESTING', MyShareStruct); 
    此操作将MyShareStruct描述的共享信息写入到共享资源'TESTING'中} 
    function SetShareInfo(ServerName : PChar; NetName : PChar; ShareStruct 
    : Share_Info50) : Integer; {以下部分来自 SVRAPI.h 希望了解详细情况的读者请参考win32.hlp} 
    function NetShareAdd(ServerName : PChar; ShareLevel : SmallInt; Buffer 
    : Pointer; Size : Word) : Integer; StdCall; 
    function NetShareDel(ServerName : PChar; NetName : PChar; Reserved : W 
    ord) : Integer; StdCall; 
    function NetShareGetInfo(ServerName : PChar; NetName : PChar; ShareLev 
    el : SmallInt; Buffer : Pointer; Size : Word; Var Used : Word) : Integ 
    er; StdCall; 
    function NetShareSetInfo(ServerName : PChar; NetName : PChar; ShareLev 
    el : SmallInt; Buffer : Pointer; Size : Word; Reserved : SmallInt) : I 
    nteger; StdCall; implementation function ShareResource(ServerName : PChar; FilePath : PChar; 
    NetName : PChar; Re : PChar; 
    ShareType : Byte; Flags : Word; 
    RWPass : PChar; ROPass : PChar ) : Integer; 
    var MyShare : Share_Info50; 
    PMyShare : ^Share_Info50; 
    begin 
    strLcopy(MyShare.shi50_netname,NetName,13); 
    MyShare.shi50_type := ShareType; 
    MyShare.shi50_flags := Flags; 
    MyShare.shi50_re := Re; 
    MyShare.shi50_path := FilePath; 
    strLcopy(MyShare.shi50_rw_password,RWPass,9); 
    strLcopy(MyShare.shi50_ro_password,ROPass,9); 
    PMyShare := @MyShare; 
    Result := NetShareAdd(ServerName,50,PMyShare,SizeOf(MyShare)); 
    end; function DeleteShare(ServerName : PChar; NetName : PChar) : Integer; 
    begin 
    Result := NetShareDel(ServerName,NetName,0); 
    end; function GetShareInfo(ServerName : PChar; NetName : PChar; Var ShareSt 
    ruct : Share_Info50) : Integer; 
    var PMyShare : ^Share_Info50; 
    AmountUsed : Word; 
    Error : Integer; 
    begin 
    PMyShare := AllocMem(255); 
    Error := NetShareGetInfo(ServerName,NetName,50,PMyShare,255,AmountUs 
    ed); 
    If Error = 0 Then 
    Begin 
    ShareStruct.shi50_netname := PMyShare.shi50_netname; 
    ShareStruct.shi50_type := PMyShare.shi50_type; 
    ShareStruct.shi50_flags := PMyShare.shi50_flags; 
    ShareStruct.shi50_re := PMyShare.shi50_re; 
    ShareStruct.shi50_path := PMyShare.shi50_path; 
    ShareStruct.shi50_rw_password := PMyShare.shi50_rw_password; 
    ShareStruct.shi50_ro_password := PMyShare.shi50_ro_password; 
    End; 
    FreeMem(PMyShare); 
    Result := Error; 
    end; function SetShareInfo(ServerName : PChar; NetName : PChar; ShareStruct 
    : Share_Info50) : Integer; 
    var PMyShare : ^Share_Info50; 
    begin 
    PMyShare := @ShareStruct; 
    Result := NetShareSetInfo(ServerName,NetName,50,PMyShare,SizeOf(Shar 
    eStruct),0); 
    end; function NetShareAdd; external 'SVRAPI.DLL'; 
    function NetShareDel; external 'SVRAPI.DLL'; 
    function NetShareGetInfo; external 'SVRAPI.DLL'; 
    function NetShareSetInfo; external 'SVRAPI.DLL'; end.