2.È®ÀåÀÚ ¿¬°á

°¡.È®ÀåÀÚ ¿¬°á

È®ÀåÀÚ ¿¬°á ±â´ÉÀ̶õ È®ÀåÀÚ¸¦ ƯÁ¤ ½ÇÇà ÆÄÀÏ°ú ¿¬°áÇÏ¿© Ž»ö±â¿¡¼­ ÀÌ ÆÄÀÏÀ» ´õºíŬ¸¯ÇÏ¸é ¿¬°áµÈ ÆÄÀÏ°ú ÇÔ²² ½ÇÇàÇÏ´Â ±â´ÉÀÌ´Ù. È®ÀåÀÚ txt¸¦ °¡Áö´Â ÅؽºÆ® ÆÄÀÏÀ» ´õºíŬ¸¯ÇÏ¸é ¸Þ¸ðÀåÀÌ ½ÇÇàµÇ¸é¼­ ÀÌ ÆÄÀÏÀ» ¿­¸®´Âµ¥ ÀÌ·± µ¿ÀÛÀÌ °¡´ÉÇÑ ÀÌÀ¯´Â txt È®ÀåÀÚ¿Í ¸Þ¸ðÀåÀÌ ¿¬°áµÇ¾î Àֱ⠶§¹®ÀÌ´Ù.

ÀÌ·± ¿¬°á Á¤º¸´Â ·¹Áö½ºÆ®¸®ÀÇ HKEY_CLASSES_ROOT¿¡ ÀúÀåµÇ¾î Àִµ¥ ÅؽºÆ® ÆÄÀÏÀÇ °æ¿ì ¾î¶² ½ÄÀ¸·Î ¿¬°áµÇ¾î ÀÖ´ÂÁö º¸ÀÚ. ·¹Áö½ºÆ®¸® ÆíÁý±â·Î È®ÀÎÇØ º¸¸é ÀÌ·± ¿¬°á °ü°è¸¦ Á÷Á¢ º¼ ¼ö ÀÖÀ¸¸ç ¿øÇÒ °æ¿ì ÆíÁýÇÏ´Â °Íµµ ¹°·Ð °¡´ÉÇÏ´Ù.

.txt ¼­ºêÅ°ÀÇ ±âº»°ª¿¡´Â txtfileÀ̶ó°í µÇ¾î Àִµ¥ ÀÌ È®ÀåÀÚ¿¡ ´ëÇÑ ½© Á¤º¸°¡ txtfileÀ̶ó´Â ¼­ºêÅ°¿¡ ÀÖ´Ù´Â ¶æÀÌ´Ù. txtfile ¼­ºêÅ°¸¦ º¸¸é ±âº»°ª¿¡ ÀÌ È®ÀåÀÚ¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀÌ ÀÛ¼ºµÇ¾î ÀÖ°í shell\open\commandÀÇ ±âº»°ª¿¡´Â ÀÌ È®ÀåÀÚ¿Í ¿¬°áµÈ ½ÇÇà ÆÄÀÏÀÇ °æ·Î°¡ ÀúÀåµÇ¾î ÀÖ´Ù. Ž»ö±â´Â ÀÌ ÆÄÀÏÀÌ ´õºíŬ¸¯µÉ °æ¿ì NotePad.exe¸¦ ½ÇÇàÇϸ鼭 ´õºíŬ¸¯µÈ ÆÄÀϸíÀ» ¸Þ¸ðÀåÀÇ ¸í·ÉÇà Àμö·Î Àü´ÞÇÏ´Â °ÍÀÌ´Ù.

È®ÀåÀÚ ¿¬°á Á¤º¸ÀÇ ±¸Á¶¸¦ ¾Ë°Ô µÇ¸é ¿øÇÏ´Â È®ÀåÀÚ¸¦ ÀÓÀÇÀÇ ½ÇÇà ÆÄÀÏ°ú ¿¬°áÇÒ ¼ö ÀÖ´Ù. ´ç±Ù°ú ÅؽºÆ® ÆÄÀÏÀ» ¿¬°áÇѴٰųª HTML ÆÄÀÏ°ú ¿¬°áÇÏ´Â °Íµµ °¡´ÉÇѵ¥ ÀÌ·¸°Ô ¿¬°áÇØ ³õÀ¸¸é Ž»ö±â¿¡¼­ ÆÄÀÏÀ» ´õºíŬ¸¯ÇÏ¿© ´ç±ÙÀ» ¹Ù·Î ½ÇÇàÇÒ ¼ö ÀÖ¾î Æí¸®ÇÏ´Ù. ´ç±ÙÀÌ ¾Æ¹«¸® ¸øÇصµ ¸Þ¸ðÀ庸´Ù´Â ±â´ÉÀÌ ´õ ¸¹À¸¹Ç·Î ±âº»ÀûÀÎ ÅؽºÆ® ÆíÁý±â¸¦ ´ç±ÙÀ¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ·¹Áö½ºÆ®¸®ÀÇ ¿¬°á Á¤º¸¸¦ ÆíÁýÇÏ°í ÇØÁ¦ÇÏ´Â ÇÔ¼ö¸¦ ÀÛ¼ºÇØ º¸ÀÚ.

 

void MakeAssociate(TCHAR *ext, TCHAR *desc)

{

     TCHAR OldProgID[64];

     TCHAR OldDesc[64];

     TCHAR NewProgID[64];

     TCHAR NewDesc[64];

     TCHAR szKey[MAX_PATH];

     TCHAR Path[MAX_PATH];

 

     SHRegReadString(SHCR,ext,NULL,"",OldProgID,64);

     SHRegReadString(SHCR,OldProgID,NULL,"",OldDesc,64);

 

     wsprintf(NewProgID,"Dangeun%s",ext);

     if (desc == NULL) {

          lstrcpy(NewDesc,OldDesc);

     } else {

          lstrcpy(NewDesc,desc);

     }

 

     SHRegWriteString(SHCR,NewProgID,NULL,NewDesc);

     wsprintf(szKey,"%s\\shell\\open\\command",NewProgID);

     GetModuleFileName(g_hInst,Path,MAX_PATH);

     lstrcat(Path, " \"%1\"");

     SHRegWriteString(SHCR,szKey,NULL,Path);

 

     SHRegWriteString(SHCR,ext,NULL,NewProgID);

 

     if (lstrcmp(OldProgID, NewProgID)!=0) {

          SHRegWriteString(SHCR,NewProgID,"OldProgID",OldProgID);

     }

 

     SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,NULL,NULL);

}

 

void UnAssociate(TCHAR *ext)

{

     TCHAR OldProgID[64];

     TCHAR NewProgID[64];

 

     wsprintf(NewProgID,"Dangeun%s",ext);

     SHRegReadString(SHCR,ext,NULL,"",OldProgID,64);

     if (lstrcmp(OldProgID, NewProgID)==0) {

          SHRegReadString(SHCR,NewProgID,"OldProgID","",OldProgID,64);

          SHRegWriteString(SHCR,ext,NULL,OldProgID);

          SHDeleteKey(SHCR,NewProgID);

     }

 

     SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,NULL,NULL);

}

 

¿¬°áÇÏ´Â ÇÔ¼ö´Â ´ë»ó È®ÀåÀÚ¿Í ¼³¸í ¹®ÀÚ¿­À» Àμö·Î Àü´Þ¹Þ¾Æ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÑ ÇÁ·Î±×·¥°ú ¿¬°áÇÑ´Ù. ¿¬°á »óÅ´ ÀÓÀÇ·Î ¹Ù²Ü ¼ö ÀÖÁö¸¸ ¿ø·¡ »óÅ·Πµ¹¾Æ°¥ ¼öµµ ÀÖ¾î¾ß ÇϹǷΠ¹Ýµå½Ã ÀÌÀü ¿¬°á »óŸ¦ ¾îµò°¡¿¡ µû·Î ÀúÀåÇØ µÎ¾î¾ß ÇÑ´Ù. ±×·¡¼­ ÀÌÀü ID¿Í ¼³¸íÀ» OldProgID, OldDesc¿¡ ¸ÕÀú Á¶»çÇß´Ù.

»õ ProgId´Â DangeunÀ̶ó´Â Á¢µÎ¾î¿Í È®ÀåÀÚ À̸§À¸·Î ÁöÁ¤ÇßÀ¸¸ç ¼³¸íÀº Àμö·Î Àü´ÞµÈ desc¸¦ »ç¿ëÇϰųª NULLÀÌ Àü´ÞµÇ¾úÀ» °æ¿ì OldDesc¸¦ »ç¿ëÇÑ´Ù. txt ÆÄÀÏ¿¡ ´ëÇØ dgtext¶ó´Â ¼³¸íÀ» Àü´ÞÇß´Ù¸é Dangeun.txt¶ó´Â ¼­ºêÅ°¿¡ ¿¬°á Á¤º¸¸¦ ÀÛ¼ºÇÑ´Ù. ÀÌ ¹®ÀÚ¿­·Î »õ ProgID¸¦ ÀÛ¼ºÇÏ°í shell\open\commmand¿¡ ´ç±ÙÀÇ °æ·Î¸¦ ÁöÁ¤ÇÑ´Ù. ±×¸®°í txtÈ®ÀåÀÚÀÇ ProgID¸¦ Dangeun.txt·Î º¯°æÇÏ¿© ¿¬°á Á¤º¸¸¦ ¹Ù²Û´Ù.

±×¸®°í º¹¿øÀ» À§ÇØ ÀÌÀü ¿¬°á ÇÁ·Î±×·¥ÀÇ ProgIDµµ ÀúÀåÇÑ´Ù. ´Ü, Áߺ¹ ¿¬°áÇÒ °æ¿ì¸¦ ´ëºñÇؼ­ ÀÌÀü ProgID°¡ »õ ProgID¿Í ´Ù¸¦ ¶§¸¸ ÀÌÀü ¿¬°á ÇÁ·Î±×·¥À» ±â·ÏÇÑ´Ù. ¸Þ¸ðÀå¿¡¼­ ´ç±ÙÀ¸·Î ¿¬°áÀÌ ¹Ù²ð ¶§ ¸Þ¸ðÀåÀÇ ¿¬°áÁ¤º¸ÀÎ txtfileÀ» ÀúÀåÇØ µÖ¾ß ´Ù½Ã ¸Þ¸ðÀåÀ¸·Î º¹¿øÇÒ ¼ö Àִµ¥ ´ç±ÙÀÌ Áߺ¹ ¿¬°áÇÒ °æ¿ì´Â ÀÌÀü ¿¬°á Á¤º¸µµ Dangeuntxt°¡ µÇ¾î ¹ö·Á ¿ø·¡ ¿¬°áµÇ¾î ÀÖ´ø ¸Þ¸ðÀåÀ» ãÁö ¸øÇÏ°Ô µÈ´Ù. È®ÀåÀÚ ¿¬°áÀ» ¹Ù²Û ÈÄ¿¡´Â ½©¿¡°Ô ÅëÁö¸¦ º¸³» ¿¬°áÀÌ ¹Ù²î¾úÀ½À» ¾Ë·Á¾ß ÇÑ´Ù. ÀÌ ÇÔ¼ö¿¡ ÀÇÇØ .txtÀÇ ¿¬°á Á¤º¸´Â ´ÙÀ½°ú °°ÀÌ º¯°æµÈ´Ù.

txt È®ÀåÀÚÀÇ ±âº»°ªÀÌ Dangeun.txt·Î º¯°æµÇ¾úÀ¸¸ç ÀÌ ¼­ºêÅ°¸¦ º¸¸é ÆÄÀÏÀ» ¿­ ¶§ Dangeun.exe¿Í ÇÔ²² ¿­¾î¾ß ÇÑ´Ù´Â Á¤º¸°¡ ÀÛ¼ºµÇ¾î ÀÖ´Ù. º¹¿øÀ» À§ÇØ OldProgID´Â ¹Ýµå½Ã ÀúÀåÇØ¾ß ÇÑ´Ù. UnAssiciate ÇÔ¼ö´Â OldProgID¿¡ ÀúÀåµÈ °ªÀ» º¹¿øÇÏ¿© ´ç±Ù°ú ¿¬°áµÇ±â ÀüÀÇ ÇÁ·Î±×·¥°ú ´Ù½Ã ¿¬°áÇÏ¸ç ´ç±ÙÀÌ ÀÛ¼ºÇÑ ·¹Áö½ºÆ®¸® Á¤º¸´Â ¿ÏÀüÈ÷ »èÁ¦ÇÑ´Ù.

ÀÌ µÎ ÇÔ¼ö´Â ¿¬°á ¼³Á¤ ´ëÈ­»óÀÚ¿¡¼­ È£ÃâÇϹǷΠÀÏ´ÜÀº ¸¸µé¾î µÎ±â¸¸ ÇÏÀÚ. ´Ù¸¥ ÇÁ·Î±×·¥¿¡µµ È®ÀåÀÚ ¿¬°á ±â´ÉÀÌ ÇÊ¿äÇÏ´Ù¸é ÀÌ ÇÔ¼öµéÀ» °¡Á®°¡ ÀçÈ°¿ëÇÒ ¼ö ÀÖµÇ DangeunÀ̶ó´Â ¹®ÀÚ¿­ »ó¼ö¸¸ ÇØ´ç ÇÁ·Î±×·¥ÀÇ À̸§À¸·Î ¹Ù²Ù¸é µÈ´Ù.

³ª.°æ·Î Á¶Á¤

´ç±Ù°ú È®ÀåÀÚ°¡ ¿¬°áµÈ ÆÄÀÏÀ» ´õºíŬ¸¯ÇÏ¸é ¾ðÁ¦³ª ´ç±ÙÀÌ ¿­¸°´Ù. ±×·±µ¥ ¸¸¾à ´ç±ÙÀÇ ½ÇÇà ÆÄÀÏ °æ·Î°¡ ¹Ù²î¸é Ž»ö±â°¡ ´ç±ÙÀÇ À§Ä¡¸¦ Á¦´ë·Î ãÁö ¸øÇÒ °ÍÀÌ´Ù. ´ç±ÙÀº ´Üµ¶ ½ÇÇà ÆÄÀÏÀ̶ó ¾ðÁ¦µçÁö ÀÚ¸®¸¦ ¿Å±æ ¼ö ÀÖÀ¸¹Ç·Î ÀÌ·± °¡´É¼ºÀ» Ç×»ó ´ëºñÇØ¾ß ÇÑ´Ù. ½ÇÇà ÆÄÀÏÀÇ °æ·Î°¡ ¹Ù²î¸é ·¹Áö½ºÆ®¸®ÀÇ °æ·Îµµ °°ÀÌ ¼öÁ¤ÇØ¾ß Çϴµ¥ ÀÌ ÀÛ¾÷À» ÇÏ´Â ´ÙÀ½ ÇÔ¼ö¸¦ ÀÛ¼ºÇÑ´Ù.

 

void RearrangePath()

{

     TCHAR InstPath[MAX_PATH];

     TCHAR ExePath[MAX_PATH];

     TCHAR lpSubKey[MAX_PATH];

     FILETIME FileTime;

     DWORD i;

     LONG Result;

     HKEY key;

     DWORD Size;

 

     // ·¹Áö½ºÆ®¸®ÀÇ °æ·Î¿Í ½ÇÇà ÆÄÀÏÀÇ °æ·Î °°À¸¸é ¾Æ¹« °Íµµ ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

     SHRegReadString(SHCU,KEY"Setting","InstPath","",InstPath,MAX_PATH);

     GetModuleFileName(g_hInst,ExePath,MAX_PATH);

     if (lstrcmp(ExePath,InstPath)==0) {

          return;

     }

 

     // »õ °æ·Î¸¦ ±â·ÏÇÑ´Ù.

     SHRegWriteString(SHCU,KEY"Setting","InstPath",ExePath);

     if (Option.bExplorerPopup) {

          RegisterPopup(TRUE);

     }

 

     // ¿¬°áµÈ ÆÄÀÏÀÇ °æ·Î¸¦ ¼öÁ¤ÇÑ´Ù.

     RegOpenKeyEx(SHCR,NULL,0,KEY_READ,&key);

     Result=ERROR_SUCCESS;

     for (i=0;Result==ERROR_SUCCESS;i++) {

          Size=MAX_PATH;

          Result=RegEnumKeyEx(key,i,lpSubKey,&Size,NULL,NULL,NULL,&FileTime);

          if (Result==ERROR_SUCCESS) {

              if (strncmp(lpSubKey,"Dangeun.",8)==0) {

                   MakeAssociate(lpSubKey+7,NULL);

              }

          }

     }

     RegCloseKey(key);

}

 

HKEY_CLASSES_ROOT ¾Æ·¡ÀÇ ¸ðµç Å°¸¦ µÚÁ® Dangeun.À¸·Î ½ÃÀ۵Ǵ ŰÀÇ ½© ¸í·ÉÀ» ¸ðÁ¶¸® ´Ù½Ã ÀÛ¼ºÇÑ´Ù. ´Ü ¸Å¹ø ÀÌ ÀÛ¾÷À» ÇÒ ÇÊ¿ä´Â ¾øÀ¸¸ç ½ÇÇà ÆÄÀÏÀÇ °æ·Î°¡ ÃÖÃÊ ½ÇÇàÇßÀ» ¶§ÀÇ °æ·Î¿Í ´Ù¸¦ ¶§¸¸ À翬°áÇÏ¸é µÈ´Ù. ÀÌ ÆÇ´ÜÀ» Çϱâ À§Çؼ­´Â ¼Â¾÷ ´ëÈ­»óÀÚ¿¡¼­ ÃÖÃÊ ½ÇÇà½Ã ½ÇÇà ÆÄÀÏÀÇ °æ·Î¸¦ ·¹Áö½ºÆ®¸®¿¡ µû·Î ±â·ÏÇØ ³õ¾Æ¾ß ÇÑ´Ù.

 

BOOL CALLBACK SetupDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     ....

     switch(iMessage)

     {

     case WM_INITDIALOG:

          ....

        CheckDlgButton(hDlg,IDC_IS_ASSODGP,BST_CHECKED);

          return TRUE;

     case WM_COMMAND:

          switch (LOWORD(wParam))

          {

          case IDOK:

        case IDCANCEL:

              ....

           if (IsDlgButtonChecked(hDlg,IDC_IS_ASSODGP)==BST_CHECKED) {

               MakeAssociate(".dgp","´ç±Ù ÇÁ·ÎÁ§Æ® ÆÄÀÏ");

               MakeAssociate(".dgc","´ç±Ù »ó¿ë±¸ ÆÄÀÏ");

           }

 

           GetModuleFileName(g_hInst,szPath,MAX_PATH);

           SHRegWriteString(SHCU,KEY"Setting","InstPath",szPath);

            EndDialog(hDlg,IDOK);

           return TRUE;

        case IDCANCEL:

           EndDialog(hDlg,IDCANCEL);

           return TRUE;     

          }

          return FALSE;

     }

     return FALSE;

}

 

dgp, dgc ¿¬°á ¿É¼ÇÀÌ Ãß°¡µÇ¾ú°í ÀÌ È®ÀåÀÚ¸¦ ±âº»ÀûÀ¸·Î ¿¬°áÇÏ¿´´Ù. ´ç±ÙÀÇ ÇÁ·ÎÁ§Æ® ÆÄÀÏÀÎ dgp´Â ´ç¿¬È÷ ´ç±ÙÀÇ ÆÄÀÏÀ̹ǷΠ¿¬°áÇÏ´Â °ÍÀÌ ¸¶¶¥ÇÏ´Ù. dgc´Â ´ç±ÙÀÇ »ó¿ë±¸ ÆÄÀÏÀε¥ ´ÙÀ½ Àå¿¡¼­ ¸¸µé°Ô µÉ °ÍÀÌ´Ù. ¶Ç IDCANCEL¿¡ ´ëÇÑ Ã³¸®¸¦ Ãß°¡ÇÏ¿© ¼³Ä¡ Áß¿¡ Ãë¼ÒÇÒ ¼ö ÀÖµµ·Ï Çß´Ù. ÀÌÀü ¹öÀü¿¡¼­´Â ¼³Ä¡ ´ëÈ­»óÀÚ¿¡¼­ ¹«Á¶°Ç ¼³Ä¡¸¦ °­ÇàÇß¾ú´Âµ¥ À߸ø ½ÇÇàÇÑ °æ¿ì ¼³Ä¡¸¦ Ãë¼ÒÇÒ ¼öµµ ÀÖ¾î¾ß ÇÑ´Ù. WinMainÀÇ ÀÌ ÇÔ¼ö È£Ãâ¹®À» ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.

 

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance

            ,LPSTR lpszCmdParam,int nCmdShow)

{

     ....

     if (SHRegReadInt(SHCU,KEY"Setting","StartAction",1000)==1000) {

          if (DialogBox(g_hInst, MAKEINTRESOURCE(IDD_SETUP),

              HWND_DESKTOP, SetupDlgProc) == IDCANCEL) {

              CloseHandle(hMutex);

              return 0;

          }

     }

 

´ëÈ­»óÀÚÀÇ ¸®ÅÏ°ªÀ» º¸°í Ãë¼ÒÇßÀ¸¸é WinMainÀ» Á¾·áÇß´Ù. OnCreate¿¡¼­ RegisterPopupÀ» È£ÃâÇÏ´Â ´ë½Å RearrangePath ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

 

int OnCreate(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

    SetTimer(hWnd,100,1,NULL);

     ....

     if (SHRegReadInt(SHCU,KEY"Setting","StartAction",1000) == 1000) {

          ....

     } else {

          ....

        if (Option.bExplorerPopup) {

           RegisterPopup(TRUE);

        }

        RearrangePath();

     }

     ....

    SetTimer(hWnd,100,1,NULL);

     return 0;

}

 

RearrangePath ÇÔ¼ö¿¡¼­ bExplorerPopup ¿É¼ÇÀ» Á¡°ËÇÏ¿© Æ˾÷À» µî·ÏÇϹǷΠ¿É¼Ç ¼³Á¤ »óŸ¦ º¼ ÇÊ¿ä¾øÀÌ ¹«Á¶°Ç ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µÈ´Ù. ÃʱâÈ­ ¿Ï·á ½ÃÁ¡ ÆľÇÀ» À§ÇÑ ÀÏȸ¿ë ŸÀÌ¸Ó ¼³Ä¡¹®ÀÎ SetTimer¸¦ ¸®ÅÏÇϱâ Á÷ÀüÀ¸·Î À̵¿½ÃÄ״µ¥ ÃʱâÈ­ Áß¿¡ ¸Þ½ÃÁö ¹Ú½º¸¦ ¿¬´Ù°Å³ª ÇÒ ¼öµµ Àֱ⠶§¹®¿¡ °¡±ÞÀûÀÌ¸é ´Ê°Ô ¼³Ä¡ÇØ¾ß ÇÑ´Ù. ¼³Ä¡ ÇØÁ¦½Ã¿¡ ¿¬°á ÆÄÀÏ°úÀÇ °ü°èµµ ²÷¾î¾ß ÇÑ´Ù.

 

void Uninstall()

{

     ....

     TCHAR lpSubKey[MAX_PATH];

     FILETIME FileTime;

     DWORD i;

     LONG Result;

     HKEY key;

     DWORD Size;

 

     ....

     RegOpenKeyEx(SHCR,NULL,0,KEY_READ,&key);

     Result=ERROR_SUCCESS;

     for (i=0;Result==ERROR_SUCCESS;i++) {

          Size=MAX_PATH;

          Result=RegEnumKeyEx(key,i,lpSubKey,&Size,NULL,NULL,NULL,&FileTime);

          if (Result==ERROR_SUCCESS) {

              if (strncmp(lpSubKey,"Dangeun.",8)==0) {

                   UnAssociate(lpSubKey+7);

                   i--;

              }

          }

     }

     RegCloseKey(key);

}

 

Dangeun.À¸·Î ½ÃÀ۵Ǵ ŰÀÇ È®ÀåÀÚ¸¦ Á¶»çÇÏ¿© ¿¬°á °ü°è¸¦ ²÷¾ú´Ù. ÀÌ Ã³¸®¸¦ ÇÏÁö ¾Ê°í ´ç±Ù¸¸ »ç¶óÁ® ¹ö¸®¸é ´ç±Ù°ú ¿¬°áµÈ ÆÄÀÏÀº ´õºíŬ¸¯Çصµ ÀÚ½ÅÀ» ¿­¾îÁÙ ÇÁ·Î±×·¥À» ãÁö ¸øÇÒ °ÍÀÌ´Ù. UnAssociate ÇÔ¼ö¸¦ È£ÃâÇϸé ÀÌÀü ¿¬°á ÇÁ·Î±×·¥À¸·Î ´Ù½Ã º¹±¸µÇ¹Ç·Î ´ç±ÙÀÌ ¼³Ä¡µÇ±â ÀüÀÇ »óÅ·Πµ¹¾Æ°¥ °ÍÀÌ´Ù.