잠깐 군복무시절 이야기를 할께요...^^
때는 2004년부터 2006년 사이입니다. 저는 공군의 한 비행교육대대의 CQ(항공운항병)로 근무하고 있었습니다.
대대의 주 임무가 비행이다보니 대외비부터 2급비밀까지 비밀 투성이였습니다.
컴퓨터에도 위험한 문서들이 많이 있었죠. 병사들도 비밀을 만질 수 밖에 없는 환경이다 보니...
가끔식 보안검열을 하면 지적을 받곤 했었습니다. 사실 대박 영창감인데... ㅋ 워낙 군대는 가라가 많아서리..ㅋㅋ
하지만 컴퓨터에서 비밀문서 편집을 해야만 하기때문에 특별한 보안지침이 있었습니다.
그것은 바로 자신의 컴퓨터에서 비밀문서를 취급할때는 인트라넷선을 꼭 뽑아놓고 사용하라는 지침이었습니다.
대대에서는 LAN선을 A와 B로 나누어 선택하여 쓸 수 있는 스위칭 장치를 구입하여 랜선을 껐다 켰다 하는 장치로 사용하였고,
그때 상당히 많은양을 구입한것으로 생각됩니다. 전국 비행대대가 거의 샀다고 들렸으니까요...
제 전공이 전공인지라, '그거 그냥 네트워크 사용안함으로 놓고 쓰면 될텐데...' 하는 생각을 많이 했었습니다.
하지만 입을 다물었습니다. 50여명이나 되는 장교들에게 그것을 가르쳐주기란... 미X짓이나 다름이 없었으니까요...ㅡㅡ;
대한민국 부사관, 장교들의 상당수는 병사가 할일을 절대 배워서 스스로 하려고 하지 않습니다. 시키죠... 편하게...ㅡㅡ;
하여튼 그때는 가르쳐주기도 힘들었고, 그 스위칭장치가 비록 얼마 하지 않았지만 왠지 혈세낭비같아 보여서 좀 비효율적이라는 생각이 많이 들었습니다. 그래서 생각한것이 소프트웨어를 하나 만들어서 배포하면 좋겠다는 생각을 해보았습니다.
물론 그시절엔 그런걸 구현할 수 있는 실력도 안되었으면서 그냥 막연한 생각만 했었습니다. 굉장히 간단할것 같은데 말이죠...
그러고 전역을 하고, 1년이 지나고 2년이 지난 2008년 10월쯤 문득 생각이 나서, 관련 자료를 찾아보았습니다.
그때 이 페이지를 보았습니다.
NIC 이름으로 활성/비활성 시키는 코드 : http://blog.naver.com/PostView.nhn?blogId=noirxeno&logNo=60053988997
그리고 더 찾아다니다가 또하나 발견했습니다.
Disable/Enable Network : http://www.codeguru.com/forum/showthread.php?t=419909
소스를 보니 역시 간단했습니다. 하지만 그시절엔 이 소스를 봤어도 못만들었을테지요... 하여튼 뿌듯했습니다.
한나절 끄적대서 프로그램을 만들고, 부대에 있는 X하사 형님에게 보내주고, 컴에 저장시켜 놓았다가...
요즘 블로그를 작성하면서 잘 정리하여 보관하고, 또 사람들과 공유하기 위하여 이 글을 쓰고 있습니다.
서론이 너무 길었습니다. ㅎㅎㅎ 본론으로 들어가죠.
먼저 소스코드입니다. 이 소스는 블로그에 올리려고 제가 쉽게 다시 뽑아낸 소스입니다.
소스 Copy & Paste 하셔서 BreakPoint찍어가면서 몇번만 실행해보시면 금방 이해하실 수 있을겁니다.
설명은 따로 안하겠습니다....
이 소스로 제작된 프로그램은 http://funnism.com/15 에서 다운받으실 수 있습니다.
#include#include #include #include using namespace std; BOOL IsConnection(); int Connect(); int main() { int hr = 0; if(IsConnection()){ // 연결이 되어있는 상태입니다. cout << "현재 네트워크 카드의 드라이브는 사용중입니다." << endl; cout << "연결 해제합니다."; }else{ // 연결이 되어있지 않으니 연결합니다. cout << "현재 네트워크 카드의 드라이브는 사용중지된 상태입니다." << endl; cout << "연결 합니다. : "; } hr = Connect(); if(hr==0){ cout << "네트워크 카드의 연결이 해제되었습니다." << endl; }else if(hr == 1){ cout << "네트워크 카드가 연결되었습니다." << endl; } return 0; } BOOL IsConnection(){ int status = FALSE; //1:connect, 0:disconnect HRESULT result = 0; CoInitialize(0); INetConnectionManager *pMan = 0; HRESULT hres = CoCreateInstance(CLSID_ConnectionManager, 0, CLSCTX_ALL, __uuidof(INetConnectionManager), (void**)&pMan); if (SUCCEEDED(hres)) { IEnumNetConnection *pEnum = 0; hres = pMan->EnumConnections(NCME_DEFAULT, &pEnum); if (SUCCEEDED(hres)) { INetConnection *pCon = 0; ULONG count; while (pEnum->Next(1, &pCon, &count) == S_OK ) { NETCON_PROPERTIES *pProps = 0; hres = pCon->GetProperties(&pProps); if (SUCCEEDED(hres)) { if (pProps->Status == NCS_DISCONNECTED){ status = FALSE; } else if (pProps->Status == NCS_CONNECTED){ status = TRUE; } if (pProps) { CoTaskMemFree(pProps->pszwName); CoTaskMemFree(pProps->pszwDeviceName); CoTaskMemFree(pProps); } } pCon->Release(); } pEnum->Release(); } pMan->Release(); } CoUninitialize(); return status; } int Connect(){ int status = 0; //1:connect, 0:disconnect HRESULT result = 0; CoInitialize(0); INetConnectionManager *pMan = 0; HRESULT hres = CoCreateInstance(CLSID_ConnectionManager, 0, CLSCTX_ALL, __uuidof(INetConnectionManager), (void**)&pMan); if (SUCCEEDED(hres)) { IEnumNetConnection *pEnum = 0; hres = pMan->EnumConnections(NCME_DEFAULT, &pEnum); if (SUCCEEDED(hres)) { INetConnection *pCon = 0; ULONG count; while (pEnum->Next(1, &pCon, &count) == S_OK) { NETCON_PROPERTIES *pProps = 0; hres = pCon->GetProperties(&pProps); if (SUCCEEDED(hres)) { if (pProps->Status == NCS_DISCONNECTED){ result = pCon->Connect(); status = 1; } else if (pProps->Status == NCS_CONNECTED){ result = pCon->Disconnect(); status = 0; } if (pProps) { CoTaskMemFree(pProps->pszwName); CoTaskMemFree(pProps->pszwDeviceName); CoTaskMemFree(pProps); } } pCon->Release(); } pEnum->Release(); } pMan->Release(); } CoUninitialize(); return status; }
'Windows Programming > Win32 API & MFC & C/C++' 카테고리의 다른 글
| 윈도우창과 콘솔창 2개 띄우기 (0) | 2009/06/02 |
|---|---|
| 윈도우즈의 최대 경로 길이(MAX_PATH)에 대해서... (0) | 2009/05/28 |
| 네트워크(NIC) 사용/사용해제 하기 (2) | 2009/02/08 |
| MFC 9.0 클래스 계층도 (0) | 2009/01/24 |
| MFC 클래스의 역할 (0) | 2009/01/24 |
| IME 관련 함수 (0) | 2009/01/15 |

댓글을 달아 주세요
안녕하세요
2009/02/13 11:21 [ ADDR : EDIT/ DEL : REPLY ]매쉬업사이트 통해통해 어떻게 들어오게 되었습니
저랑 같은시기에 근무하셨었군요^^ 그것도 CQ로..
저도 CQ였는데 반가워요 CQ만나기 힘든데^^
잘 보고 갑니다
오~~!! CQ 정말 만나기 힘든데 반갑습니다....^^ ㅎㅎㅎ
2009/02/14 00:33 [ ADDR : EDIT/ DEL : REPLY ]