⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cproppagentauth.cpp

📁 ftpserver very good sample
💻 CPP
字号:
#include "StdAfx.h"#include "WarServerSnapin.h"#include "WarSvrSnapin.h"#include "PropPageNtAuth.h"CPropPageNtAuth::CPropPageNtAuth(WarWin32Registry& regKey,                                  long lNotifyHandle,                                  bool bDeleteHandle,                                  TCHAR* pTitle)                                  : CSnapInPropertyPageImpl<CPropPageNtAuth> (pTitle),m_lNotifyHandle(lNotifyHandle),m_bDeleteHandle(bDeleteHandle), // Should be true for only page.mRegKey(regKey){}CPropPageNtAuth::~CPropPageNtAuth(){    if (m_bDeleteHandle)        MMCFreeNotifyHandle(m_lNotifyHandle);}HRESULT CPropPageNtAuth::PropertyChangeNotify(long param){    return MMCPropertyChangeNotify(m_lNotifyHandle, param);}LRESULT CPropPageNtAuth::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled){    war_regstr_t value;        value = mRegKey.GetStrValue(WAR_WINNT_AUTH_SERVER, _T(""));    if (value.empty())        ::SendMessage(GetDlgItem(IDC_USE_LOCAL_MACHINE), BM_SETCHECK, BST_CHECKED, 0);    else        SetDlgItemText(IDC_SERVER, value.c_str());        value = mRegKey.GetStrValue(WAR_WINNT_AUTH_FTP_GROUP, _T(""));    if (!value.empty())        SetDlgItemText(IDC_FTP_GROUP, value.c_str());        value = mRegKey.GetStrValue(WAR_WINNT_AUTH_ANON_USER, _T(""));    if (!value.empty())        SetDlgItemText(IDC_ANON_NT_USER, value.c_str());        value = mRegKey.GetStrValue(WAR_WINNT_AUTH_ANON_PASSWD, _T(""));    if (!value.empty())        SetDlgItemText(IDC_PASSWD, value.c_str());        if (mRegKey.GetIntValue(WAR_WINNT_AUTH_ALLOW_ANON, false))        ::SendMessage(GetDlgItem(IDC_ALLOW_ANONYMOUS), BM_SETCHECK, BST_CHECKED, 0);        UpdateEnabledFileds();    return TRUE;}void CPropPageNtAuth::UpdateEnabledFileds(){    // Auth server     bool use_local = ::SendMessage(        GetDlgItem(IDC_USE_LOCAL_MACHINE),        BM_GETCHECK, 0, 0) == BST_CHECKED;    ::EnableWindow(GetDlgItem(IDC_SERVER), !use_local);        bool allow_anum = ::SendMessage(        GetDlgItem(IDC_ALLOW_ANONYMOUS),        BM_GETCHECK, 0, 0) == BST_CHECKED;    ::EnableWindow(GetDlgItem(IDC_ANON_NT_USER), allow_anum);}BOOL CPropPageNtAuth::OnApply(){    // Write the changes back to the registry    TCHAR buffer[1024];        // Server name    *buffer = 0;    bool use_local = ::SendMessage(        GetDlgItem(IDC_USE_LOCAL_MACHINE),        BM_GETCHECK, 0, 0) == BST_CHECKED;    if (!use_local)        ::GetWindowText(GetDlgItem(IDC_SERVER), buffer, sizeof(buffer) / sizeof(TCHAR));    mRegKey.SetValue(WAR_WINNT_AUTH_SERVER, war_regstr_t(buffer));        // FTP group    *buffer = 0;    ::GetWindowText(GetDlgItem(IDC_FTP_GROUP), buffer, sizeof(buffer) / sizeof(TCHAR));    mRegKey.SetValue(WAR_WINNT_AUTH_FTP_GROUP, war_regstr_t(buffer));        // Allow anon    bool allow_anum = ::SendMessage(        GetDlgItem(IDC_ALLOW_ANONYMOUS),        BM_GETCHECK, 0, 0) == BST_CHECKED;    mRegKey.SetValue(WAR_WINNT_AUTH_ALLOW_ANON, allow_anum);        // Anon NT user    *buffer = 0;    ::GetWindowText(GetDlgItem(IDC_ANON_NT_USER), buffer, sizeof(buffer) / sizeof(TCHAR));    mRegKey.SetValue(WAR_WINNT_AUTH_ANON_USER, war_regstr_t(buffer));        // Anon NT user's password    *buffer = 0;    ::GetWindowText(GetDlgItem(IDC_PASSWD), buffer, sizeof(buffer) / sizeof(TCHAR));    mRegKey.SetValue(WAR_WINNT_AUTH_ANON_PASSWD, war_regstr_t(buffer));        //PropertyChangeNotify(0);     return TRUE;}LRESULT CPropPageNtAuth::OnClickedUse_local_machine(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    UpdateEnabledFileds();    return 0;}LRESULT CPropPageNtAuth::OnClickedAllow_anonymous(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    UpdateEnabledFileds();    return 0;}LRESULT CPropPageNtAuth::OnDropdownFtp_group(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    ::SendMessage(hWndCtl, CB_RESETCONTENT, 0, 0);    HWND hwnd_dropdown = GetDlgItem(IDC_FTP_GROUP);        bool use_local = ::SendMessage(        GetDlgItem(IDC_USE_LOCAL_MACHINE),        BM_GETCHECK, 0, 0) == BST_CHECKED;        // Enumerate the local groups on the selected server    TCHAR svr_name_buf[MAX_PATH];    WarCollector<wchar_t> net_sever;    if (!use_local)    {        if (::GetWindowText(GetDlgItem(IDC_SERVER),svr_name_buf,             sizeof(svr_name_buf) / sizeof(TCHAR)) < 1)        {            AfxMessageBox(_T("No server name was specified"));            return 0;        }                net_sever = svr_name_buf;    }        do    {        LPBYTE return_buf = NULL;        DWORD entries_read = 0;        DWORD total_entries = 0;        DWORD_PTR resume_handle = NULL;                NET_API_STATUS status = NetLocalGroupEnum(            use_local ? NULL : net_sever.GetValue().c_str(),            0,            &return_buf,            MAX_PREFERRED_LENGTH,            &entries_read,            &total_entries,            &resume_handle);                PLOCALGROUP_INFO_0 p = (PLOCALGROUP_INFO_0)return_buf;        for(DWORD index = 0; index < entries_read; index++)        {            WarCollector<TCHAR> name = p->lgrpi0_name;            ::SendMessage(hwnd_dropdown, CB_ADDSTRING, 0,                 (LPARAM)(name.GetValue().c_str()));            p++;        }                if (return_buf)            NetApiBufferFree(return_buf);                switch(status)        {        case NERR_InvalidComputer:            AfxMessageBox(_T("Invalid computer"));            return 0;        case ERROR_MORE_DATA:            break;        case ERROR_ACCESS_DENIED:            AfxMessageBox(_T("Access denied to NT group information"));            return 0;        case NERR_Success:            return 0;        default:            AfxMessageBox(_T("Failed to fetch group information"));            return 0;        }    } while(false);        return 0;}LRESULT CPropPageNtAuth::OnClickedReset(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    ::SendMessage(GetDlgItem(IDC_USE_LOCAL_MACHINE),         BM_SETCHECK, BST_CHECKED, 0);        ::SendMessage(GetDlgItem(IDC_ALLOW_ANONYMOUS),         BM_SETCHECK, BST_UNCHECKED, 0);        ::SetWindowText(GetDlgItem(IDC_FTP_GROUP), _T("FTP-Users"));    ::SetWindowText(GetDlgItem(IDC_ANON_NT_USER), _T("FTP-Guest"));        UpdateEnabledFileds();        return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -