| [ CnUnix ] in KIDS 글 쓴 이(By): ksangeun (우주인) 날 짜 (Date): 2003년 9월 3일 수요일 오전 08시 55분 14초 제 목(Title): Re: [또질문]WinNT서비스에서 사용자계정가 WMI를 이용하면 문제를 해결할 방법이 있군요. Win32_ComputerSystem 에서 UserName property를 참조하면 됩니다. Terminal Service로 로그인을 한 경우에도 Console의 UserName을 반환한다고 설명 되어 있습니다. UserName Data type: string Access type: Read-only Name of a user that is logged on currently. This property must have a value. In a terminal services session, UserName returns the name of the user that is logged on to the console?not the user logged on during the terminal service session. Example: jeffsmith WMI는 Interface가 COM으로 구현되어 있어서 VC에서 COM을 사용하는 것이 익숙치 않으면, 처음에 구현 할 때 시간이 좀 걸리실 것 같습니다. MSDN에도 셈플코드는 대부분 VB로 되어 있어서 reference 찾기도 힘들거고.. 사용하시려면 일단 WMI SDK나 Paltform SDK 최신버젼을 설치하시고, WMI를 사용할 코드에 #include <Wbemidl.h> 를 넣어줍니다. 물론 COM을 사용하니 CoInitialize나 AfxOleInit 등을 해당 instance에서 최초에 호출을 해야 하고요.. WMI Object을 가져오는 법은, _bstr_t bstrNamespace; _bstr_t bstrPath; IWbemLocator *pWbemLocator = NULL; IWbemServices *pServices = NULL; hr = CoCreateInstance(CLSID_WbemLocator, NULL, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (void**) &pWbemLocator); if( FAILED(hr) ) { CoUninitialize(); printf("failed CoCreateInstance\n"); return; } bstrNamespace = L"root\\cimv2"; hr = pWbemLocator->ConnectServer(bstrNamespace, NULL, NULL, NULL, 0, NULL, NULL, &pServices); if( FAILED(hr) ) { pWbemLocator->Release(); CoUninitialize(); printf("failed ConnectServer\n"); return; } pWbemLocator->Release(); 식으로 하고, WMI의 원하는 Class를 얻을 때는, bstrPath = L"Win32_ComputerSystem"; //여기에 원하는 class이름을 넣습니다. hr = pServices->GetObject(bstrPath, 0, 0, &m_pComSys, 0); if( FAILED(hr) ) { pWbemLocator->Release(); CoUninitialize(); return; } 이런식으로 얻을 수 있습니다. 이렇게 하면 아마도 m_pComSys->UserName 에 Console user name이 들어가 있겠죠. 아직 해 보지는 않았습니다. 그럼 이만... ======================================================================= main(){int a=107,j=2;while(a>-5000){a=a>0?a:99;putchar(a); a=j==49?46:a-j;j*=j;j=j%256?j:7;j*=j%16?1:-1;};printf("%cm\n",111);}; ======================================================================= |