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);
}
댓글
댓글 쓰기