WinCE5.0下设置FTP(二)

本文介绍了一种通过编程方式添加FTP用户并分配权限的方法。主要步骤包括:添加系统用户、将其加入FTP用户列表以及通过注册表设置用户的FTP默认目录和权限。

本文通过编程实现添加FTP用户以及为用户分配权限.具体过程是:添加系统用户,并将此用户加到FTP用户列表中,为此用户分配FTP权限.

通过前面的文章,我们知道了如何添加系统用户,及如何将此用户加到FTP用户列表中.设置用户FTP权限的方法是在注册表系统用户的子键下新建一个叫做FTPD的子键,为其添加两个变量,其中一个字符串类型变量名字叫Home,它的值就是此用户的FTP默认目录,例如:"/hard disk/FtpRoot", 另一个DWORD类型的变量名字叫Permissions,从名字可以知道是设置用户权限的地方.

首先介绍一个在本文中使用的操作注册表的类:CReg V1.1.0,

部分代码如下:

 

BOOL CFtpToolsDlg::OnBtnAdd() 
{
    CAddUserDlg dlg(
this );

    
if (IDOK  ==  dlg.DoModal())
    {
        
if (NULL  !=  m_listUser.Find(dlg.m_strName))
        {
            AfxMessageBox(L
" User already in list " );
            
return  TRUE;
        }

        pSetUser(dlg.m_strName, dlg.m_strPwd);
        m_listUser.AddTail(dlg.m_strName);
        m_ctlListUser.InsertItem(m_dwUserCount, dlg.m_strName);
        m_dwUserCount
++ ;
        UpdateData(FALSE);

        CReg reg(HKEY_LOCAL_MACHINE, TEXT(
" Comm/FTPD " ));
        TCHAR byBuf[
256 =  { 0 };
        DWORD dwLen 
=   255 ;
        reg.GetValueSZ(TEXT(
" UserList " ), byBuf,  255 );
        wcscat(byBuf, L
" ; " );
        wcscat(byBuf, LPCTSTR(dlg.m_strName));
        reg.SetMultiSZ(TEXT(
" UserList " ), byBuf,  sizeof (TCHAR)  *  wcslen(byBuf));

        reg.Reset();
        
        CString strTmp 
=  L " Comm/Security/UserAccounts/ " ;
        strTmp 
+=  dlg.m_strName;
        strTmp 
+=   " /FTPD " ;
        reg.Create(HKEY_LOCAL_MACHINE, LPCTSTR(strTmp));
        reg.SetDW(TEXT(
" Permissions " ),  3 );
        reg.SetSZ(TEXT(
" Home " ), LPCTSTR(strRegFtp));
    }

    
return  TRUE;    
}

void  CFtpToolsDlg::OnBtnDelete() 
{
    POSITION pos 
=  m_ctlListUser.GetFirstSelectedItemPosition();
    
if (NULL  ==  pos)
    {
        
return ;
    }
    
int  nPos  =  m_ctlListUser.GetNextSelectedItem(pos);
    CString strName 
=  m_ctlListUser.GetItemText(nPos,  0 );
    m_ctlListUser.DeleteItem(nPos);
    pos 
=  m_listUser.Find(strName);
    m_listUser.RemoveAt(pos);
    pDelUser(strName);

    CReg reg(HKEY_LOCAL_MACHINE, TEXT(
" Comm/FTPD " ));
    TCHAR byBuf[
256 =  { 0 };
    DWORD dwLen 
=   255 ;
    reg.GetValueSZ(TEXT(
" UserList " ), byBuf,  255 );
    strName 
=  L " ; "   +  strName;
    CString strTmp 
=  byBuf;
    nPos 
=  strTmp.Find(strName);
    
if  ( - 1   ==  nPos)
    {
        
return ;
    }
    
    strTmp 
=  strTmp.Left(nPos)  +  strTmp.Right(strTmp.GetLength()  -  nPos  -  strName.GetLength());
    reg.SetSZ(TEXT(
" UserList " ), LPCTSTR(strTmp),  sizeof (TCHAR)  *  wcslen(byBuf)); 
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值