- 2012-12-29
- Visual C++
「管理者がどこからでも、パスワード変更できるツール作れっ!!」
って言われて作った。
ある程度、動くと思うけどねぇ。
こんな感じ。
金くれっかなぁ~?
パスワード変更する、ソース。
エディットなどのメンバーは適宜変更してちょ。
ちなみに、「NetUserChangePassword」は、
ヘルプをよく読むこと。バグの責任は取りません。自己責任で。。
void CPasswordChgDlg::OnBnClickedButton1() { NET_API_STATUS status = NERR_Success; CHAR szSerName [ _MAX_PATH ] = { NULL }; CHAR szNewPws [ _MAX_PATH ] = { NULL }; CHAR szPws [ _MAX_PATH ] = { NULL }; CHAR szUser [ _MAX_PATH ] = { NULL }; WCHAR wszSerName[ _MAX_PATH ] = { NULL }; WCHAR wszNewPws [ _MAX_PATH ] = { NULL }; WCHAR wszPws [ _MAX_PATH ] = { NULL }; WCHAR wszUser [ _MAX_PATH ] = { NULL }; m_edtSerName.GetWindowTextA( ( LPTSTR )szSerName, _MAX_PATH ); m_edtNewPws.GetWindowTextA ( ( LPTSTR )szNewPws, _MAX_PATH ); m_edtPws.GetWindowTextA ( ( LPTSTR )szPws, _MAX_PATH ); m_edtUser.GetWindowTextA ( ( LPTSTR )szUser, _MAX_PATH ); // 変換 if( ::MultiByteToWideChar( CP_THREAD_ACP, 0, szSerName, strlen( szSerName ) + 1, wszSerName, sizeof( wszSerName ) ) == 0 ) { MessageBox( "文字変換に失敗" ); return; } ::MultiByteToWideChar( CP_THREAD_ACP, 0, szUser, strlen( szUser ) + 1, wszUser, sizeof( wszUser ) ) ; ::MultiByteToWideChar( CP_THREAD_ACP, 0, szPws, strlen( szPws ) + 1, wszPws, sizeof( wszPws ) ) ; ::MultiByteToWideChar( CP_THREAD_ACP, 0, szNewPws, strlen( szNewPws ) + 1, wszNewPws, sizeof( wszNewPws ) ) ; status = NetUserChangePassword( wszSerName, wszUser, wszPws, wszNewPws ); if (status != NERR_Success) { if ( status == ERROR_INVALID_PASSWORD ) { MessageBox( "ERROR_INVALID_PASSWORD" ); } else if( status == NERR_InvalidComputer ) { MessageBox( "NERR_InvalidComputer" ); } else if( status == NERR_NotPrimary ) { MessageBox( "NERR_NotPrimary" ); } else if( status == NERR_UserNotFound ) { MessageBox( "NERR_UserNotFound" ); } else if( status == NERR_PasswordTooShort ) { MessageBox( "NERR_PasswordTooShort" ); } else { CString str; str.Format( "なんだかわからん失敗[ %d ]", status ); MessageBox( str ); } return ; } MessageBox( "パスワード変更しました。"); }