<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>&#54764;&#47560;&#51032; &#45432;&#53944;</title>
    <link>http://jgh0721.springnote.com/pages</link>
    <description>&#54764;&#47560;&#51032; &#45432;&#53944;</description>
    <language>ko-KR</language>
    <item>
      <title>VMWare &#50752; WinDBG &#49444;&#51221; &#50672;&#46041;&#54616;&#44592;</title>
      <description>&lt;p style="MARGIN-LEFT: 2em;"&gt;VMWare &#51032; &#44032;&#49345;&#50868;&#50689;&#52404;&#51228;&#50752; WinDBG&#47484; &#50672;&#44208;&#54616;&#50668; &#52964;&#45328; &#46356;&#48260;&#44613;&#51012; &#49688;&#54665;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&#51456;&#48708;&#47932; : VMWare, WinDBG&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em;"&gt;VMWare &#51032; &#52964;&#45328; &#46356;&#48260;&#44613;&#51012; &#49688;&#54665;&#54624; &#44172;&#49828;&#53944; &#50868;&#50689;&#52404;&#51228; &#54616;&#46300;&#50920;&#50612; &#44396;&#49457; &#54200;&#51665;&#51012; &#49884;&#51089;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em;"&gt;&#54616;&#46300;&#50920;&#50612; &#52628;&#44032; - &#49884;&#47532;&#50620; &#54252;&#53944; &#52628;&#44032;&#47484; &#49440;&#53469;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em;"&gt;&#49884;&#47532;&#50620; &#54252;&#53944; &#50976;&#54805;&#51012;&amp;nbsp;&#45348;&#51076;&#46300; &#54028;&#51060;&#54532;&#47196; &#52636;&#47141;&#51012; &#49440;&#53469;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em;"&gt;&#45348;&#51076;&#46300; &#54028;&#51060;&#54532; &#54805;&#49885;&#51012; the end is a server, the other end is an application &#51004;&#47196; &#49444;&#51221; , I/O Mode &#45716; Yeild CPU on Poll &#51012; &#49440;&#53469;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em;"&gt;Guest OS &#50640; &#46356;&#48260;&#44536; &#48512;&#54021; &#49444;&#51221;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 4em;"&gt;= &#50952;&#46020; XP&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 6em;"&gt;boot.ini &#54028;&#51068; &#54200;&#51665;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 6em;"&gt;&#48512;&#54021; &#54637;&#47785; &#46244;&#50640; &lt;strong&gt;/debug /debugport=1 /baudrate=115200&lt;/strong&gt; &#51060;&#46972;&#45716; &#50741;&#49496;&amp;nbsp;&#52628;&#44032;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 4em;"&gt;= &#50952;&#46020; &#48708;&#49828;&#53440;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 6em;"&gt;bcdedit&amp;nbsp;&#47484;&amp;nbsp;&#51060;&#50857;&#54616;&#50668; &#54200;&#51665;, cmd &#47196; &#52964;&#47592;&#46300; &#52285; &#50676;&#44592;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 6em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em;"&gt;&amp;nbsp;WinDBG &#45800;&#52629;&#50500;&#51060;&#53080; &#46321;&#47197;&#51221;&#48372; &#49688;&#51221;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em;"&gt;WinDBG &#46244;&#51032; &#50741;&#49496;&#50640; &lt;strong&gt;-b -k com:pipe,port=\\.\pipe\&#51060;&#47492;,resets=0&lt;/strong&gt; &#51004;&#47196; &#49444;&#51221;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
      <pubDate>Mon, 17 Nov 2008 11:06:11 +0900</pubDate>
      <link>http://jgh0721.springnote.com/pages/2109898</link>
      <guid>http://jgh0721.springnote.com/pages/2109898</guid>
    </item>
    <item>
      <title>WinDBG &#47749;&#47161;&#50612; &#51068;&#46988;</title>
      <description>&lt;p&gt;&amp;nbsp;WinDBG &#51032; &#45796;&#50577;&#54620; &#47749;&#47161;&#50612; &#48516;&#47448; &#47784;&#51020;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em;"&gt;&#53960;&#45216;&#46412;&#47560;&#45796; &#44277;&#48512;&#54616;&#47732;&#49436; &#50629;&#45936;&#51060;&#53944;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;@ &#47749;&#47161;&#50612; &#44592;&#52488;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&#44592;&#48376; &#47749;&#47161;&#50612;&lt;/p&gt;
&lt;p&gt;G&lt;/p&gt;
&lt;p&gt;KB&lt;/p&gt;
&lt;p&gt;U&lt;/p&gt;
&lt;p&gt;BP&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&#49900;&#48380; &#44288;&#47144; &#47749;&#47161;&#50612;&lt;/p&gt;
&lt;p&gt;.sympath[+]&amp;nbsp;[&#44221;&#47196;]&lt;/p&gt;
&lt;p&gt;.symfix[+] [&#44221;&#47196;]&lt;/p&gt;
&lt;p&gt;.reload&lt;/p&gt;
&lt;p&gt;!sym noisy&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&#52636;&#47141; &#44288;&#47144; &#47749;&#47161;&#50612;&lt;/p&gt;
&lt;p&gt;x&lt;/p&gt;
&lt;p&gt;dd&lt;/p&gt;
&lt;p&gt;da&lt;/p&gt;
&lt;p&gt;du&lt;/p&gt;
&lt;p&gt;dt&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="MARGIN-LEFT: 2em;"&gt;&#12609; &#49900;&#48380; &#54056;&#53412;&#51648;&amp;nbsp;&#45236;&#47140;&#48155;&#44592; &#54856;&#54168;&#51060;&#51648;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 4em;"&gt;&lt;a href="http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx" title="http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx" class="external"&gt;Download Symbols Packages&lt;/a&gt;&amp;nbsp;&#50640;&#49436;&amp;nbsp;&#45236;&#47140;&#48155;&#44592;. &#52964;&#45328; &#46356;&#48260;&#44613;&#54616;&#47140;&#45716; OS&#51032; &#48716;&#46300; &#51333;&#47448;&#50640; &#46384;&#46972; (Free(Retail), Checked(Debug)) &#49440;&#53469;. &#45824;&#48512;&#48516;&#51032; &#44221;&#50864; Free &#48716;&#46300;&#47484; &#49440;&#53469;&#54616;&#47732; &#46120;.&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 4em;"&gt;&#46608;&#54620;, &#44033; OS&#50640; &#46384;&#46972;, &#49436;&#48708;&#49828; &#54057;&#50640; &#46384;&#46972; &#49900;&#48380; &#54056;&#53412;&#51648;&#45716; &#44033;&#44033; &#45796;&#47476;&#44172; &#51080;&#50612;&#50556;&#54632;.&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Mon, 17 Nov 2008 11:00:02 +0900</pubDate>
      <link>http://jgh0721.springnote.com/pages/2110214</link>
      <guid>http://jgh0721.springnote.com/pages/2110214</guid>
    </item>
    <item>
      <title>&#48260;&#44536;&#52404;&#53356; &#53076;&#46300; &#49444;&#47749;&#46308;...</title>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Mon, 17 Nov 2008 09:28:03 +0900</pubDate>
      <link>http://jgh0721.springnote.com/pages/2109890</link>
      <guid>http://jgh0721.springnote.com/pages/2109890</guid>
    </item>
    <item>
      <title>Visual Studio &#50752; WDK &#53685;&#54633;</title>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#51456;&#48708;&#47932; : Windows Driver Kit 6000 &#51060;&#49345;, ddkbuild.cmd, VisualStudio 2005 &#51060;&#49345;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&#47676;&#51200;&amp;nbsp;&lt;a href="http://www.osronline.com/OsrDown.cfm/ddkbuild_v73r27.zip?name=ddkbuild_v73r27.zip&amp;amp;amp;amp;id=43" title="http://www.osronline.com/OsrDown.cfm/ddkbuild_v73r27.zip?name=ddkbuild_v73r27.zip&amp;amp;amp;amp;id=43" class="external"&gt;DDKBUILD&lt;/a&gt;&amp;nbsp;&#47484; &#45236;&#47140;&#48155;&#49845;&#45768;&#45796;. ( &lt;a href="http://www.osronline.com" title="http://www.osronline.com" class="external"&gt;http://www.osronline.com&lt;/a&gt;&amp;nbsp;&#50640;&#49436; &#50812;&#51901;&#50640; Downloads &#47484; &#45572;&#47476;&#49888; &#54980; &#51473;&#44036;&#52196;&#50640; DDKBUILD &#46972;&#45716; &#54028;&#51068;&#51060; &#51080;&#49845;&#45768;&#45796;. )&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;nbsp;DDKBUILD.CMD &#54028;&#51068;&#51012; &#54200;&#51665;&#44592;&#47196; &#50685;&#45768;&#45796;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&#50526;&#48512;&#48516;&#50640;&amp;nbsp;@SET WLHBASE=C:\WINDDK\6001.18002&amp;nbsp; &#50752; &#44057;&#51060; DDK&#47484; &#49444;&#52824;&#54620; &#54260;&#45908;&#47484; &#51648;&#51221;&#54633;&#45768;&#45796;.&lt;/li&gt;
&lt;li&gt;&#49444;&#51221;&#54644;&#51452;&#47732; &#51339;&#51008; &#54872;&#44221;&#48320;&#49688;&#45716; WLHBASE, WNETBASE, WDF_ROOT &#51077;&#45768;&#45796;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&#54200;&#51665;&#54620; DDKBUILD.CMD &#47484; &#48708;&#51452;&#50620; &#49828;&#53916;&#46356;&#50724; &#49444;&#52824;&#54260;&#45908;\VC\Bin &#54260;&#45908;&#47196; &#48373;&#49324;&#54633;&#45768;&#45796;.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&#48708;&#51452;&#50620; &#49828;&#53916;&#46356;&#50724;&#47484; &#50676;&#44256; &#46020;&#44396; -&amp;nbsp;&#50741;&#49496; -&amp;nbsp;&#54532;&#47196;&#51229;&#53944; &#48143; &#49556;&#47336;&#49496;&amp;nbsp;&#50640;&#49436; Win32 &#51032; &#54252;&#54632;&#54028;&#51068; &#46356;&#47113;&#53664;&#47532;&#50640;&amp;nbsp;DDK &#49444;&#52824;&#54260;&#45908;&#51032; inc &#54260;&#45908;&#47484; &#49444;&#51221;&#54633;&#45768;&#45796;. &#51060;&#44163;&#51012; &#49444;&#51221;&#54616;&#51648; &#50506;&#51004;&#47732; &#51064;&#53588;&#47532;&#49468;&#49828;&#44032; &#51221;&#49345;&#51201;&#51004;&#47196; &#54364;&#49884;&#46104;&#51648; &#50506;&#51020;&lt;/li&gt;
&lt;li&gt;Visual Assist X &#47484; &#49324;&#50857;&#54616;&#44256; &#51080;&#45796;&#47732; &#50612;&#49884;&#49828;&#53944; &#50741;&#49496;&#50640;&#49436;&#46020; &#46609;&#44057;&#51008; &#54260;&#45908; &#49444;&#51221;&#51012; &#54633;&#45768;&#45796;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&#51060;&#51228; &#47784;&#46304; &#49444;&#51221;&#51060; &#45149;&#45228;&#44256; &#54532;&#47196;&#51229;&#53944;&#47484; makefile &#54532;&#47196;&#51229;&#53944;&#47196; &#49373;&#49457;&#54633;&#45768;&#45796;.&lt;/li&gt;
&lt;li&gt;&#46356;&#48260;&#44536; &#49444;&#51221; - ddkbuild -WLHXP checked .&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&#47540;&#47532;&#51592; &#49444;&#51221; - ddkbuild -WLHXP free .&lt;/p&gt;
&lt;p&gt;&#50752; &#44057;&#51060; &#49444;&#51221;&#54633;&#45768;&#45796;. &#45796;&#47480; &#49324;&#54637;&#46308;&#51008; &#44148;&#46300;&#47532;&#51648; &#50506;&#50500;&#46020; &#46121;&#45768;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060;&#51228; DDK &#49368;&#54540;&#50640;&#49436;&amp;nbsp;makefile &#44284; SOURCES &#54028;&#51068;&#51012; &#48373;&#49324;&#54644;&#49436; &#51201;&#45817;&#55176; &#49688;&#51221;&#54616;&#50668; &#49324;&#50857;&#54616;&#47732; &#45149;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Fri, 14 Nov 2008 13:41:01 +0900</pubDate>
      <link>http://jgh0721.springnote.com/pages/2098034</link>
      <guid>http://jgh0721.springnote.com/pages/2098034</guid>
    </item>
    <item>
      <title>&#46300;&#46972;&#51060;&#48260; &#51228;&#51089;</title>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Fri, 14 Nov 2008 13:31:12 +0900</pubDate>
      <link>http://jgh0721.springnote.com/pages/2098030</link>
      <guid>http://jgh0721.springnote.com/pages/2098030</guid>
    </item>
    <item>
      <title>&#54532;&#47196;&#44536;&#47000;&#48141; &#45800;&#54200;...</title>
      <description>&lt;p&gt;&lt;strong&gt;&amp;nbsp;&#52488;&#45800;&#50948; &#49884;&#44036;&#51012; &#45216;&#51676;, &#49884;&#44036; &#47928;&#51088;&#50676;&#47196; &#48320;&#44221;&#54616;&#44592;&lt;/strong&gt;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;char tmpBuf[128] = {0,};&lt;br /&gt;
// &#54788;&#51116; &#49884;&#44036;&#51012; &#52488;&#45800;&#50948;&#47196; &#50619;&#51020;&lt;br /&gt;
__time64_t tmCurrentTime = _time64( NULL );&lt;br /&gt;
// &#44396;&#54616;&#47140;&#45716; &#49884;&#44036;&#51012; &#52488;&#45800;&#50948;&#47196;&lt;br /&gt;
__time64_t tmBetweenTime = 100000;&lt;br /&gt;
__time64_t tmDestTime = tmCurrentTime - tmBetweenTime;&lt;br /&gt;
struct tm *ptmUpTime = _localtime64( &amp;amp;amp;tmDestTime );&lt;br /&gt;
strftime( tmpBuf, 128, "%Y-%m-%d %H:%M:%S", ptmUpTime );&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Thu, 15 May 2008 14:36:55 +0900</pubDate>
      <link>http://jgh0721.springnote.com/pages/677984</link>
      <guid>http://jgh0721.springnote.com/pages/677984</guid>
    </item>
    <item>
      <title>C++ Standard Template Library </title>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;std::string &#49324;&#50857;&#54616;&#47732;&#49436; &#50976;&#50857;&#54616;&#44172; &#49324;&#50857;&#54624; &#49688; &#51080;&#45716; &#51204;&#50669; formatting &#54632;&#49688;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&#52636;&#52376; -&amp;nbsp;&lt;a href="http://senzee.blogspot.com/2006/05/c-formatting-stdstring.html" title="http://senzee.blogspot.com/2006/05/c-formatting-stdstring.html" class="external"&gt;http://senzee.blogspot.com/2006/05/c-formatting-stdstring.html&lt;/a&gt;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;std::string format_arg_list(const char *fmt, va_list args)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;if (!fmt) return "";&lt;br /&gt;
&amp;nbsp;int&amp;nbsp;&amp;nbsp; result = -1, length = 1024;&lt;br /&gt;
&amp;nbsp;char *buffer = 0;&lt;br /&gt;
&amp;nbsp;while (result == -1)&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if (buffer)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;delete [] buffer;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;buffer = new char [length + 1];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;memset(buffer, 0, (length + 1) * sizeof(char) );&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;// remove deprecate warning&lt;br /&gt;
&amp;nbsp;&amp;nbsp;//result = _vsnprintf(buffer, length, fmt, args);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;result = _vsnprintf_s(buffer, length, _TRUNCATE, fmt, args);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;length *= 2;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;std::string s(buffer);&lt;br /&gt;
&amp;nbsp;delete [] buffer;&lt;br /&gt;
&amp;nbsp;return s;&lt;br /&gt;
}&lt;/li&gt;
&lt;li&gt;std::wstring format_arg_list(const wchar_t *fmt, va_list args)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;if (!fmt) return L"";&lt;br /&gt;
&amp;nbsp;int&amp;nbsp;&amp;nbsp; result = -1, length = 1024;&lt;br /&gt;
&amp;nbsp;wchar_t *buffer = 0;&lt;br /&gt;
&amp;nbsp;while (result == -1)&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if (buffer)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;delete [] buffer;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;buffer = new wchar_t [length + 1];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;memset(buffer, 0, (length + 1) * sizeof(wchar_t) );&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;// remove deprecate warning&lt;br /&gt;
&amp;nbsp;&amp;nbsp;//result = _vsnprintf(buffer, length, fmt, args);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;result = _vsnwprintf_s(buffer, length, _TRUNCATE, fmt, args);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;length *= 2;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;std::wstring s(buffer);&lt;br /&gt;
&amp;nbsp;delete [] buffer;&lt;br /&gt;
&amp;nbsp;return s;&lt;br /&gt;
}&lt;/li&gt;
&lt;li&gt;std::string format(const char *fmt, ...)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;va_list args;&lt;br /&gt;
&amp;nbsp;va_start(args, fmt);&lt;br /&gt;
&amp;nbsp;std::string s = format_arg_list(fmt, args);&lt;br /&gt;
&amp;nbsp;va_end(args);&lt;br /&gt;
&amp;nbsp;return s;&lt;br /&gt;
}&lt;/li&gt;
&lt;li&gt;std::wstring format(const wchar_t *fmt, ...)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;va_list args;&lt;br /&gt;
&amp;nbsp;va_start(args, fmt);&lt;br /&gt;
&amp;nbsp;std::wstring s = format_arg_list(fmt, args);&lt;br /&gt;
&amp;nbsp;va_end(args);&lt;br /&gt;
&amp;nbsp;return s;&lt;br /&gt;
}&lt;/li&gt;
&lt;/ol&gt;
</description>
      <pubDate>Fri, 02 May 2008 11:12:05 +0900</pubDate>
      <link>http://jgh0721.springnote.com/pages/709607</link>
      <guid>http://jgh0721.springnote.com/pages/709607</guid>
    </item>
    <item>
      <title>&#46356;&#48260;&#44613; &#44288;&#47144; &#45432;&#53944;&#46308;...</title>
      <description>&lt;p&gt;&#46356;&#48260;&#44613;&#50640; &#46020;&#50880;&#46104;&#45716; &#50976;&#50857;&#54620; &#47588;&#53356;&#47196;&#46308;...&lt;/p&gt;
&lt;p&gt;&#52280;&#51312; &#44592;&#49324; =&amp;nbsp;&amp;nbsp;&lt;a href="http://www.codeproject.com/KB/debug/debug_macros.aspx" title="http://www.codeproject.com/KB/debug/debug_macros.aspx" class="external"&gt;http://www.codeproject.com/KB/debug/debug_macros.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ASSERT&lt;/strong&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#46356;&#48260;&#44536; &#48716;&#46300;&#51068; &#46412; &#47588;&#53356;&#47196; &#45236;&#51032; &#54364;&#54788;&#49885;&#51060; &#44144;&#51667;&#51060; &#46104;&#47732; &#54532;&#47196;&#44536;&#47016;&#51060; &#50724;&#47448;&#52285;&#44284; &#54632;&#44760; &#47688;&#52644;.&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#46356;&#48260;&#44536; &#48716;&#46300;&#51068; &#46412;&#47564; &#49892;&#54665;&#46120;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#50696;). ASSERT(a &amp;lt; 1);&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VERIFY&lt;/strong&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;ASSERT &#47588;&#53356;&#47196;&#50752; &#48708;&#49847;&#54632;. &#47540;&#47532;&#51592; &#48716;&#46300;&#51068; &#46412;&#46020; &#49892;&#54665;&#46104;&#51648;&#47564; &#46356;&#48260;&#44536; &#48716;&#46300;&#51068; &#46412;&#47564; &#54532;&#47196;&#44536;&#47016;&#51060; &#47688;&#52644;&amp;gt;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#50696;) VERIFY(pWnd = GetDlgItem(IDC_MYEDIT));&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TRACE&lt;/strong&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&amp;nbsp;&#46356;&#48260;&#44536; &#52636;&#47141; &#52285;&#51004;&#47196; &#47700;&#49884;&#51648;&#47484; &#51204;&#49569;&#54616;&#47728; &#49324;&#50857;&#54805;&#49885;&#51008; printf&amp;nbsp;&#50752; &#48708;&#49847;&#54620; &#54805;&#53468;&#47196; &#54252;&#47607; &#47928;&#51088;&#50676;&#51012; &#51648;&#51221;&#54624; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#50696;) TRACE("Name: %s\n", obj.name());&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;INFO&lt;/strong&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;TRACE &#47588;&#53356;&#47196;&#50752; &#48708;&#49847;&#54632;. INFO &#47588;&#53356;&#47196;&#44032; &#49892;&#54665;&#46112;&#46412; &#54028;&#51068;&#51060;&#47492;&#44284;&amp;nbsp;&#51460;&#48264;&#54840;&#47484; &#50526;&#50640;&amp;nbsp;&#48537;&#50668;&#49436; &#46356;&#48260;&#44536; &#52636;&#47141; &#52285;&#51004;&#47196; &#52636;&#47141;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#50696;) INFO("Name: %s\n",&amp;nbsp;obj.name());&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DBG&lt;/strong&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;DBG &#47588;&#53356;&#47196;&#45716; &#46356;&#48260;&#44536; &#48716;&#46300;&#51068;&#46412;&#47564; &#49892;&#54665;&#46120;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#50696;) DBG(AfxMessageBox("I'm Here"));&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BREAK&lt;/strong&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&amp;nbsp;&#46356;&#48260;&#44536; &#48716;&#46300; &#51068; &#46412; &#54532;&#47196;&#44536;&#47016;&#51032; &#49892;&#54665;&#51012; &#44053;&#51228;&#47196; &#47688;&#52644;. BREAK &#47588;&#53356;&#47196;&#44032; &#49892;&#54665;&#46104;&#47732; &#54532;&#47196;&#44536;&#47016;&#51008; &#44053;&#51228;&#47196; &#47688;&#52628;&#44256; &#46356;&#48260;&#44144;&#45716; &#54644;&#45817; &#51460;&#50640;&#49436; &#45824;&#44592;&#54632;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#50696;) BREAK();&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#51312;&#49324;&#49885; &#52285; &#54876;&#50857;&#54616;&#44592;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;$ERR&amp;nbsp; -&amp;gt; &#51060; &#44050;&#51012; &#51077;&#47141;&#54616;&#47732; &#50952;&#46020;&#50640;&#49436; &#49444;&#51221;&#46108; GetLastError &#44050;&#51012; &#48372;&#50668;&#51456;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Thu, 17 Apr 2008 09:09:10 +0900</pubDate>
      <link>http://jgh0721.springnote.com/pages/999394</link>
      <guid>http://jgh0721.springnote.com/pages/999394</guid>
    </item>
    <item>
      <title>SQLite 3</title>
      <description>&lt;p&gt;&amp;nbsp;&#54532;&#47196;&#44536;&#47016;&#50640;&#49436; &#45236;&#51109; DB &#47196; &#55124;&#55176; &#49324;&#50857;&#46104;&#45716; SQL &#50644;&#51652;&#51060;&#45796;.&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&lt;a href="http://www.sqlite.org" title="http://www.sqlite.org" class="external"&gt;http://www.sqlite.org&lt;/a&gt;&amp;nbsp;&#44032; &#44277;&#49885; &#54856;&#54168;&#51060;&#51648;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&#52980;&#54028;&#51068; &#48169;&#48277; :&lt;/strong&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#54856;&#54168;&#51060;&#51648;&#50640;&#49436; &lt;em class="underline"&gt;Source Code&lt;/em&gt; &#50640;&#49436; SQLite-Source &#50752; SQLite-amalgamation &#47484; &lt;em class="underline"&gt;Precompiled Binaries for Windows&lt;/em&gt; &#50640;&#49436; SQLiteDll &#51012; &#45236;&#47140;&#48155;&#45716;&#45796;.&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&lt;em class="underline"&gt;&#48708;&#51452;&#50620; &#49828;&#53916;&#46356;&#50724; &#45815;&#45367;&#51032; &#44221;&#50864; -&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 4em"&gt;DLL &#54532;&#47196;&#51229;&#53944;&#47484; &#48712; &#54532;&#47196;&#51229;&#53944;&#47196; &#49373;&#49457;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 4em"&gt;&#48712; &#54532;&#47196;&#51229;&#53944;&#50640; &#44592;&#51316; &#54028;&#51068; &#52628;&#44032;&#47484; &#49440;&#53469;&#54616;&#50668; SQLite-Source &#51032; &#47784;&#46304; &#54028;&#51068;&#51012; &#52628;&#44032;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 4em"&gt;&#54532;&#47196;&#51229;&#53944;&#50640; SQLiteDll &#54028;&#51068;&#51032; &#50517;&#52629;&#51012; &#54396; &#54028;&#51068;&#50640;&#49436;&amp;nbsp;.def &#54028;&#51068;&#51012; &#52628;&#44032;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 4em"&gt;TCL &#51012; &#49324;&#50857;&#54616;&#51648; &#50506;&#51012; &#44163;&#51060;&#44592; &#46412;&#47928;&#50640; &#54532;&#47196;&#51229;&#53944; &#49444;&#51221; - &#51204;&#52376;&#47532;&#44592;&amp;nbsp;&#49440;&#50616; - NO_TCL &#47588;&#53356;&#47196;&#47484; &#52628;&#44032;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 4em"&gt;tclsqlite.c &#54028;&#51068;&#51012; &#54200;&#51665;&#54616;&#50668; &#54028;&#51068;&amp;nbsp;&#52572;&#49345;&#45800;&#44284; &#52572;&#54616;&#45800;&#51012; &#49332;&#54196;&#48372;&#44256; #ifndef NO_TCL &#44284; #endif &#47484; &#52628;&#44032;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 4em"&gt;&#52980;&#54028;&#51068; &#54620;&#45796;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SQLIte 3 &#51032; &#45936;&#51060;&#53552; &#54805;&#49885; -&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;NULL - SQLITE_NULL&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;INTEGER - SQLITE_INTEGER&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;REAL - SQLITE_FLOAT&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;TEXT - SQLITE3_TEXT, SQLITE_TEXT&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;BLOB - SQLITE_BLOB&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SQLite 3 &#44061;&#52404; -&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SQLite 3 &#49345;&#49688; -&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;SQLITE_OK :&lt;/p&gt;
</description>
      <pubDate>Mon, 31 Mar 2008 15:00:56 +0900</pubDate>
      <link>http://jgh0721.springnote.com/pages/1008152</link>
      <guid>http://jgh0721.springnote.com/pages/1008152</guid>
    </item>
    <item>
      <title>&#50952;&#46020; NT &#51217;&#44540; &#53685;&#51228; &#47784;&#45944;</title>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://www.codeproject.com/KB/winsdk/accessctrl1.aspx" title="http://www.codeproject.com/KB/winsdk/accessctrl1.aspx" class="external"&gt;Code Project &#44592;&#49324; - 1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://www.codeproject.com/KB/system/accessctrl3.aspx" title="http://www.codeproject.com/KB/system/accessctrl3.aspx" class="external"&gt;Code Project &#44592;&#49324; - 3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://www.codeproject.com/KB/winsdk/accessctrl2.aspx" title="http://www.codeproject.com/KB/winsdk/accessctrl2.aspx" class="external"&gt;Code Project &#44592;&#49324; - 2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://www.codeproject.com/KB/winsdk/accessctrl4.aspx" title="http://www.codeproject.com/KB/winsdk/accessctrl4.aspx" class="external"&gt;Code Project &#44592;&#49324; - 4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&#47785;&#52264; - 1 : &#48176;&#44221;&#44284; &#54645;&#49900;&amp;nbsp;&#51648;&#49885;. &#51217;&#44540; &#51228;&#50612; &#44396;&#51312;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#48372;&#50504; &#49885;&#48324;&#51088;(The Security Identifier, SID)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#48372;&#50504; &#49444;&#47749;&#51088;(The Security Descriptor, SD)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#51217;&#44540; &#51228;&#50612;&amp;nbsp;&#47785;&#47197;(The Access Control List, ACL)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#51339;&#51008; &#44428;&#54620; &#51217;&#44540;&amp;nbsp;&#51228;&#50612; &#47785;&#47197; &#49440;&#53469;&#54616;&#44592;(Discretionary ACL)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#53664;&#53360;(The Token)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#48372;&#50504; &#49885;&#48324;&#51088; &#51221;&#51032; &#50616;&#50612;&#50640; &#44288;&#54620;&amp;nbsp;&#50508;&#47548;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#50526;&#51004;&#47196;...&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&#48176;&#44221; :&amp;nbsp; &#50952;&#46020; NT &#51032; &#52572;&#52488; &#44060;&#48156; &#47785;&#54364; &#51473;&#51032; &#54616;&#45208;&#45716; &#50868;&#50689;&#52404;&#51228;&#50640; &#45824;&#54644; &#48372;&#50504;&#51012; &#44396;&#54788;&#54624; &#49688; &#51080;&#45716; &#52789;&#51012; &#51228;&#44277;&#54616;&#45716; &#44163;&#51060;&#50632;&#45796;. &#50952;&#46020; NT &#44061;&#52404;&#50640;&#45824;&#54644;&#49436; &#50952;&#46020; NT &#44032; &#44396;&#54788;&#54620; &#48372;&#50504; &#48169;&#49885;&#51008; &#51217;&#44540; &#51228;&#50612; &#47784;&#45944;(Access Control Model)&#51060;&#45796;. &#49900;&#51648;&#50612;, &#50669;&#54624; &#44592;&#48152; &#48372;&#50504;&#44284; &#45815;&#45367;(.NET) &#53364;&#47000;&#49828;&#46308;&#46020; ACL &#44592;&#48152;&#51032; &#48372;&#50504; &#47784;&#45944;&#51012; &#45824;&#52404;&#54624; &#49688; &#50630;&#45796;. ACL &#51008; NTFS &#50500;&#53412;&#53581;&#52432;&#51032; &#44061;&#52404;, &#47112;&#51648;&#49828;&#53944;&#47532; &#46321;&#50640; &#45320;&#47924;&#45208; &#44618;&#49689;&#51060; &#45236;&#51109;&#46104;&#50612; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&#48372;&#50504; &#49885;&#48324;&#51088; (The Security Identifier, SID)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Mon, 24 Mar 2008 14:22:19 +0900</pubDate>
      <link>http://jgh0721.springnote.com/pages/978646</link>
      <guid>http://jgh0721.springnote.com/pages/978646</guid>
    </item>
    <item>
      <title>&#45796;&#47480; &#49464;&#49496;&#51004;&#47196; &#49892;&#54665;&#49884;&#53412;&#44592;</title>
      <description>&lt;p style="MARGIN-LEFT: 2em"&gt;&#51452;&#47196; &#49436;&#48708;&#49828;&#50640;&#49436; UI &#51080;&#45716; &#54532;&#47196;&#44536;&#47016;&#51012; &#49436;&#48708;&#49828; &#49464;&#49496;&#51060; &#50500;&#45772; &#45824;&#54868;&#54805; &#45936;&#49828;&#53356;&#53457;&#51060; &#51080;&#45716; &#49464;&#49496;&#50640;&#49436; &#49892;&#54665;&#49884;&#53428;&#51004;&#47196;&#50024; &#51221;&#49345;&#51201;&#51004;&#47196; &#51089;&#46041;&#49884;&#53412;&#44592; &#50948;&#54620; &#44163;.&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#48512;&#44032;&#51201;&#51004;&#47196; &#51060; &#54632;&#49688;&#47196; &#49892;&#54665;&#49884;&#53412;&#47732; &#48708;&#49828;&#53440;&#51032; UAC &#47484; &#46916;&#50864;&#51648; &#50506;&#44256; &#44288;&#47532;&#51088; &#44428;&#54620;&#51004;&#47196; &#49892;&#54665;&#49884;&#53420; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#49436;&#48708;&#49828;&#44032; SYSTEM &#44228;&#51221;&#51004;&#47196; &#49892;&#54665;&#51473;&#51060;&#46972;&#47732; &#49892;&#54665;&#49884;&#53416; &#54532;&#47196;&#44536;&#47016;&#46020; SYSTEM &#44228;&#51221;&#51012; &#48155;&#50500;&#49436; &#49892;&#54665;&#46120;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&#53076;&#46300; &#54532;&#47196;&#51229;&#53944;&#51032;&amp;nbsp;&#44592;&#49324;&#51032; &#49548;&#49828;&#53076;&#46300;&#47484; &#44592;&#48152;&#51004;&#47196; 2000 ~ Vista &#50640;&#49436; &#51089;&#46041;&#54616;&#46020;&#47197; &#49688;&#51221;&#54632;.&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&lt;a href="http://www.codeproject.com/KB/vista-security/VistaSessions.aspx" title="http://www.codeproject.com/KB/vista-security/VistaSessions.aspx" class="external"&gt;http://www.codeproject.com/KB/vista-security/VistaSessions.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 2em"&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;#ifdef _UNICODE&lt;br /&gt;
&amp;nbsp;#define tstring wstring&lt;br /&gt;
#else&lt;br /&gt;
&amp;nbsp;#define tstring string&lt;br /&gt;
#endif&lt;/li&gt;
&lt;li&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;// Winlogon.exe &#49892;&#54665;&#54028;&#51068;&#51032; &#49464;&#49496;&#51012; &#44160;&#49353;&#54616;&#50668; &#44057;&#51008; &#49464;&#49496;&#50640;&#49436; &#49892;&#54665;&#49884;&#53428;, 2000 ~ Vista&lt;br /&gt;
BOOL LaunchAppIntoDifferentSessionAll(tstring strPath)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;if( strPath.empty() )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return FALSE;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;tstring strSearch;&lt;br /&gt;
&amp;nbsp;OSVERSIONINFO osi;&lt;br /&gt;
&amp;nbsp;ZeroMemory(&amp;amp;osi,sizeof(OSVERSIONINFO));&lt;br /&gt;
&amp;nbsp;osi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);&lt;br /&gt;
&amp;nbsp;GetVersionEx(&amp;amp;osi);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;// &#48320;&#49688; &#49440;&#50616;&lt;br /&gt;
&amp;nbsp;BOOL bResult = FALSE;&lt;br /&gt;
&amp;nbsp;DWORD dwSessionId = 0; // &#49464;&#49496; ID&lt;br /&gt;
&amp;nbsp;DWORD dwWinlogonPID = 0; // Winlogon PID&lt;/li&gt;
&lt;li&gt;&amp;nbsp;typedef DWORD (*pfnWTSGetActiveConsoleSessionId)(void);&lt;br /&gt;
&amp;nbsp;HMODULE hModule = NULL;&lt;br /&gt;
&amp;nbsp;pfnWTSGetActiveConsoleSessionId fnWTSGetActiveConsoleSessionId = NULL;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;if( osi.dwMajorVersion == 6 )&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;OutputDebugString(_T("Vista, &#46972;&#51060;&#48652;&#47084;&#47532; &#47196;&#46377; &#49884;&#46020;"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;hModule = ::LoadLibrary(_T("Kernel32.dll"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if( hModule != NULL )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;OutputDebugString(_T("Vista, &#54632;&#49688; &#47196;&#46377; &#49884;&#46020;"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;fnWTSGetActiveConsoleSessionId = (pfnWTSGetActiveConsoleSessionId) GetProcAddress(hModule, "WTSGetActiveConsoleSessionId");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;if( fnWTSGetActiveConsoleSessionId == NULL )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OutputDebugString(_T("WTSGetActiveConsoleSessionId &#54632;&#49688; &#47196;&#46377; &#49892;&#54056;"));&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwSessionId = fnWTSGetActiveConsoleSessionId();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;// &#44057;&#51008; &#49464;&#49496;&#51004;&#47196; &#49892;&#54665;&#54624; &#54532;&#47196;&#49464;&#49828; &#52286;&#44592;(Winlogon.exe)&lt;br /&gt;
&amp;nbsp;BOOL IsExistsWinlogon = FALSE;&lt;br /&gt;
&amp;nbsp;PROCESSENTRY32 pe32;&lt;br /&gt;
&amp;nbsp;pe32.dwSize = sizeof(PROCESSENTRY32);&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;HANDLE hSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);&lt;br /&gt;
&amp;nbsp;if( hSnap == INVALID_HANDLE_VALUE )&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;bResult = FALSE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;goto CleanUP;&lt;br /&gt;
&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;if( !Process32First(hSnap, &amp;amp;pe32) )&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;bResult = FALSE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;goto CleanUP;&lt;br /&gt;
&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;if( osi.dwMajorVersion == 6 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;strSearch = _T("winlogon.exe");&lt;br /&gt;
&amp;nbsp;else if( osi.dwMajorVersion == 5 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;strSearch = _T("explorer.exe");&lt;/li&gt;
&lt;li&gt;&amp;nbsp;do&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if( lstrcmpi(pe32.szExeFile, strSearch.c_str()) == 0 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;OutputDebugString(_T("WinLogon &#54532;&#47196;&#49464;&#49828; &#44160;&#49353;"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD dwWLSessionID = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;BOOL bRet = ProcessIdToSessionId(pe32.th32ProcessID, &amp;amp;dwWLSessionID);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp; bRet &amp;amp;&amp;amp; (osi.dwMajorVersion == 6) &amp;amp;&amp;amp; (dwSessionId == dwWLSessionID) )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// &#48708;&#49828;&#53440;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OutputDebugString(_T("Vista"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwWinlogonPID = pe32.th32ProcessID;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IsExistsWinlogon = TRUE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;else if( bRet &amp;amp;&amp;amp; (osi.dwMajorVersion == 5) )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 2000 ~ XP&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OutputDebugString(_T("2000/XP"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwSessionId = dwWLSessionID;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwWinlogonPID = pe32.th32ProcessID;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IsExistsWinlogon = TRUE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;} while ( Process32Next(hSnap, &amp;amp;pe32) );&lt;/li&gt;
&lt;li&gt;&amp;nbsp;if( IsExistsWinlogon == FALSE )&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;OutputDebugString(_T("Winlogon.exe &#44160;&#49353; &#49892;&#54056;"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;bResult = FALSE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;goto CleanUP;&lt;br /&gt;
&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;// WINLOGON &#54532;&#47196;&#49464;&#49828; &#50676;&#44256; &#53664;&#53360; &#48373;&#49324;&#54616;&#50668; &#53945;&#51221; &#49464;&#49496; &#51648;&#51221;&lt;br /&gt;
&amp;nbsp;HANDLE hProcess = ::OpenProcess(MAXIMUM_ALLOWED, FALSE, dwWinlogonPID);&lt;br /&gt;
&amp;nbsp;HANDLE hToken = NULL;&lt;br /&gt;
&amp;nbsp;HANDLE hTokenDup = NULL;&lt;br /&gt;
&amp;nbsp;if( hProcess == NULL )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;goto CleanUP;&lt;br /&gt;
&amp;nbsp;if( !::OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY|TOKEN_DUPLICATE|TOKEN_ASSIGN_PRIMARY|TOKEN_ADJUST_SESSIONID|TOKEN_READ|TOKEN_WRITE, &amp;amp;hToken))&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;OutputDebugString(_T("OpenProcessToken Failed"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;bResult = FALSE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;goto CleanUP;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;LUID luid;&lt;br /&gt;
&amp;nbsp;if( !LookupPrivilegeValue(NULL,SE_DEBUG_NAME, &amp;amp;luid) )&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;OutputDebugString(_T("LookupPrivilegeValue Failed"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;bResult = FALSE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;goto CleanUP;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;TOKEN_PRIVILEGES tp;&lt;br /&gt;
&amp;nbsp;tp.PrivilegeCount = 1;&lt;br /&gt;
&amp;nbsp;tp.Privileges[0].Luid = luid;&lt;br /&gt;
&amp;nbsp;tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;&lt;br /&gt;
&amp;nbsp;if( !DuplicateTokenEx(hToken, MAXIMUM_ALLOWED, NULL, SecurityIdentification, TokenPrimary, &amp;amp;hTokenDup) )&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;OutputDebugString(_T("DuplicateTokenEx Failed"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;bResult = FALSE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;goto CleanUP;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;SetTokenInformation(hTokenDup, TokenSessionId, (LPVOID)&amp;amp;dwSessionId, sizeof(DWORD));&lt;br /&gt;
&amp;nbsp;if( !AdjustTokenPrivileges(hTokenDup, FALSE, &amp;amp;tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES)NULL,NULL) )&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;OutputDebugString(_T("AdjustTokenPrivileges Failed"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;bResult = FALSE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;goto CleanUP;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;if( GetLastError() == ERROR_NOT_ALL_ASSIGNED )&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;OutputDebugString(_T("AdjustTokenPrivileges Assign Failed"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;bResult = FALSE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;goto CleanUP;&lt;br /&gt;
&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;// CreateProcessAsUser &#51456;&#48708;&lt;br /&gt;
&amp;nbsp;STARTUPINFO si;&lt;br /&gt;
&amp;nbsp;ZeroMemory(&amp;amp;si, sizeof(STARTUPINFO));&lt;br /&gt;
&amp;nbsp;si.cb = sizeof(STARTUPINFO);&lt;br /&gt;
&amp;nbsp;si.lpDesktop = _T("winsta0\\default");&lt;br /&gt;
&amp;nbsp;PROCESS_INFORMATION pi;&lt;br /&gt;
&amp;nbsp;ZeroMemory(&amp;amp;pi, sizeof(PROCESS_INFORMATION));&lt;br /&gt;
&amp;nbsp;DWORD dwCreationFlags = NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE;&lt;br /&gt;
&amp;nbsp;LPVOID pEnv = NULL;&lt;br /&gt;
&amp;nbsp;if( CreateEnvironmentBlock(&amp;amp;pEnv, hTokenDup, TRUE) )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;dwCreationFlags |= CREATE_UNICODE_ENVIRONMENT;&lt;br /&gt;
&amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;pEnv = NULL;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;LPTSTR lpszPath = _tcsdup(strPath.c_str());&lt;br /&gt;
&amp;nbsp;if( lpszPath == NULL )&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;OutputDebugString(_T("Path String Assign Failed"));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;bResult = FALSE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;goto CleanUP;&lt;br /&gt;
&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;OutputDebugString(lpszPath);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;bResult = ::CreateProcessAsUser(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hTokenDup,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lpszPath,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FALSE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwCreationFlags,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pEnv,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NULL,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;si,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;pi);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;free(lpszPath);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;if( !bResult )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;OutputDebugString(_T("CreateProcessAsUser Failed"));&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;if( (bResult) &amp;amp;&amp;amp; (pi.hProcess != INVALID_HANDLE_VALUE) )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;CloseHandle(pi.hProcess);&lt;br /&gt;
&amp;nbsp;if( (bResult) &amp;amp;&amp;amp; (pi.hThread != INVALID_HANDLE_VALUE) )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;CloseHandle(pi.hThread);&lt;/li&gt;
&lt;li&gt;CleanUP:&lt;br /&gt;
&amp;nbsp;if( hModule )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;FreeLibrary(hModule);&lt;br /&gt;
&amp;nbsp;if( hSnap != INVALID_HANDLE_VALUE )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;CloseHandle(hSnap);&lt;br /&gt;
&amp;nbsp;if( hProcess != NULL )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;CloseHandle(hProcess);&lt;br /&gt;
&amp;nbsp;if( hToken )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;CloseHandle(hToken);&lt;br /&gt;
&amp;nbsp;if( hTokenDup )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;CloseHandle(hTokenDup);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;return bResult;&lt;br /&gt;
}&lt;/li&gt;
&lt;li&gt;BOOL EnablePrivilege(LPCTSTR szPrivilege)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;BOOL bResult = FALSE;&lt;br /&gt;
&amp;nbsp;HANDLE hToken = NULL;&lt;br /&gt;
&amp;nbsp;TOKEN_PRIVILEGES tpOld, tpCurrent;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;if( !OpenProcessToken(::GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &amp;amp;hToken) )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;return bResult;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;tpCurrent.PrivilegeCount = 1;&lt;br /&gt;
&amp;nbsp;tpCurrent.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;if( ::LookupPrivilegeValue(NULL, szPrivilege, &amp;amp;tpCurrent.Privileges[0].Luid) )&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;DWORD dwOld = sizeof(TOKEN_PRIVILEGES);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if( ::AdjustTokenPrivileges(hToken, FALSE, &amp;amp;tpCurrent, dwOld, &amp;amp;tpOld, &amp;amp;dwOld) )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;bResult = TRUE;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;bResult = FALSE;&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;bResult = FALSE;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;CloseHandle(hToken);&lt;br /&gt;
&amp;nbsp;return bResult;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
      <pubDate>Fri, 07 Mar 2008 15:37:44 +0900</pubDate>
      <link>http://jgh0721.springnote.com/pages/911438</link>
      <guid>http://jgh0721.springnote.com/pages/911438</guid>
    </item>
  </channel>
</rss>
