?? 如何更改用戶密碼(1).txt
字號(hào):
作者:wgenry
email: wgenry@sina.com
日期:2000-8-24 8:19:29
如果你使用ADSI的話
大概應(yīng)該是這樣的
Set obja = GetObject path
'path 的格式為WINNT://<Domain>/Users/<User>,如果用戶在Users下的話
obja.ChangePassword OldPwd,newPwd
如果用ISAPI或者ASP Component
STDMETHODIMP CPwdMgr::ChangePassword(BSTR Domain, BSTR UserName, BSTR OldPwd, BSTR NewPwd, VARIANT_BOOL *RetVal)
{
HRESULT hr;
LPWSTR wUserName;
LPWSTR wComputerName = NULL; // default to local machine
LPWSTR wDomain;
LPWSTR wOldPassword;
LPWSTR wNewPassword;
USER_INFO_1003 pi1003;
NET_API_STATUS nas;
_bstr_t bstrDomain,bstrUser,bstrOldPwd,bstrNewPwd;
bstrDomain = Domain;
bstrUser = UserName;
bstrOldPwd = OldPwd;
bstrNewPwd = NewPwd;
wDomain = (wchar_t*)bstrDomain;
wUserName = (wchar_t*)bstrUser;
wOldPassword = (wchar_t*)bstrOldPwd;
wNewPassword = (wchar_t*)bstrNewPwd;
nas = NetGetDCName(
NULL,
wDomain,
(LPBYTE *)&wComputerName
);
if(nas != NERR_Success)
{
if (nas == NERR_DCNotFound)
AtlReportError(CLSID_PwdMgr,"Could not find the domain controller for the domain",IID_IPwdMgr,nas);
if (nas == ERROR_INVALID_NAME)
AtlReportError(CLSID_PwdMgr,"The name could not be found",IID_IPwdMgr,nas);
*RetVal = VARIANT_FALSE;
return E_FAIL;
}
if(wOldPassword == NULL)
{
pi1003.usri1003_password = wNewPassword;
nas = NetUserSetInfo(
wComputerName, // computer name
wUserName, // username
1003, // info level
(LPBYTE)&pi1003, // new info
NULL
);
if (nas != NERR_Success)
{
switch(nas)
{
case ERROR_ACCESS_DENIED:
AtlReportError(CLSID_PwdMgr,"The user does not have access to the requested information",IID_IPwdMgr,nas);
break;
case ERROR_INVALID_PARAMETER:
AtlReportError(CLSID_PwdMgr,"One of the function parameters is invalid. For more information, see the following Remarks section",IID_IPwdMgr,nas);
break;
case NERR_InvalidComputer:
AtlReportError(CLSID_PwdMgr,"The computer name is invalid",IID_IPwdMgr,nas);
break;
case NERR_NotPrimary:
AtlReportError(CLSID_PwdMgr,"The operation is allowed only on the primary domain controller of the domain",IID_IPwdMgr,nas);
break;
case NERR_SpeGroupOp:
AtlReportError(CLSID_PwdMgr,"The operation is not allowed on specified special groups, which are user groups, admin groups, local groups, or guest groups",IID_IPwdMgr,nas);
break;
case NERR_LastAdmin:
AtlReportError(CLSID_PwdMgr,"The operation is not allowed on the last administrative account",IID_IPwdMgr,nas);
break;
case NERR_BadPassword:
AtlReportError(CLSID_PwdMgr,"The share name or password is invalid",IID_IPwdMgr,nas);
break;
case NERR_PasswordTooShort:
AtlReportError(CLSID_PwdMgr,"The password is shorter than required. (The password could also be too long, be too recent in its change history, not have enough unique characters, or not meet another password policy requirement.)",IID_IPwdMgr,nas);
break;
case NERR_UserNotFound:
AtlReportError(CLSID_PwdMgr,"The user name could not be found",IID_IPwdMgr,nas);
break;
}
}
}
else
{
nas = NetUserChangePassword(
wComputerName,
wUserName,
wOldPassword,
wNewPassword
);
if (nas != NERR_Success)
{
switch(nas)
{
case ERROR_ACCESS_DENIED:
AtlReportError(CLSID_PwdMgr,"The user does not have access to the requested information",IID_IPwdMgr,nas);
break;
case ERROR_INVALID_PASSWORD :
AtlReportError(CLSID_PwdMgr,"The user has entered an invalid password",IID_IPwdMgr,nas);
break;
case NERR_InvalidComputer:
AtlReportError(CLSID_PwdMgr,"The computer name is invalid",IID_IPwdMgr,nas);
break;
case NERR_NotPrimary:
AtlReportError(CLSID_PwdMgr,"The operation is allowed only on the primary domain controller of the domain",IID_IPwdMgr,nas);
break;
case NERR_UserNotFound:
AtlReportError(CLSID_PwdMgr,"The user name could not be found",IID_IPwdMgr,nas);
break;
case NERR_PasswordTooShort:
AtlReportError(CLSID_PwdMgr,"The password is shorter than required. (The password could also be too long, be too recent in its change history, not have enough unique characters, or not meet another password policy requirement.)",IID_IPwdMgr,nas);
break;
}
}
}
NetApiBufferFree(wComputerName);
if(nas != NERR_Success) {
*RetVal = VARIANT_FALSE;
return E_FAIL;
}
*RetVal = VARIANT_TRUE;
return S_OK;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -