Windows7 OS중에서 isAdmin() 함수로 관리자 계정인지 여부 검사할 수 없는 경우가
있어서, 검색하다 보니 다음과 같은 방안이 존제.
VS2005에서 테스트 완료.
VS2005에서 테스트 완료.
출처 : http://social.msdn.microsoft.com/Forums/en-AU/vclanguage/thread/D84B35F0-FBB5-4A5B-B5D5-4F1235AF4EA3
//--------- IsAdmin_Simple()--------------
#include "Lm.h"
#include "Lmapibuf.h"
#include "comutil.h"
#pragma comment(lib, "comsupp.lib")
#pragma comment(lib, "Netapi32.lib")
//----------------------------------------
bool IsAdmin_Simple(CString strUserName)
{
bool bAdminPrivilege = false;
DWORD rc;
USER_INFO_1 *info;
rc = NetUserGetInfo(NULL,_bstr_t(strUserName),1,(byte**)&info);
if(rc == NERR_Success)
{
bAdminPrivilege = info->usri1_priv == USER_PRIV_ADMIN;
NetApiBufferFree(info);
}
//return rc == NERR_Success;
return bAdminPrivilege;
}
void CisadminDlg::OnBnClickedOk()
{
// TODO:
// m_ctrl_edit : CEdit Control
// m_ctrl_status : CStatic Control
CString strMsg;
CString strUserName(_T("MyAdminUser"));
m_ctrl_edit.GetWindowText(strUserName);
strMsg = strUserName;
if(!IsAdmin_Simple(strUserName))
{
strMsg += _T(" is not Admin Account.");
m_ctrl_status.SetWindowText(strMsg);
return;
}
strMsg += _T(" is Admin Account.");
m_ctrl_status.SetWindowText(strMsg);
}
댓글
댓글 쓰기