﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-紫雨轩 C++-随笔分类-MFC</title><link>http://www.cppblog.com/rick/category/2230.html</link><description>技术交流</description><language>zh-cn</language><lastBuildDate>Wed, 21 May 2008 08:38:44 GMT</lastBuildDate><pubDate>Wed, 21 May 2008 08:38:44 GMT</pubDate><ttl>60</ttl><item><title>进程注入的代码 </title><link>http://www.cppblog.com/rick/archive/2006/07/15/9918.html</link><dc:creator>紫雨轩 C++</dc:creator><author>紫雨轩 C++</author><pubDate>Fri, 14 Jul 2006 17:02:00 GMT</pubDate><guid>http://www.cppblog.com/rick/archive/2006/07/15/9918.html</guid><wfw:comment>http://www.cppblog.com/rick/comments/9918.html</wfw:comment><comments>http://www.cppblog.com/rick/archive/2006/07/15/9918.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/rick/comments/commentRss/9918.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/rick/services/trackbacks/9918.html</trackback:ping><description><![CDATA[
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">#include </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">stdafx.h</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />#include </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">Injection.h</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />#ifdef _DEBUG<br /></span>
				<span style="COLOR: #0000ff">#define</span>
				<span style="COLOR: #000000"> new DEBUG_NEW</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">#endif</span>
				<span style="COLOR: #000000">
						<br />
						<br />
						<br />
				</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 唯一的应用程序对象</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">
						<br />CWinApp theApp;<br /><br /></span>
				<span style="COLOR: #0000ff">using</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">namespace</span>
				<span style="COLOR: #000000"> std;<br /><br />typedef </span>
				<span style="COLOR: #0000ff">struct</span>
				<span style="COLOR: #000000"> _RemotePara{</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">参数结构</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">   </span>
				<span style="COLOR: #0000ff">char</span>
				<span style="COLOR: #000000"> pMessageBox[</span>
				<span style="COLOR: #000000">12</span>
				<span style="COLOR: #000000">];<br />   DWORD dwMessageBox;<br />}RemotePara;<br /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">远程线程</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">DWORD __stdcall ThreadProc (RemotePara </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">lpPara){<br />   typedef </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> (__stdcall </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">MMessageBoxA)(HWND,LPCTSTR,LPCTSTR,DWORD);</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">定义MessageBox函数</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">   MMessageBoxA myMessageBoxA;<br />   myMessageBoxA </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">(MMessageBoxA) lpPara</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">dwMessageBox ;</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">得到函数入口地址</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">   myMessageBoxA(NULL,lpPara</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">pMessageBox ,lpPara</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">pMessageBox,</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">);</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">call</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">   </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;<br />}<br /></span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> EnableDebugPriv();</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">提升应用级调试权限</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> _tmain(</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> argc, TCHAR</span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000"> argv[], TCHAR</span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000"> envp[])<br />{<br />    </span>
				<span style="COLOR: #0000ff">const</span>
				<span style="COLOR: #000000"> DWORD THREADSIZE</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">1024</span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">4</span>
				<span style="COLOR: #000000">;<br />   DWORD byte_write;<br />   EnableDebugPriv();</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">提升权限</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">   HANDLE hWnd </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> ::OpenProcess (PROCESS_ALL_ACCESS,FALSE,</span>
				<span style="COLOR: #000000">760</span>
				<span style="COLOR: #000000">);<br />   </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000">hWnd)</span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;<br />   </span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">pRemoteThread </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">::VirtualAllocEx(hWnd,</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">,THREADSIZE,MEM_COMMIT</span>
				<span style="COLOR: #000000">|</span>
				<span style="COLOR: #000000"> MEM_RESERVE,PAGE_EXECUTE_READWRITE);<br />   </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000">pRemoteThread)</span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;<br />   </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000">::WriteProcessMemory(hWnd,pRemoteThread,</span>
				<span style="COLOR: #000000">&amp;</span>
				<span style="COLOR: #000000">ThreadProc,THREADSIZE,</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">))<br />   </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;<br /><br />   </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">再付值</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">   RemotePara myRemotePara;<br />   ::ZeroMemory(</span>
				<span style="COLOR: #000000">&amp;</span>
				<span style="COLOR: #000000">myRemotePara,</span>
				<span style="COLOR: #0000ff">sizeof</span>
				<span style="COLOR: #000000">(RemotePara));<br />   HINSTANCE hUser32 </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> ::LoadLibrary (</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">user32.dll</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br />   myRemotePara.dwMessageBox </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">(DWORD) ::GetProcAddress (hUser32 , </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">MessageBoxA</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br />   strcat(myRemotePara.pMessageBox,</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">hello\0</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br />   </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">写进目标进程</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">   RemotePara </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">pRemotePara </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">(RemotePara </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">) ::VirtualAllocEx (hWnd ,</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">sizeof</span>
				<span style="COLOR: #000000">(RemotePara),MEM_COMMIT,PAGE_READWRITE);</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">注意申请空间时的页面属性</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">   </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000">pRemotePara)</span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;<br />   </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000">::WriteProcessMemory (hWnd ,pRemotePara,</span>
				<span style="COLOR: #000000">&amp;</span>
				<span style="COLOR: #000000">myRemotePara,</span>
				<span style="COLOR: #0000ff">sizeof</span>
				<span style="COLOR: #000000"> myRemotePara,</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">))</span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;<br /><br />   </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">启动线程</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">   HANDLE hThread </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> ::CreateRemoteThread (hWnd ,</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">,(DWORD (__stdcall </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">)(</span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">))pRemoteThread ,pRemotePara,</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">&amp;</span>
				<span style="COLOR: #000000">byte_write);<br />   </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000">hThread){<br />      </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;<br />   }<br />    </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;<br />}<br /><br /></span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> EnableDebugPriv( </span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> )<br />{<br />HANDLE hToken;<br />LUID sedebugnameValue;<br />TOKEN_PRIVILEGES tkp;<br /><br /></span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000"> ( </span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000"> OpenProcessToken( GetCurrentProcess(),<br />TOKEN_ADJUST_PRIVILEGES </span>
				<span style="COLOR: #000000">|</span>
				<span style="COLOR: #000000"> TOKEN_QUERY, </span>
				<span style="COLOR: #000000">&amp;</span>
				<span style="COLOR: #000000">hToken ) )<br /></span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000">;<br /></span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000"> ( </span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000"> LookupPrivilegeValue( NULL, SE_DEBUG_NAME, </span>
				<span style="COLOR: #000000">&amp;</span>
				<span style="COLOR: #000000">sedebugnameValue ) ){<br />CloseHandle( hToken );<br /></span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000">;<br />}<br />tkp.PrivilegeCount </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">;<br />tkp.Privileges[</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">].Luid </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> sedebugnameValue;<br />tkp.Privileges[</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">].Attributes </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> SE_PRIVILEGE_ENABLED;<br /></span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000"> ( </span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000"> AdjustTokenPrivileges( hToken, FALSE, </span>
				<span style="COLOR: #000000">&amp;</span>
				<span style="COLOR: #000000">tkp, </span>
				<span style="COLOR: #0000ff">sizeof</span>
				<span style="COLOR: #000000"> tkp, NULL, NULL ) )<br />CloseHandle( hToken );<br />}<br /><br /></span>
		</div>
<img src ="http://www.cppblog.com/rick/aggbug/9918.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/rick/" target="_blank">紫雨轩 C++</a> 2006-07-15 01:02 <a href="http://www.cppblog.com/rick/archive/2006/07/15/9918.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC常用代码收集</title><link>http://www.cppblog.com/rick/archive/2006/07/15/9917.html</link><dc:creator>紫雨轩 C++</dc:creator><author>紫雨轩 C++</author><pubDate>Fri, 14 Jul 2006 17:01:00 GMT</pubDate><guid>http://www.cppblog.com/rick/archive/2006/07/15/9917.html</guid><wfw:comment>http://www.cppblog.com/rick/comments/9917.html</wfw:comment><comments>http://www.cppblog.com/rick/archive/2006/07/15/9917.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/rick/comments/commentRss/9917.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/rick/services/trackbacks/9917.html</trackback:ping><description><![CDATA[根据文件句柄，获取文件名<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br />#include </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br />#include </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">tchar.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br />#include </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br />#include </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">psapi.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><br /></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> BUFSIZE 512</span><span style="COLOR: #000000"><br /><br />BOOL GetFileNameFromHandle(HANDLE hFile) <br />{<br />  BOOL bSuccess </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> FALSE;<br />  TCHAR pszFilename[MAX_PATH</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br />  HANDLE hFileMap;<br /><br />  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Get the file size.</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">  DWORD dwFileSizeHi </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br />  DWORD dwFileSizeLo </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> GetFileSize(hFile, </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">dwFileSizeHi); <br /><br />  </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">( dwFileSizeLo </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> dwFileSizeHi </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"> )<br />  {<br />     printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Cannot map a file with a length of zero.\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />     </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> FALSE;<br />  }<br /><br />  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Create a file mapping object.</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">  hFileMap </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> CreateFileMapping(hFile, <br />                    NULL, <br />                    PAGE_READONLY,<br />                    </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, <br />                    </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,<br />                    NULL);<br /><br />  </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (hFileMap) <br />  {<br />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Create a file mapping to get the file name.</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> pMem </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> MapViewOfFile(hFileMap, FILE_MAP_READ, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br /><br />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (pMem) <br />    {<br />      </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (GetMappedFileName (GetCurrentProcess(), <br />                             pMem, <br />                             pszFilename,<br />                             MAX_PATH)) <br />      {<br /><br />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Translate path with device name to drive letters.</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">        TCHAR szTemp[BUFSIZE];<br />        szTemp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /><br />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (GetLogicalDriveStrings(BUFSIZE</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">, szTemp)) <br />        {<br />          TCHAR szName[MAX_PATH];<br />          TCHAR szDrive[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> TEXT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> :</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />          BOOL bFound </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> FALSE;<br />          TCHAR</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> p </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> szTemp;<br /><br />          </span><span style="COLOR: #0000ff">do</span><span style="COLOR: #000000"> <br />          {<br />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Copy the drive letter to the template string</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">            </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">szDrive </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p;<br /><br />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Look up each device name</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (QueryDosDevice(szDrive, szName, BUFSIZE))<br />            {<br />              UINT uNameLen </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> _tcslen(szName);<br /><br />              </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (uNameLen </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> MAX_PATH) <br />              {<br />                bFound </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> _tcsnicmp(pszFilename, szName, <br />                    uNameLen) </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /><br />                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (bFound) <br />                {<br />                  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Reconstruct pszFilename using szTemp<br />                  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Replace device path with DOS path</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">                  TCHAR szTempFile[MAX_PATH];<br />                  _stprintf(szTempFile,<br />                            TEXT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%s%s</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),<br />                            szDrive,<br />                            pszFilename</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">uNameLen);<br />                  _tcsncpy(pszFilename, szTempFile, MAX_PATH);<br />                }<br />              }<br />            }<br /><br />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Go to the next NULL character.</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">);<br />          } </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">bFound </span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> end of string</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">        }<br />      }<br />      bSuccess </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> TRUE;<br />      UnmapViewOfFile(pMem);<br />    } <br /><br />    CloseHandle(hFileMap);<br />  }<br />  printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">File name is %s\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, pszFilename);<br />  </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">(bSuccess);<br />}<br /></span></div><p>开机自动运行<br />  其中strPath参数表示要设置为自运行的程序的绝对路径。当设置成功时返回true，否则返回false<br /></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">BOOL SetAutoRun(CString strPath)</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">开机自动运行</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">{<br />   CString str;<br />   HKEY hRegKey;<br />   BOOL bResult;<br />   str</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">_T(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Software\\Microsoft\\Windows\\CurrentVersion\\Run</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />   </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(RegOpenKey(HKEY_LOCAL_MACHINE, str, </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">hRegKey) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> ERROR_SUCCESS) <br />       bResult</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">FALSE;<br />   </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br />   {<br />       _splitpath(strPath.GetBuffer(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">),NULL,NULL,str.GetBufferSetLength(MAX_PATH</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">),NULL);<br />       strPath.ReleaseBuffer();<br />       str.ReleaseBuffer();<br />       </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(::RegSetValueEx( hRegKey,<br />                           str,<br />                           </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,<br />                           REG_SZ,<br />                           (CONST BYTE </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)strPath.GetBuffer(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">),<br />                           strPath.GetLength() ) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> ERROR_SUCCESS)<br />          bResult</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">FALSE;<br />       </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br />          bResult</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">TRUE;<br />       strPath.ReleaseBuffer();<br />   }<br />   </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> bResult;<br />}        <br /></span></div><p> </p><p>使计算机休眠<br /></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> XiuMian() <br />{<br /> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(MessageBox(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">确实要休眠吗?</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">关机程序</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,MB_YESNO</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">MB_DEFBUTTON2</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">MB_ICONQUESTION)</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">IDYES)<br /> {<br />  HANDLE hToken;<br />  TOKEN_PRIVILEGES tp;<br />  LUID luid;<br />  </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(::OpenProcessToken(GetCurrentProcess(),<br />         TOKEN_ADJUST_PRIVILEGES</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">TOKEN_QUERY,<br />         </span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">hToken))<br />  {<br />   ::LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">luid);<br />   tp.PrivilegeCount</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br />   tp.Privileges[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].Luid </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">luid;<br />   tp.Privileges[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].Attributes </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">SE_PRIVILEGE_ENABLED;<br />   ::AdjustTokenPrivileges(hToken,</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">tp,</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(TOKEN_PRIVILEGES),NULL,NULL);<br />  }<br />  ::SetSystemPowerState(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">); <br /> }<br />}<br /></span></div><img src ="http://www.cppblog.com/rick/aggbug/9917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/rick/" target="_blank">紫雨轩 C++</a> 2006-07-15 01:01 <a href="http://www.cppblog.com/rick/archive/2006/07/15/9917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC中使用ADO调用存储过程  </title><link>http://www.cppblog.com/rick/archive/2006/07/15/9916.html</link><dc:creator>紫雨轩 C++</dc:creator><author>紫雨轩 C++</author><pubDate>Fri, 14 Jul 2006 16:59:00 GMT</pubDate><guid>http://www.cppblog.com/rick/archive/2006/07/15/9916.html</guid><wfw:comment>http://www.cppblog.com/rick/comments/9916.html</wfw:comment><comments>http://www.cppblog.com/rick/archive/2006/07/15/9916.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/rick/comments/commentRss/9916.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/rick/services/trackbacks/9916.html</trackback:ping><description><![CDATA[
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">_ConnectionPtr m_pConnection;<br /> _CommandPtr m_pCommand;<br />.cpp中在函数中执行<br /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">建立ado连接</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000"> HRESULT hr;<br /> hr</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">m_pConnection.CreateInstance(__uuidof(Connection));<br /> </span>
				<span style="COLOR: #0000ff">try</span>
				<span style="COLOR: #000000">
						<br /> {<br /> </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(SUCCEEDED(hr))<br /> {<br /> hr</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">m_pConnection</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">Open(_bstr_t(L</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Viper;Data Source=Viper</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">),_bstr_t (L</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">sa</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">),_bstr_t (L</span>
				<span style="COLOR: #000000">""</span>
				<span style="COLOR: #000000">),adModeUnknown);<br /> }<br /> }<br /> </span>
				<span style="COLOR: #0000ff">catch</span>
				<span style="COLOR: #000000">(_com_error </span>
				<span style="COLOR: #000000">&amp;</span>
				<span style="COLOR: #000000"> err)<br /> {<br /> AfxMessageBox(err.Description(),MB_OK,</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">);<br /> AfxMessageBox(err.ErrorMessage(),MB_OK,</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">);<br /> AfxMessageBox(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">无法连接SQL SERVER 服务器，程序将退出。请检查网络设备</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,MB_OK,</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">);<br /> exit(</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">);<br /> }<br /><br /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">执行储存过程</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000"> CString cvar1,cvar2;<br /> </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> cvar3;<br /> cvar1</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">ddd</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /> cvar2</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">""</span>
				<span style="COLOR: #000000">;<br /> cvar3</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;<br /> </span>
				<span style="COLOR: #0000ff">try</span>
				<span style="COLOR: #000000">
						<br /> {<br /> m_pCommand.CreateInstance(__uuidof(Command));<br /> m_pCommand</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">ActiveConnection</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">app</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">m_pConnection;<br /> m_pCommand</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">CommandType</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">adCmdStoredProc;<br /> m_pCommand</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">CommandText</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">_bstr_t(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">pr_zs_dzdy</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><br /> _variant_t vvar1,vvar2,vvar3;<br /> vvar1</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">_variant_t(_bstr_t(cvar1));<br /> vvar2</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">_variant_t(_bstr_t(cvar2));<br /> vvar3</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">_variant_t(cvar3);<br /> _ParameterPtr mp_var1,mp_var2,mp_var3;<br /> mp_var1.CreateInstance(__uuidof(Parameter));<br /> mp_var2.CreateInstance(__uuidof(Parameter));<br /> mp_var3.CreateInstance(__uuidof(Parameter));<br /><br /> mp_var1</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">m_pCommand</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">CreateParameter<br /> (<br /> _bstr_t(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">var1</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">),<br /> adVarChar,<br /> adParamInput,<br /> </span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000">,<br />vvar1<br />);<br /> m_pCommand</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">Parameters</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">Append(mp_var1); <br /><br /> mp_var2</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">m_pCommand</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">CreateParameter<br /> (<br /> _bstr_t(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">var2</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">),<br /> adVarChar,<br /> adParamOutput,<br /> </span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000">,<br /> vvar2<br /> );<br /> m_pCommand</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">Parameters</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">Append(mp_var2); <br /><br /> mp_var3</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">m_pCommand</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">CreateParameter<br /> (<br /> _bstr_t(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">var3</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">),<br /> adIntger,<br /> adParamOutput,<br /> </span>
				<span style="COLOR: #000000">9</span>
				<span style="COLOR: #000000">,<br /> vvar3<br /> );<br /> m_pCommand</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">Parameters</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">Append(mp_var3); <br /><br /><br /> _variant_t vNull;<br /> vNull.vt</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">VT_ERROR;<br /> vNull.scode</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">DISP_E_PARAMNOTFOUND;<br /> m_pCommand</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">Execute(</span>
				<span style="COLOR: #000000">&amp;</span>
				<span style="COLOR: #000000">vNull,</span>
				<span style="COLOR: #000000">&amp;</span>
				<span style="COLOR: #000000">vNull,adCmdStoredProc);<br /> cvar2</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">mp_var2</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">Value.bstrVal;<br /> cvar3</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">mp_var3</span>
				<span style="COLOR: #000000">-&gt;</span>
				<span style="COLOR: #000000">Value;<br /> }<br /> </span>
				<span style="COLOR: #0000ff">catch</span>
				<span style="COLOR: #000000">(_com_error </span>
				<span style="COLOR: #000000">&amp;</span>
				<span style="COLOR: #000000">error)<br /> {<br /> MessageBox(error.ErrorMessage(),</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">ADO错误!</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /> MessageBox(error.Description(),</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">ADO错误!</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /> }<br /><br /></span>
		</div>
<img src ="http://www.cppblog.com/rick/aggbug/9916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/rick/" target="_blank">紫雨轩 C++</a> 2006-07-15 00:59 <a href="http://www.cppblog.com/rick/archive/2006/07/15/9916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>