-------------------------------------------------------------------------------- ÁÖ Á¦ ActiveX ÄÁÆ®·ÑÀÇ º¸¾Èó¸® (MFC, TActiveXForm) -------------------------------------------------------------------------------- À̱ÛÀÇ ³»¿ë´ë·Î Çϸé Àß ¾ÈµÈ´Ù°í ÁöÀûÀ» ÇØÁֽô ºÐµéÀÌ ¸¹À¸¼Å¼­ Çغôõ´Ï.. Á¤¸» ¾ÈµÇ´õ±º¿ä.. »õ ¹öÁ¯µéÀÌ ³ª¿À¸é¼­ ¸í·É¾î ¿É¼ÇÀÌ ¾à°£¾¿ º¯°æÀÌ µÇ¾ú´õ±º¿ä.. 2000³â 2¿ù 4ÀÏÀÚ.. »õ ´äº¯ ±ÛÀ» ÷ºÎÇÕ´Ï´Ù.. ³»¿ëÀ» ¼öÁ¤Çؼ­ »õ·Î ¿Ã¸®º¯ ÁÁ°ÚÁö¸¸.. ±×°£ È÷½ºÅ丮 º¸°ü (¿ª»çÀÇ ÇöÀå ??) ¹× Á¦ °ÔÀ¸¸§ Å¿À¸·Î.. º¯°æµÈ »çÇ׿¡ ´ëÇؼ­¸¸ »õ·Î ¿Ã¸³´Ï´Ù.. ¾Æ·¡ ³»¿ëÁß¿¡¼­ ÀÌ ºÎºÐÀº ¹Ù·Î ¾Æ·¡ ºÎºÐÀ» Àû¿ëÇÏ¼Å¾ß Á¦´ë·Î ¼öÇàÀÌ µÉ °Ì´Ï´Ù.. Á¦°¡ ¾î´ÀºÐ¿¡°Ô ¸ÞÀÏ·Î ´äº¯ Çß´ø ³»¿ë ±×´ë·Î ¿Ã¸³´Ï´Ù.. ¿ì¼± Á¦°¡ »ç°ú¸¦ ¸ÕÀú µå·Á¾ß Çϰڳ׿ä.. ȨÆäÀÌÁö³ª PCÅë½Å¿¡ ±ÛÀ» ¿Ã¸°´Ù´Â°Ô ¾ó¸¶³ª Èûµç ÀÏÀÎÁö ¸ô¶ú½À´Ï´Ù.. °è¼Ó »õ·Î¿î »çÇ×ÀÌ ³ª¿À°í ¿¹Àü¿¡ µÇ´ø ¹æ¹ýÀÌ º¯°æµÉ¶§ ¶§¸ÂÃç ¿Ã·È´ø ±Ûµµ ¾÷µ¥ÀÌÆ®¸¦ ½ÃÄÑ¾ß Çϴµ¥.. Á¦ ºÎÁö·±ÇÔÀÌ ±×°É µû¶ó°¡Áú ¸øÇϳ׿ä.. ¾çÇعٶø´Ï´Ù.. ¿ì¼± Á¦ ȨÆäÀÌÁö¿Í ÇÏÀÌÅÚ ºñÁÖ¾óÅø µ¿È£È¸ °Ô½ÃÆÇ¿¡ ¿Ã·È´ø ±ÛÀº Á¦°¡ ³»ºÎ ÇÁ·ÎÁ§Æ® ÁøÇà½Ã ´Ù¸¥ »ç¿øµé°ú ³»¿ë °øÀ¯¸¦ À§ÇØ »ç³» °Ô½ÃÆÇ¿¡ ¿Ã·È´ø ³»¿ëÀ» ±×´ë·Î ¿Ã¸° ³»¿ëÀε¥.. ±×¶§ ȯ°æÀÌ IE 3.0x ¹öÁ¯À̾úÁÒ.. 4.0ÀÌ µÇ¸é¼­ º¯ÇÏ°í 5.0ÀÌ ³ª¿À¸é¼­ ÀÌÂÊ ÀÎÁõºÎºÐÀÌ ¸¹ÀÌ º¯ÇØ Å×½ºÆ® ÀÎÁõÀ» ÇÒ ¼ö ÀÖ´Â ¹æ¹ýµµ Á¶±Ý º¯Çß´õ±º¿ä.. ¾Æ·¡¿Í °°Àº Â÷·Ê´ë·Î ÇÏ½Ã¸é º£¸®»çÀο¡¼­ µ·ÁÖ°í Å°¸¦ ¹ÞÁö ¾Ê´õ¶óµµ Å×½ºÆ®´Â Çغ¸½Ç ¼ö ÀÖ½À´Ï´Ù.. ¹°·Ð, ½Ç ¼­ºñ½º½Ã¿¡´Â ¹Ýµå½Ã º£¸®»çÀο¡¼­ Å°¸¦ ¹ÞÀ¸½Ã´Â°Ô ÁÁ½À´Ï´Ù.. »ç¿ëÀÚµéÀÌ ½Å·Ú¸¦ ¾ÈÇØÁִϱî¿ä.. ¾Æ·¡ÀÇ 0~5¹ø ÀÛ¾÷À» À§ÇØ ÇÊ¿äÇÑ ÆÄÀϸ¸ ´Ù¿î·Îµå ¹Þ±â (´Ù¿î·Îµå) ´Ù¿î·Îµå ¹ÞÀº ÆÄÀÏÀ» Ç®¾î ÇÑ Æú´õ¿¡ º¹»çÇØµÎ°í µµ½ºÃ¢ ¿­¾î¼­ ÀÛ¾÷ÇÏ¸é µË´Ï´Ù.. ¾Æ·¡ ³»¿ëÀ» ÇÁ·ÒÇÁÆ®¿¡ ÀÔ·ÂÇϼ¼¿ä.. 0. root.cer¸¦ »ç¿ëÇÏ¿© ÄÚµå»çÀÌ´× Çϴ ȯ°æÀ» ¸¸µç´Ù. setreg 1 true 1. *.pvk, *.cer ÆÄÀÏÀ» ¸¸µç´Ù. MakeCert -sv madchick.pvk -n "CN=¹ÌÄ£º´¾Æ¸®" madchick.cer 2. *.spc ÆÄÀÏÀ» ¸¸µç´Ù. cert2spc root.cer madchick.cer madchick.spc 3. *.cab ÆÄÀÏÀ» ¸¸µç´Ù. cabarc -s 6144 N madchick.cab *.exe 4. ÄÚµå»çÀÌ´×À» ÇÑ´Ù. (ÇÑÁÙ·Î Á× À̾ ÀÔ·ÂÇϼ¼¿ä..) signcode -spc madchick.spc -v madchick.pvk -n "CodeSign Å×½ºÆ®" -i http://www.madchick.com madchick.cab 5. ÄÚµå»çÀÌ´×ÀÌ Àß µÇ¾ú´ÂÁö È®ÀÎÇÑ´Ù. chktrust madchick.cab 5¹ø ½ÇÇà½Ã ½ÇÁ¦ À¥ºê¶ó¿ìÀú¿¡¼­ º¼ ¼ö ÀÖ´Â ÀÎÁõ¼­ È­¸éÀÌ ³ªÅ¸³³´Ï´Ù.. ¹°·Ð, Å×½ºÆ® º¸Áõ¼­¶ó°í ¼±¸íÇÏ°Ô ÂïÇô ³ª¿ÀÁÒ.. ÈêÈê.. ¿©±â¿¡ »ç¿ëµÈ ÅøµéÀº IE 4¿ëÀ» »ç¿ëÇß°í¿ä.. (´Ù¿î·Îµå) °ü·Ã ÀÚ·áµéÀº MSDN ¶óÀ̺귯¸® CD³ª MS À¥»çÀÌÆ®ÀÇ MSDN OnLine ¿¡¼­ makecert·Î °Ë»öÇغ¸½Ã¸é °ü·Ã ¾ÆƼŬµéÀ» ¸¹ÀÌ Ã£¾Æº¸½Ç ¼ö ÀÖ½À´Ï´Ù.. ƯÈ÷ makecert ºÎºÐÀº Á¦°¡ »ç¿ëÇÑ ¹æ¹ý ÀÌ¿Ü¿¡ °æ¿ì¿¡ µû¶ó ´Ù¾çÇÑ ¹æ¹ýÀ» Áö¿øÇØ ÁֹǷΠÁ÷Á¢ ã¾Æº¸½Ã´Â°Ô ¸¹Àº µµ¿òÀÌ µÇ½Ç °Ì´Ï´Ù.. »õÇØ º¹¸¹ÀÌ ¹ÞÀ¸¼¼¿ä.. ------------------------------------------------------------------------------ ¾È³çÇϼ¼¿ä.. ¹ÌÄ£º´¾Æ¸® ¼­ºñ¿©¿ä.. ¹Ø¿¡ Á¦°¡ ¿Ã·È´ø (1259¹ø) °Ô½Ã¹°¿¡¼­ À߸øµÈ Á¡ÀÌ ¹ß°ßµÇ¾î ´Ù½Ã ¿Ã¸³´Ï´Ù. µ¨3¸¦ »ç¿ëÇϽô ºÐµéÀº ¾Æ¹«·± ¹®Á¦¾øÀÌ Á¦´ë·Î ÄÄÆÄÀÏ µÇÁö¸¸, µ¨4¿¡¼­´Â IObjectSatetyÀÇ ¼±¾ðºÎ ¼Ò½º°¡ º¯°æµÇ´Â °ü°è·Î ±¸Çö½Ã ¸Þ½îµå ¿ø Çü ºÎºÐÀÌ ¾à°£ º¯°æµÇ¾î¾ß ÇÕ´Ï´Ù.. ¾î´ÀºÐ²²¼­ º¸³»ÁֽŠÁú¹® ¸ÞÀÏÀ» ¹Þ¾Æº¸°í¼­¾ß µ¨4¿¡¼­´Â ÄÄÆÄÀÏÀÌ µÇÁö ¾Ê ´Â ´Ù´Â »ç½ÇÀ» ¾Ë°ÔµÇ¾î ÀÌÁ¦¼­¾ß ¼öÁ¤³»¿ëÀ» ¿Ã¸³´Ï´Ù.. ±×°£ Ȥ Á¦±Û·Î °í»ýÇϽŠºÐµéÀÌ °è½Ã´Ù¸é »ç°úµå¸³´Ï´Ù.. Áö°¡ ¿äÁò¿£ ActiveX ÄÁÆ®·Ñ °³¹ß¿¡ µ¨ÆÄÀ̸¦ »ç¿ëÀ» ¾ÈÇϰɶû¿ä.. ActiveX ÄÁÆ®·Ñ °³¹ß¿¡´Â VC++ÀÌ °¡Àå ÀûÇÕÇÏ´Ù´Â °ÍÀÌ Á¦ °³ÀÎÀûÀÎ ÀÇ°ßÀÌ¶ó ¼­¸®.. ³È.. ¸î¹éÀ̳ª µÇ´Â Á¶È¸¼ö¿´Áö¸¸ Áú¹®À» ÇØÁֽŠºÐÀÌ ±×°£ ÇѺйۿ¡ ¾È°è½Å°ÍÀ¸·Î ºÁ¼­´Â °³ÀÎÇнÀ¿ë ÀÌ¿Ü¿¡, ActiveX ÄÁÆ®·Ñ °³¹ßÀ» ½Ç ¼­ºñ½º À¥¼­¹ö¿¡¼­ ¹è Æ÷ÇÏ´Â ½Ç¹«¿ëÀ¸·Î ÇϽô ºÐµéÀº ¾ó¸¶ ¾ÈµÇ½Ã´Â °Í °°±º¿ä.. µ¨3¸¦ »ç¿ëÇϽðųª ´Ù¸¥ °³¹ßÅøÀ» »ç¿ëÇϽðųª.. ¾Æ´Ô ActiveX º¸´Ù´Â ÀÚ¹Ù ¸¦ »ç¿ëÇϽô ºÐµéÀÌ ¸¹°Å³ª.. ¾Æ¹«Æ° º¯°æµÈ ³»¿ëÀº µ¨3¿¡¼­´Â ¾Æ·¡¿Í °°¾Ò½À´Ï´Ù.. function ObjectSafetyGetInterfaceSafetyOptions(riid:TIID ; var dwSupportedOptions:DWORD ; var dwEnabledOptions:DWORD) : HResult ; stdcall; function ObjectSafetySetInterfaceSafetyOptions(riid:TIID ; dwOptionsSetMask:DWORD ; dwEnabledOptions:DWORD) : HResult ; stdcall; ±×·±µ¥ ¿ä°³ ¼Ò½º¸¦ µÚÁ®ºÃ´õ´Ï.. function ObjectSafetyGetInterfaceSafetyOptions(const IID: TIID; pdwSupportedOptions, pdwEnabledOptions: PDWORD): HResult; stdcall; function ObjectSafetySetInterfaceSafetyOptions(const IID: TIID; dwOptionSetMask, dwEnabledOptions: DWORD): HResult; stdcall; ¿ä·¸°Ô º¯°æÀÌ µÇ¾ú´õ¶õ ¸»ÀÔ´Ï´Ù.. µû¶ó¼­ ÇÔ¼ö ¿øÇüÀ» µ¨4ÀÇ activex.pas¿¡ Á¤ÀÇµÈ ´ë·Î ¸ÂÃçÁà¾ß Á¦´ë·Î ÄÄÆÄ ÀÏÀÌ µË´Ï´Ù.. ¾ÆÁ÷±îÁö´Â µ¨5¸¦ »ç¿ëÇÒ Çʿ並 ¸ø´À²¸ Áö°¡ µ¨5°¡ ¾ø´Â °ü °è·Î µ¨5¿¡¼­ Å×½ºÆ®´Â ¸øÇغÃÁö¸¸ º¯°æµÇ¾îºÁ¾ß ¿ª½Ã ´Ù½Ã activex.pas¿¡¼­ IObjectSafety ÀÎÅÍÆäÀ̽º Á¤ÀǺθ¦ ã¾Æ ¸ÂÃçÁÖ¸é µÇ¸®¶ó »ý°¢ÇÕ´Ï´Ù.. ¾Æ·¡ ±ÛÀº ¿ø °Ô½Ã¹°¿¡¼­ ¼öÁ¤ÇÒ ºÎºÐ¸¸ ¼öÁ¤ÇÏ¿© ´Ù½Ã ¿Ã¸° ³»¿ëÀÔ´Ï´Ù.. ±×°£ÀÇ ActiveX ÄÁÆ®·Ñ °³¹ß°ü·Ã º¯°æ»çÇ×À¸·Î´Â CodeSign ÅøÀÇ IE5¿ëÀÌ »õ·Î ³ª¿Ô´Ù´Â Á¡.. IE5¿ë CodeSign ÅøÀ» »ç¿ëÇϸé ÀÎÁõ¼­¿¡ º¸´Ù ¸¹Àº ³»¿ëÀÌ µé¾î°¡°Å³ª º¸¾ÈÂÊ ÀÌ °­È­‰çÀ» °ÍÀ¸·Î ¿©°ÜÁö´Âµ¥ (¸ð¸£ÁÒ.. ¶Ç M$ ¾ÖµéÀÌ Àß ÇÏ´Â ¹éµµ¾î°¡ µé ¾î°¬´ÂÁö..) ¹®Á¦´Â IE5¿ëÀ¸·Î CodeSignÀ» Çϸé IE 4.x »ç¿ëÀÚµéÀº ÇöÀç º¸¾È ¼³Á¤À¸·Î´Â ÀÌ ActiveX ÄÁÆ®·ÑÀ» ½ÇÇàÇÒ ¼ö ¾ø´Ù´Â Ȳ´çÇÑ ¿¡·¯¸Þ½ÃÁö¸¦ º¸ÀÌ ¸ç ½ÇÇàÀÌ ¾ÈµÇ¾î ¹ö¸³´Ï´Ù.. IE ¸¶Àúµµ ¹öÁ¯Ã¼Å©ÇÏ¿© ´Ù¸¥ CAB ÆÄÀÏÀ» ´Ù¿î·Îµå ¹Þµµ·Ï ÇÏ´Â ASP ÄÚµùÀ» ÇÏ´À´Ï IE4¿ë CodeSign Åø·Î CodeSign Çؼ­ ¹èÆ÷ÇÏ´Â°Ô ¼ÓÆíÇÑ ÇØ°áÃ¥ÀÔ´Ï´Ù. IE4¿ëÀ¸·Î CodeSignÀ» Çصµ IE5¿¡¼­´Â Á¦´ë·Î Àß µ¿À۵˴ϴÙ.. 1999³âµµ 8¿ùÀÇ ¸¶Áö¸· ³¯¿¡.. -------------------------------------------------------------------------- ¾È³çÇϼ¼¿ä.. ¹ÌÄ£º´¾Æ¸® ¼­ºñ¶ó°í ÇÕ´Ï´ç.. Áö³­ 4¿ù°æ¿¡ µ¨ÆÄÀÌ Q&A °Ô½ÃÆÇ¿¡ ¿Ã·È´ø ±ÛÀε¥.. °­Á¶õ¿¡ ºñ½ÁÇÑ ±ÛÀÌ ¿Ã¶ó¿Í¼­ °°ÀÌ Âü°íÇϽöó°í ¿Å°Ü ¿Ã¸³´Ï´Ù.. ActiveX ÄÁÆ®·ÑÀ» À¥¿¡ ¿Ã¸±¶§ óÀ½¿£ Â¥Áõ³ª´Â ÀϵéÀÌ Á» Àִµ¥.. ´Ù¸¥ ºÐ µéÀº ¹Ø¿¡±Û°ú Á¦±ÛÀ» Âü°íÇÏ½Ã¾î ¾µµ¥¾ø´Âµ¥ ½Ã°£ ¸¹ÀÌ ÅõÀÚ ¾ÈÇϽñæ.. ¾Æ·¡ Âü°íÇÒ À¥»çÀÌÆ® ÁÖ¼Ò´Â ÇöÀç Á¢¼ÓÀÌ ¾ÈµÉ ¼ö ÀÖ½À´Ï´Ù.. ¿ö³«¿¡ ÀÚÁÖ µÚÁý¾î ¾þ±â·Î À¯¸íÇÑ M$ÀÇ À¥»çÀÌÆ®´Â ¾î¶² ³»¿ë¿¡ ´ëÇÑ URLµµ ¼ö½Ã·Î ¹Ù²î´Â ¹Ù¶÷¿¡ ÂüÁ¶¹®ÇåÀ¸·Î ³Ö±â°¡ »ó´çÈ÷ ²¨·ÁÁö´Âµ¥, ÀÏ´ÜÀº ³Ö¾î ºÃ½À´Ï´Ù.. ÇÏÁö¸¸ ¹Ù²î¾ú´Ù°í, ÇØ´ç ³»¿ëÀ» º¼ ¼ö ¾ø´Ù°í Àú¸¦ ¿ø¸Á ¸¶½Ã±æ.. -------------------------------------------------------------------------- ActiveX ÄÁÆ®·Ñ º¸¾È¹®Á¦·Î Á» Ȳ´çÇØ ÇϽô °Í °°¾Æ Á¦ °æÇèÀÌ Á» µµ¿òÀÌ µÉ±îÇؼ­ ¸îÀÚ Àû½À´Ï´Ù.. Àü °³¹ßÀÚ°¡ ÀÌ·± ȯ°æ¸ÂÃߴµ¥ ½Ã°£ »©¾Ò±â´Â °Íº¸´Ù ÇÁ·Î±×·¥ ÀÚü ¹× ¿ø¸® ±¸Çö¿¡ ¸¹Àº ½Ã°£À» ÅõÀÚÇÏ´Â°Ô È¿À²ÀûÀ̶ó »ý°¢Çϱ⠶§¹®¿¡.. ÀÏ´Ü ActiveX ÄÁÆ®·ÑÀº µÎ°¡Áö ¿ëµµ·Î »ç¿ëµÉ ¼ö°¡ ÀÖÁö¿ä.. ù¹ø°´Â, ´Ù¸¥ ¾îÇø®ÄÉÀ̼ÇÀÌ ÄÁÅ×À̳ʷμ­ ActiveX ÄÁÆ®·ÑÀ» ƯÁ¤±â´ÉÀ» Á¦°øÇÏ´Â ¼­¹ö·Î »ç¿ëÇÏ´Â ¸ñÀûÀ¸·Î Á¦ÀÛµÉ ¼öµµ ÀÖ°í µÎ¹ø°·Î, ÀÎÅͳÝÀ» ÅëÇØ ActiveX ÄÁÆ®·ÑÀ» º¸¿©ÁÙ ¼ö ÀÖ´Â À¥ºê¶ó¿ìÀú(ÁÖ·Î IE°¡ µÇ°ÚÁÒ)¿¡¼­ µ¿ÀÛÇϵµ·Ï ÇÏ´Â °ÍÀÌ µÎ¹ø°°í¿ä.. ´ëºÎºÐÀº IE¸¦ À§ÇÑ ÄÄÆ÷³ÍÆ®°¡ µÉ °ÍÀÌ°í, ¶ÇÇÑ ´ëºÎºÐÀÇ °æ¿ì 2°¡Áö °æ¿ì ±¸ºÐ¾øÀÌ Çѹø Á¦ÀÛÇÏ¸é µÎ°¡Áö ¿ëµµ ¸ðµÎ·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.. Çåµ¥ À¥¼­¹ö¿¡ ¿Ã·ÁµÎ°í ´Ù¸¥ »ç¿ëÀÚµéÀÌ ÀÌ ÄÄÆ÷³ÍÆ®¸¦ ¹Þ¾Æ ½ÇÇàµÇµµ·Ï ÇÏ ´Âµ¥ óÀ½ Á¢ÇÏ´Â °É¸²µ¹ÀÌ º¸¾È¹®Á¦ ÀÔ´Ï´Ù.. 2°¡Áö º¸¾È°ü·Ã ¸Þ½ÃÁö ¹Ú½ºµéÀÌ ³ªÅ¸³ª°Ô µÇ´Âµ¥ ù¹ø°´Â ÀÌ ÄÁÆ®·Ñ ÀÚü°¡ ½Å·Ú¼º ÀÖ´Â Á¦ÀÛ»ç ¶Ç´Â °³¹ßÀÚ°¡ ¸¸µé¾ú´ÂÁö¸¦ üũÇÏ´Â °ÍÀÌ°í¿ä µÎ¹ø°´Â À» ÅëÇØ ActiveX ÄÁÆ®·Ñ¿¡ Àμö¸¦ ³Ñ±â´Â °æ¿ì¿Í °°ÀÌ ActiveX ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡ ¾ÈÀüÇÑ ½ºÅ©¸³Æ® »ç¿ëÀÎÁö¸¦ È®ÀÎÇÏ´Â °ÍÀÌÁÒ.. ù¹ø°ÀÇ °æ¿ì´Â code signingÀ» ÅëÇØ ¾ÈÀü¼ºÀ» º¸Àå¹ÞÀ» ¼ö ÀÖÀ¸¸ç ÀÌ °úÁ¤ À» °ÅÄ¡Áö ¾ÊÀº ÄÁÆ®·ÑÀº º¸¾È¼³Á¤ÀÇ ³·À½ ÀÌÇÏ¿¡¼­¸¸ º¼ ¼ö ÀÖ½À´Ï´Ù.. ¸ðµç »ç¿ëÀڵ鿡°Ô ÀÌ ÄÁÆ®·ÑÀ» º¸·Á¸é º¸¾È¼³Á¤À» ³·À½À¸·Î ³»·Á¶ó.. À½.. ÀÌ·¡¼± °ï¶õÇÏÁÒ.. code signingÀ» ÇÏ·Á¸é ¹Ì±¹ÀÇ Veri SignÀ̶ó´Â ȸ»ç·ÎºÎÅÍ °ü·Ã Å°¸¦ Á¦°ø ¹Þ¾Æ¾ß ÇÕ´Ï´Ù.. Àϳ⿡ 400ºÒÀ̳ª Çϴµ¥ ÀÌ È¸»ç´Â À̰͸¸À¸·Îµµ ¾É¾Æ¼­ ¶§ µ· ¹ú°í ÀÖÀ»µí ÇÕ´Ï´Ù.. ±×·¸´Ù¸é ½ÃÇè¿ëÀ̳ª °³ÀÎ °³¹ßÀÚµéÀº ¹Ýµå½Ã ÀÌ ºñ¿ëÀ» µé¿©¾ß °³¹ßÀÌ °¡´É ÇÑ°¡.. ±×·¸Áö´Â ¾Ê½À´Ï´Ù.. MS¿¡¼­ ÀÌ¿Í °ü·ÃµÈ ÅøµéÀ» ¸ðµÎ Á¦°øÇÏ°í ÀÖ½À ´Ï´Ù.. VC++À̳ª VJ++ÀÇ CD¿¡ Æ÷ÇԵǾî ÀÖ°í¿ä (¾Æ¸¶µµ cab & sign ¹¹.. ÀÌ·± Á¤µµÀÇ À̸§ÀÇ Æú´õ¿¡ µé¾îÀÖÀ» °Ì´Ï´Ù..) MS ȨÆäÀÌÁö¿¡¼­ ´Ù¿î ¹ÞÀ» ¼ö ÀÖ ´Â InetSDK¸¦ ¼³Ä¡ÇÏ½Ã¸é ±× ¾È¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.. Á¦ °³ÀÎÀûÀÎ »ý°¢À¸·Ð InetSDK¸¦ ¼³Ä¡ÇÏ´Â°Ô ÁÁÀ» °Í °°³×¿ä.. Âü°íÇÒ ¸¸ÇÑ »ùÇà ¹× µµÅ¥¸àÆ®°¡ ¸¹¾Æ¼­ 80¸Þ°¡ Á¤µµÀÇ ¿ë·®ÀÌ ¾Æ±õÁö ¾ÊÀ» °Ì´Ï´Ù.. ¹æ¹ýÀº °ü·Ã µµÅ¥¸àÆ®¿¡ ¸ðµÎ Æ÷ÇԵǾî Àִµ¥ °£·«È÷ Á¤¸®Çϸé (http://www.microsoft.com/workshop/components/activex/packaging.htm Âü Á¶) ¾Æ·¡¿Í °°½À´Ï´Ù.. À¥ ȯ°æ¿¡¼­´Â ´ëºÎºÐÀÇ ActiveX ÄÁÆ®·ÑµéÀº CAB ÆÄÀÏ¿¡ ¹­¿© ³»·Á°¡°Ô µÇ´Â µ¥ ÀÌ CAB ÆÄÀÏ¿¡ signingÀ» ÇØÁÖ¸é µÇÁÒ.. (¿Ö³Ä ¸¸µé´Ùº¸¸é ActiveX ÄÁÆ®·Ñ ÀÚüÀÎ OCX ÆÄÀϸ¸ ÇÊ¿äÇÑ °ÍÀÌ ¾Æ´Ï¶ó °ü·Ã DLL µî ¿©·¯ ÆÄÀϵéÀÌ °°ÀÌ ³»·Á °¡¾ßÇÏ´Â °æ¿ì°¡ ¸¹À¸¹Ç·Î..) º£¸®»çÀλç·ÎºÎÅÍ Á¤½Ä »çÀÎÅ°¸¦ ¹Þ¾Ò´Ù¸é ¾Æ·¡¿¡¼­ ÀÎÁõÄÚµå ¸¸µé±â ºÎºÐ¸¸ ³Ñ¾î°¡¸é µË´Ï´Ù.. 1. INF ÆÄÀÏ ¸¸µé±â.. CAB ÆÄÀϳ»ºÎ¿¡ °°ÀÌ ¾ÐÃàµÈ ÆÄÀϵéÀ» ¾î¶»°Ô ¼³Ä¡ÇÒ °ÍÀΰ¡¸¦ ±â¼úÇÏ´Â ÆÄÀÏ ÀÔ´Ï´Ù.. ´ëÃæ ¾Æ·¡¿Í °°ÀÌ »ý°å½À´Ï´Ù.. ÀÚ¼¼ÇÑ°ÍÀº MSDNÀ» µÚÁ®º¸¸é ÀÛ¼º¹ý ÀÌ ³ª¿É´Ï´Ù.. ¾Æ·¡ÀÇ ³»¿ëÀº Á¦°¡ VC++ÀÇ MFC¸¦ ÀÌ¿ëÇÏ¿© ¸¸µç ÄÁÆ®·ÑÀÇ °æ¿ì·Î MFC Shared DLL ŸÀÔÀ¸·Î ¸¸µç °æ¿ì¶ó MFC °ü·Ã DLLÀ» ³»·Á º¸³»¾ß ÇÏ´Â ºÎºÐÀÌ Æ÷ÇԵǾî Àִµ¥.. µ¨ÆÄÀÌ »ç¿ëÀÚµéÀº À̸¦ ¹«½ÃÇϼŵµ µË´Ï´Ù.. ´Ü, ÀÌ ÆÄÀÏÀº OCX ÀÚü¸¸ ³»·Á°¡Áö ¾Ê°í ¿©·¯ ÆÄÀϵéÀ» °°ÀÌ ³»·Áº¸³»¾ß ÇÏ ´Â °æ¿ì CAB ÆÄÀÏ·Î ¾î¶»°Ô ¹­À» °ÍÀÌ¸ç ±×¿¡ ´ëÇÑ ¼³Ä¡ ¿É¼ÇÀ» ¾î¶»°Ô ÁöÁ¤ ÇØ¾ß ÇÏ´ÂÁö¸¦ º¸¿©ÁÖ±â À§ÇÑ ¿¹ÀÔ´Ï´Ù.. OCX ÆÄÀÏ Çϳª¸¸À¸·Îµµ µ¿ÀÛÇÏ´Â °æ¿ì´Â INF ÆÄÀÏÀÛ¼º ¹× CAB ÆÄÀÏ ÀÛ¼ºÀÌ ÇÊ ¿ä ¾øÀ» ¼öµµ ÀÖÁö¸¸.. ¿£µåÀ¯Àú°¡ ´Ù¿î ¹ÞÀ» »çÀÌÁî°¡ ÀÛ¾ÆÁö¹Ç·Î ±ÇÀåÇÏ´Â ¹ÙÀÔ´Ï´Ù.. [version] signature="$CHICAGO$ AdvancedINF=2.0 [Add.Code] mfc42.dll=mfc42.dll msvcrt.dll=msvcrt.dll olepro32.dll=olepro32.dll ocxpuz.ocx=ocxpuz.ocx [msvcrt.dll] FileVersion=4,20,0,6164 hook=mfc42installer [mfc42.dll] FileVersion=4,2,0,6256 hook=mfc42installer [olepro32.dll] FileVersion=4,2,0,6068 hook=mfc42installer [mfc42installer] file-win32-x86=http://www.daul.co.kr/cabs/mfc/mfc42.cab run=%EXTRACT_DIR%\mfc42.exe [ocxpuz.OCX] file-win32-x86=thiscab clsid={BAF2FC47-C978-11D1-94F7-0060973B7B3C} RegisterServer=yes FileVersion=1,0,0,9 DestDir=11 2. ÀÎÁõÄڵ带 ¸¸µì´Ï´Ù.. 1. wvtstoff.reg, wvtston.reg ÆÄÀÏÀÌ ÀÖ´ÂÁö È®ÀÎ (¾øÀ¸¸é wvtston.reg¸¦ Ä«ÇÇÇؼ­ wvtstoff.reg¸¦ ¸¸µë.. Àú°°Àº °æ¿ì´Â cabdevkit.exe¿Í codesignkit.exe¸¦ ¼³Ä¡ÇÏ´Ï wvtstoff.reg ÆÄÀÏÀÌ ¾ø´õ±º¿ä.. ÀÌ ÆÄÀÏÀÌ ¾øÀ¸´Ï ¾Æ·¡ 2¹øÀÌ ½ÇÇàÀÌ ¾ÈµÇ°í Çؼ­.. wvtston.reg ±×³É º¹»çÇÏ°í rename½ÃÄÑ »ç¿ëÇߴµ¥.. Àß µÇ´õ±¸¸¸¿ä..) 2. setreg 1 true ¸¦ ½ÇÇà ¿ä°Ô ¹¹Çϴ°ÇÁö´Â À§¿¡¼­ ¾ð±ÞÇÑ À¥»çÀÌÆ®¿¡ ÀÚ¼¼È÷ ¼³¸íÀÌ µÇ¾î ÀÖÀ¸´Ï Âü°í.. (»ç½Ç Àúµµ Àß ¸ô¶ó¿ä..) 3. makecert -u:mykey -n:CN=mysoftwarecompany cert.cer *.cer ÆÄÀÏÀ» ¸¸µå´Â °úÁ¤ÀÔ´Ï´Ù.. makecert -u:daulcs -n:CN=DaulSoft daulsoft.cer Áö´Â ¿ä·¸°Ô ÇßÁö¿ä.. 4. cert2spc root.cer cert.cer cert.spc À§¿¡¼­ ¸¸µç *.cer ÆÄÀÏ·Î *.spc ÆÄÀÏÀ» ¸¸µå´Â ¹æ¹ýÀÔ´Ï´ç.. root.cer ÆÄÀÏÀº cabdevkit.exe, codesignkit.exe ¼³Ä¡½Ã »ý±é´Ï´Ù.. cert2spc root.cer daulsoft.cer daulsoft.spc ¿ä·¸°Ô ÇÏ¸é µÇÁö¿ä.. 3. CAB ÆÄÀÏ ¸¸µé±â.. À§¿¡¼­ ¸¸µç inf ÆÄÀÏ°ú ÇÊ¿äÇÑ ¸ðµç ÆÄÀϵéÀ» ¸ðÁ¶¸® Çѵ¥ ¸ð¾ÆµÎ°í cab ÆÄÀÏ·Î ¹­½À´Ï´Ù.. ¾Æ·¡´Â Á¦°¡ CAB ÆÄÀÏ·Î ¹­°í ÄÚµå»çÀÌ´×À» Çϱâ À§ÇØ »ç¿ëÇÏ´Â ¹èÄ¡ÆÄÀÏÀÇ ³»¿ëÀÔ´Ï´Ù.. À̸§ÀÌ makecab.bat À̶ó°í ÇսôÙ.. ¸ðµÎ 3ÁÙÂ¥¸® Àε¥.. µé¿©¾²±â¸¦ ÇÑ ºÎºÐÀÌ À§ÀÇ ¶óÀο¡¼­ °è¼Ó À̾îÁö´Â ³» ¿ëÀÔ´Ï´Ù.. @echo off d:\dev\cab\devkit\cabarc -s 6144 N d:\cyberschool\www\CyberClass.cab d:\cyberschool\dist\*.* d:\dev\cab\devkit\signcode -prog d:\cyberschool\www\CyberClass.cab -spc daulsoft.spc -pvk daulcs makecab.bat ÆÄÀÏÀÌ daulsoft.spc ÆÄÀÏÀº °°Àº Æú´õ¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù.. ¾Æ´Ï¸é daulsoft.spc ±â¼ú½Ã Ç® Æнº·Î ±â¼úÀ» ÇØÁà¾ß ÇÏ°ÚÁÒ.. -s 6144´Â ÄÚµå»çÀÎÀ» ÇÒ °÷À» ¸í½ÃÇØÁÖ´Â °ÍÀε¥.. ¿¹Á¦·Î ³ª¿Â -s 6144¸¦ ±×´ë·Î »ç¿ëÇß½À´Ï´Ù.. ÄÚµå»çÀÎ http://www.microsoft.com/workshop/security/authcode/authenticode.htm#ch_ codesign ÂüÁ¶ http://www.microsoft.com/workshop/security/authcode/signing.htm ÂüÁ¶ ¶Ç´Â http://www.verisign.com/developers/whitepapers/authenticode/index.html ÂüÁ¶ 4. À¥¼­¹ö¿¡ ¿Ã¸®±â.. * ¾Æ·¡¿¡ ºñÁÖ¾ó º£ÀÌÁ÷ ½ºÅ©¸³Æ®´Â À¥ºê¶ó¿ìÀúÀÇ Á¾·ù¸¦ ¾Ë¾Æ³»°í ³×Æ®½ºÄÉÀÌÇÁÀÎ °æ¿ì´Â ¾È³»¹®À» º¸¿©ÁÖ±â À§ÇÑ ÄÚµåÀÔ´Ï´Ù.. ¹°·Ð NTÇÏ¿¡ À¥¼­¹ö¸¦ IIS¸¦ »ç¿ëÇÒ¶§¸¸ °¡´ÉÇÏ°ÚÁÒ.. (ÂÞ¾Ð.. ¿ØÀÏÀÎÁö Object űװ¡ µé¾î°¡¸é pre ű׸¦ »ç¿ëÇߴµ¥µµ À¥ºê¶ó¿ìÀú°¡ Á¦´ë·Î »Ñ·ÁÁÖÁú ¸øÇÏ´Â ±º¿ä.. ¾î¿¼ö ¾øÀÌ ÁÖ¼®Ã³¸®·Î.. Á¦°¡ Á» ´õ ½Ç·ÂÀ» ½×¾Æ ÀÌ ºÎºÐ±îÁö ó¸®ÇÏ´Â ASP Äڵ带 ÀÛ¼ºÇϱâ Àü¿£.. ÀÌ ºÎºÐÀº À¥ºê¶ó¿ìÀú¿¡¼­ ¼Ò½ºº¸±â·Î ºÁÁÖ¼¼¿ä.. ±â¶÷..) 5. ÁÖÀÇ»çÇ× 1. OCXÀÇ ¹öÀü°ú CAB ÆÄÀÏÀÇ ¹öÀü (Á¢¼ÓÇÏ´Â HTML ¹®¼­¿¡ OBJECT ű׿¡¼­ CODEBASE ÆĶó¹ÌÅÍÀÇ CAB ÆÄÀÏ ¿·¿¡ ±â¼úÇØÁØ ¹öÀü ¼ýÀÚ)ÀÌ ÀÏÄ¡ÇÏÁö ¾ÊÀ¸ ¸é °°Àº ÆäÀÌÁö¿¡ Àç Á¢¼Ó½Ã ´Ù¿îÀÌ µÇÁö ¾Ê´Â´Ù´ø°¡, Á¢¼ÓÇÒ¶§ ¸¶´Ù Ç×»ó ´Ù¿î ÇÏ·Á´Â »óȲÀÌ ¹ß»ýÇÕ´Ï´Ù.. Àß ¸ÂÃß¼Å¾ß ÇÕ´Ï´Ù.. 2. IE 3.0X¸¦ À§ÇÑ »çÀÌ´× ¹æ¹ý°ú IE 4.0X¸¦ À§ÇÑ ¹æ¹ýÀÌ Æ²¸³´Ï´Ù.. ¾ÆÁÖ °³¹ßÀÚ °³ ³ë°¡´Ù ½ÃÅ°´Â MSÀε¥.. ¼ÓÆíÇÏ°Ô IE 4.x ÀÌ»ó¸¸ Áö¿øÇÏ´Â°Ô ÁÁ½À´Ï´Ù.. (°øÂ¥¶ó IE »ç¿ëÇÏ´Â »ç¶÷À̸é 90% ÀÌ»óÀÌ 4.x »ç¿ëÀÚµéÀ̹ǷÎ..) µÎ ¹öÁ¯ ¸ðµÎ °í·ÁÇÏ·Á¸é ¸Å¹ø ÄÁÆ®·Ñ ¹öÁ¯¾÷½Ã ¸¶´Ù Á» ¹Ù»ß ¿òÁ÷¿©¾ß ÇÏ °ÚÁÒ.. Á» ¸¹ÁÒ ?? ÈåÈå.. ¸î¹ø Çغ¸¸é Àͼ÷ÇØÁý´Ï´Ù.. µ¨ÆÄÀÌ¿£ Web Deployment Options¿Í Web Deployment ¸Þ´º°¡ ÀÖ¾î ÀÌ·± ÀÛ¾÷µéÀ» ºñ±³Àû °£´ÜÈ÷ ÇØÁֽô ÇÏÁö¸¸.. Àü ¼öÀÛ¾÷À¸·Î ÇÏ±æ ¼±È£ÇÏ´Â ÆíÀÌÁÒ.. ±ÛÀÌ ±æ¾îÁ³´Âµ¥.. µÎ¹ø°·Î´Â ¾Æ·¡¿Í °°ÀÌ ActiveX ÄÁÆ®·Ñ¿¡°Ô ÆĶó¹ÌÅÍ °ªÀ¸·Î ƯÁ¤°ªÀ» ³Ñ±â°í ½ÍÀ»¶§ Çϳª°¡ °É¸³´Ï´Ù.. (ÂÞ¾Ð.. ¿ØÀÏÀÎÁö Object űװ¡ µé¾î°¡¸é pre ű׸¦ »ç¿ëÇߴµ¥µµ À¥ºê¶ó¿ìÀú°¡ Á¦´ë·Î »Ñ·ÁÁÖÁú ¸øÇÏ´Â ±º¿ä.. ¾î¿¼ö ¾øÀÌ ÁÖ¼®Ã³¸®·Î.. Á¦°¡ Á» ´õ ½Ç·ÂÀ» ½×¾Æ ÀÌ ºÎºÐ±îÁö ó¸®ÇÏ´Â ASP Äڵ带 ÀÛ¼ºÇϱâ Àü¿£.. ÀÌ ºÎºÐÀº À¥ºê¶ó¿ìÀú¿¡¼­ ¼Ò½ºº¸±â·Î ºÁÁÖ¼¼¿ä.. ±â¶÷..) ÀÌ °æ¿ì IE´Â ActiveX ½ºÅ©¸³ÆÃÀ» »ç¿ëÇØ ActiveX ÄÁÆ®·Ñ¿¡°Ô °ªÀ» ³Ñ±â°Ô µÇ ´Âµ¥ ÀÌ °æ¿ì Á¦ÀÛµÈ ActiveX ÄÁÆ®·ÑÀÌ ½ºÅ©¸³Æ® ¾ÈÁ¤¼ºÀ» º¸ÀåÇÏ´Â Äڵ尡 µé¾î ÀÖÁö ¾Ê´Ù¸é ·ÎµùµÉ¶§ ¸¶´Ù º¸¾È°ü·Ã ¸Þ½ÃÁö ¹Ú½º°¡ ¶ß°Ô µË´Ï´Ù.. »ç¿ëÀڷμ­´Â ÇØ´ç ActiveX ÄÁÆ®·ÑÀ» º¼¶§ ¸¶´Ù ¸Þ½ÃÁö¹Ú½ºÀÇ 'È®ÀÎ'À» Ŭ¸¯ ÇØÁà¾ß Çϴ ¥ÁõÀÌ ³ª°í °³¹ßÀڷμ­´Â ¾î¶»°ÔÇϸé ÇÇÇØ°¥±î °í¹Î½º·´°Ô ÇÏ´Â »óȲÀÌÁÒ.. MS¿¡¼­´Â IObjectSafety ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ¸é ½ºÅ©¸³Æ® ¾ÈÀü¼ºÀÌ º¸ÀåµÈ´Ù °í Çϴµ¥ VC++ÀÇ MFC¿¡¼­¿Í µ¨ÆÄÀÌ¿¡¼­ ±¸ÇöÇÏ´Â ¹æ¹ý¿¡ ¸¹Àº Â÷ÀÌ°¡ ÀÖ´õ±º ¿ä.. µ¨ÆÄÀÌÂÊÀÌ ºñ±³Àû °£´ÜÇÕ´Ï´Ù.. ¹°·Ð Á¦°¡ ÀÛ¼ºÇÑ ÄÚµå´Â ÀÌ º¸¾È°ü·Ã ¸Þ½ÃÁö¸¦ ÇÇÇØ°¡±â À§Çؼ­¸¸ ÀÛ¼ºµÈ ÄÚµåÀ̹ǷΠ»±³¢/»Ç·Ï ¹æ¹ý¼º¿¡ °¡±õÁö¸¸ ¸Þ½ÃÁö´Â Àý´ë ¾È ³ª¿À´õ±º ¿ä.. ±×¸®°í Ãß°¡·Î µ¨ÆÄÀÌ¿¡¼­ paramÀ» ÅëÇØ °ªÀ» ³Ñ±â´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù.. ¸ÕÀú ¾Æ·¡¿Í °°ÀÌ ´ÙÁß»ó¼ÓÀ» ¹Þ´Â ºÎºÐ¿¡ IPersistPropertyBag°ú IObjectSafety¸¦ Ãß°¡¸¦ ½Ãŵ´Ï´Ù.. TExamScorX = class(TActiveForm, IExamScorX, IPersistPropertyBag, IObjectSafety) protected: ¿¡ ¾Æ·¡¿Í °°Àº ³»¿ëÀ» Ãß°¡ÇÕ´Ï´Ù.. // IPersistPropertyBag ±¸ÇöÀ» À§ÇÑ Ãß°¡ºÎºÐ.. // param ÅÂ±× ¿É¼ÇÀ» ÅëÇØ ActiveX ÄÁÆ®·Ñ·Î Á¤º¸Àü´ÞÀ» À§Çؼ­.. function IPersistPropertyBag.GetClassID = PersistPropBagGetClassID ; function IPersistPropertyBag.initNew = PersistPropBagInitNew ; function IPersistPropertyBag.Load = PersistPropBagLoad ; function IPersistPropertyBag.Save = PersistPropBagSave ; function PersistPropBagGetClassID(out classID : TCLSID) : HResult ; stdcall ; function PersistPropBagInitNew : HResult ; stdcall ; function PersistPropBagLoad(const pPropBag:IPropertyBag ; const pErrorLog:IErrorLog) : HResult ; stdcall ; function PersistPropBagSave(const pPropBag:IPropertyBag ; fClearDirty:BOOL ; fAveAllProperties:BOOL) : HResult ; stdcall ; // IObjectSafety ±¸ÇöÀ» À§ÇÑ Ãß°¡ºÎºÐ.. // ¾ÈÀüÇÏÁö ¸øÇÏ´Ù´Â º¸¾È¸Þ½ÃÁö¸¦ ³ª¿ÀÁö ¾Ê°ÔÇϱâ À§Çؼ­.. function ObjectSafetyGetInterfaceSafetyOptions(const IID: TIID; pdwSupportedOptions, pdwEnabledOptions: PDWORD): HResult; stdcall; function IObjectSafety.GetInterfaceSafetyOptions = ObjectSafetyGetInterfaceSafetyOptions ; function ObjectSafetySetInterfaceSafetyOptions(const IID: TIID; dwOptionSetMask, dwEnabledOptions: DWORD): HResult; stdcall; function IObjectSafety.SetInterfaceSafetyOptions = ObjectSafetySetInterfaceSafetyOptions ; // ÆĶó¹ÌÅÍ ³Ñ¾î¿À´Â °Í Å×½ºÆ®¸¦ À§ÇÑ º¯¼ö ÀÓÀÇ ¼±¾ð.. m_sServerIP : string ; ±×¸®°í ½ÇÁ¦ ±¸ÇöºÎ´Â ¾Æ·¡¿Í °°ÀÌ ÄÚµùÀ» ÇØÁÖ½Ã¸é µÇÁö¿ä.. // IPersistPropertyBagÀÇ methodµéÀÇ ±¸ÇöºÎ.. function TActiveFormX.PersistPropBagGetClassID(out classID : TCLSID) : HResult ; begin Result := S_OK ; end ; function TActiveFormX.PersistPropBagInitNew : HResult ; begin Result := S_OK ; end ; function TActiveFormX.PersistPropBagLoad(const pPropBag: IPropertyBag ; const pErrorLog:IErrorLog) : HResult ; var v : OleVariant ; begin if pPropBag.Read('ServerIP',v,pErrorLog)=S_OK then begin m_sServerIP := v ; end ; Result := S_OK ; end ; function TActiveFormX.PersistPropBagSave(const pPropBag:IPropertyBag ; fClearDirty:BOOL ; fAveAllProperties:BOOL) : HResult ; stdcall ; var v : OleVariant ; begin v := m_sServerIP ; pPropBag.Write('ServerIP',v) ; Result := S_OK ; end ; // IObjectSafetyÀÇ methodµéÀÇ ±¸ÇöºÎ.. function TActiveFormX.ObjectSafetyGetInterfaceSafetyOptions(const IID: TIID; pdwSupportedOptions, pdwEnabledOptions: PDWORD): HResult; stdcall; begin Result := S_OK ; end ; function TActiveFormX.ObjectSafetySetInterfaceSafetyOptions(const IID: TIID; dwOptionSetMask, dwEnabledOptions: DWORD): HResult; stdcall; begin Result := S_OK ; end ; PersistPropBagLoad¿Í Save ºÎºÐÀÌ paramÀ» ÅëÇØ ³Ñ°Ü¹ÞÀº °ªÀ» ³»ºÎ ÄÚµå ¿¡ ÀúÀåÇÏ´Â ¹æ¹ýÀÌ°í¿ä.. ³ª¸ÓÁö ºÎºÐÀÌ ÀÌ paramÀ» »ç¿ëÇÔÀ¸·Î½á ¹ß»ýµÇ ´Â °æ°í¸Þ½ÃÁö¸¦ ¾ø¾Ö±â À§ÇØ IObjectSafety ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â ºÎºÐÀÔ´Ï ´Ù.. ½ÇÁ¦ ÆĶó¹ÌÅÍ °ªÀ» ¹Þ´Â ºÎºÐ¸¸ »©°í´Â S_OK¸¦ ³Ñ±â´Â°Ô ÀüºÎÀÔ´Ï´Ù.. ¹°·Ð ½ÇÁ¦ °¢ ÀÎÅÍÆäÀ̽ºµéÀÇ ±¸ÇöÀº Á» ´õ º¹ÀâÇÏÁö¸¸.. ÀÌÁþ¸¸ ÇØÁ൵ ±×¸¸ ÀÌÁÒ.. ÀÌ ¹æ¹ý ÀÌ¿Ü¿¡ ·¹Áö½ºÆ®¸®¸¦ °Çµå¸®´Â ¹æ¹ýÀÌ ´õ Àִµ¥.. ¹¹.. ±»ÀÌ ·¹Áö½ºÆ®¸®¸¦ ´õ·´°Ô ¸¸µå´À´Ï Á¦°¡ ÄÚµù ¸îÁÙ ´õÇÏ°í ¸¶´Â°Ô ÁÁ°Ú ´Ù ½Í¾î¼­ Àú´Â ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù.. Á¦°¡ Å×½ºÆ®Çغ» °á°í·Î´Â ÀÎÅÍÆäÀ̽º¿Í ¸Þ½îµå¸¸ Á¸ÀçÇÏ°í S_OK ¸®ÅÏÇÏ´Â°Ô °íÀÛÀÌÁö¸¸ ÀÎÅÍ³Ý ÀͽºÇ÷η¯´Â ¾ÆÁÖ ÇູÇØ ÇÏ´õ±º¿ä.. Àý´ë °æ°í ¸Þ½ÃÁö ¾È »Ñ·Á ÁÝ´Ï´Ù..