- 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( "パスワード変更しました。");
}







