📄 dlgchangepwd.cpp
字号:
// DlgChangePwd.cpp : implementation file
//
#include "stdafx.h"
#include "Logs.h"
#include "DlgChangePwd.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgChangePwd dialog
CDlgChangePwd::CDlgChangePwd(CWnd* pParent /*=NULL*/)
: CDialog(CDlgChangePwd::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgChangePwd)
m_csOldPassword = _T("");
m_csNewPassword1 = _T("");
m_csNewPassword2 = _T("");
m_csNewPassphrase = _T("");
//}}AFX_DATA_INIT
}
void CDlgChangePwd::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgChangePwd)
DDX_Control(pDX, EDT_OLDPASSWORD, m_EditCtrlOP);
DDX_Control(pDX, EDT_NEWPASSWORD1, m_EditCtrlNP1);
DDX_Control(pDX, EDT_NEWPASSWORD2, m_EditCtrlNP2);
DDX_Control(pDX, EDT_NEWPASSPHRASE, m_EditCtrlNPP);
DDX_Text(pDX, EDT_OLDPASSWORD, m_csOldPassword);
DDX_Text(pDX, EDT_NEWPASSWORD1, m_csNewPassword1);
DDX_Text(pDX, EDT_NEWPASSWORD2, m_csNewPassword2);
DDX_Text(pDX, EDT_NEWPASSPHRASE, m_csNewPassphrase);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgChangePwd, CDialog)
//{{AFX_MSG_MAP(CDlgChangePwd)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgChangePwd message handlers
void CDlgChangePwd::OnOK()
{
CLogsApp* pcLogger = (CLogsApp*) AfxGetApp();
CString csMsg = _T("");
CString csPWDMsg = _T("");
CString csPPMsg = _T("");
BOOL bRet = FALSE;
BOOL bPPRet = FALSE;
UpdateData();
if ((!m_csNewPassword1.IsEmpty()) && (!m_csNewPassword2.IsEmpty())) {
if (m_csNewPassword1 == m_csNewPassword2) {
bRet = DoPasswordChange(csPWDMsg);
CString csLogMsg = _T("");
if (!m_csNewPassphrase.IsEmpty()) {
bPPRet = DoPassphraseChange(csPPMsg);
if ((bRet) && (bPPRet)) {
csMsg = _T("The Password & Passphrase were changed successfully!");
pcLogger->clLogs.WriteLog(csMsg, 1);
csLogMsg.Format("New Admin Password: %s", m_csNewPassword1);
pcLogger->clLogs.WriteLog(csLogMsg, 8);
csLogMsg.Format("New Pass Phrase: %s", m_csNewPassphrase);
pcLogger->clLogs.WriteLog(csLogMsg, 8);
EndDialog (1);
}
else if ((!bRet) && (bPPRet)) {
pcLogger->clLogs.WriteLog(csPPMsg, 1);
csLogMsg.Format("New Pass Phrase: %s", m_csNewPassphrase);
pcLogger->clLogs.WriteLog(csLogMsg, 8);
csMsg = csPWDMsg + "\n";
csMsg += csPPMsg;
}
else if ((bRet) && (!bPPRet)) {
pcLogger->clLogs.WriteLog(csPWDMsg, 1);
csLogMsg.Format("New Admin Password: %s", m_csNewPassword1);
pcLogger->clLogs.WriteLog(csLogMsg, 8);
csMsg = csPWDMsg + "\n";
csMsg += csPPMsg;
}
else {
csMsg = _T("Both 'Password & Passphrase' don't match!");
}
MessageBox(csMsg);
}
else {
if (bRet) {
pcLogger->clLogs.WriteLog(csPWDMsg, 1);
csLogMsg.Format("New Admin Password: %s", m_csNewPassword1);
pcLogger->clLogs.WriteLog(csLogMsg, 8);
MessageBox(csPWDMsg);
EndDialog (1);
}
else {
MessageBox(csPWDMsg);
}
}
}
else {
MessageBox("The New Passwords don't match!");
}
}
else if (!m_csNewPassphrase.IsEmpty()) {
bPPRet = DoPassphraseChange(csPPMsg);
MessageBox(csPPMsg);
}
else if (m_csOldPassword.IsEmpty()) {
MessageBox("The Old Password can NOT be empty!");
}
}
void CDlgChangePwd::OnCancel()
{
EndDialog (0);
}
void CDlgChangePwd::OnPaint()
{
CPaintDC dc(this); // device context for painting
m_EditCtrlOP.SetFocus() ;
// Do not call CDialog::OnPaint() for painting messages
}
BOOL CDlgChangePwd::DoPasswordChange(CString& csMsg)
{
CLogsApp* pcLogger = (CLogsApp*) AfxGetApp();
BOOL bRet = FALSE;
CRegistry Reg;
Reg.SetRootKey(HKEY_LOCAL_MACHINE);
if (Reg.SetKey("Software\\LogDemo\\Settings", TRUE)) {
CString csAdminPwd = Reg.ReadString("AdminPassword", _T(""));
CString csPwd = pcLogger->clLogs.DecryptString(csAdminPwd, pcLogger->clLogs.m_csAppsPPhrase);
if (csPwd == m_csOldPassword) {
csAdminPwd = pcLogger->clLogs.EncryptString(m_csNewPassword1, pcLogger->clLogs.m_csAppsPPhrase);
Reg.WriteString( "AdminPassword", csAdminPwd);
csMsg = _T("The Password was changed successfully!");
bRet = TRUE;
}
else {
csMsg = _T("The Current Password and the one in the Registry MUST match!");
}
}
else {
csMsg = _T("Problem Setting the registry key [HKLM\\Software\\MyAppName\\Settings]!");
}
return bRet;
}
BOOL CDlgChangePwd::DoPassphraseChange(CString& csMsg)
{
CLogsApp* pcLogger = (CLogsApp*) AfxGetApp();
BOOL bRet = FALSE;
CString csNewPassPhrase = pcLogger->clLogs.EncryptString(m_csNewPassphrase, pcLogger->clLogs.m_csAppsPPhrase);
CRegistry Reg;
Reg.SetRootKey(HKEY_LOCAL_MACHINE);
if (Reg.SetKey("Software\\LogDemo\\Settings", TRUE)) {
bRet = Reg.WriteString( "UserPassPhrase", csNewPassPhrase);
if (bRet)
csMsg = _T("The Pass Phrase was changed successfully!");
else
csMsg = _T("Was unable to changed the Pass Phrase!");
}
return bRet;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -