<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Aufrufparameter von Fremdprogrammen herausfinden]]></title><description><![CDATA[<p>Hi,</p>
<p>Kennt sich jemand mit dem Environment unter 64bit Windows aus?<br />
Hintergrund ist folgender:<br />
Es geht um eine Funktion, die unter Angabe der Pid die Aufrufparameter beliebiger Prozesse ermittelt. Leider funktioniert die Funktion zwar unter 32bit Windows, nicht jedoch unter 64bit.</p>
<p>void ExtProcInfo::GetProcessCmdLine(DWORD pid,char* sCmdLine,int sizeCmdLine)<br />
{<br />
LPBYTE lpPos=NULL;<br />
DWORD dwBytesRead;<br />
MEMORY_BASIC_INFORMATION mbi;<br />
HANDLE hProcess=NULL;</p>
<p>try {<br />
if(sizeCmdLine&lt;=0)<br />
throw BASEException(&quot;size of command line buffer is 0&quot;);<br />
InitBuffer();<br />
EnableTokenPrivilege(SE_DEBUG_NAME);<br />
if(pid==0) {<br />
strncpy(sCmdLine,&quot;System Idle Process&quot;,sizeCmdLine);<br />
sCmdLine[sizeCmdLine-1]='\0';<br />
return;<br />
}<br />
sCmdLine[0]='\0';<br />
if((hProcess=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_QUERY_INFORMATION,FALSE,pid))==NULL) {<br />
char sError[100];<br />
sError[sizeof(sError)-1]='\0';<br />
snprintf(sError,sizeof(sError),&quot;failed to open process - pid: %lu&quot;,pid);<br />
throw BASEException(sError);<br />
}<br />
if(VirtualQueryEx(hProcess,BLOCK_ADDRESS,&amp;mbi,sizeof(mbi))==0)<br />
throw BASEException(&quot;virtual query ex failed&quot;);<br />
if(IsBadReadPtr(mbi.BaseAddress,1))<br />
throw BASEException(&quot;bad read pointer 1&quot;);<br />
if(!ReadProcessMemory(hProcess,mbi.BaseAddress,(LPVOID)m_lpBuffer,m_sysinfo.dwPageSize,&amp;dwBytesRead))<br />
throw BASEException(&quot;reading process memory failed&quot;);<br />
lpPos=m_lpBuffer+((DWORD)BLOCK_ADDRESS-(DWORD)mbi.BaseAddress);<br />
if(IsBadReadPtr(lpPos,1))<br />
throw BASEException(&quot;bad read pointer 2&quot;);<br />
lpPos=lpPos+(wcslen((LPWSTR)lpPos)+1)*sizeof(WCHAR);<br />
lpPos=(LPBYTE)ALIGN_DWORD((DWORD)lpPos);<br />
if(IsBadReadPtr(lpPos,1))<br />
throw BASEException(&quot;bad read pointer 3&quot;);<br />
lpPos=lpPos+(wcslen((LPWSTR)lpPos)+1)*sizeof(WCHAR);<br />
if(*lpPos=='\0')<br />
lpPos+=sizeof(WCHAR);<br />
if(IsBadReadPtr(lpPos,1))<br />
throw BASEException(&quot;bad read pointer 4&quot;);<br />
sCmdLine[sizeCmdLine-1]='\0';<br />
if(WideCharToMultiByte(CP_ACP,0,(LPWSTR)lpPos,-1,sCmdLine,sizeCmdLine-1,NULL,NULL)&lt;=0)<br />
sCmdLine[0]='\0';<br />
if(sCmdLine[0]=='\0')<br />
throw BASEException(&quot;command line is empty&quot;);<br />
}<br />
catch(BASEException &amp;e) {<br />
if(hProcess!=NULL)<br />
CloseHandle(hProcess);<br />
char sError[100];<br />
snprintf(sError,sizeof(sError),&quot;failed to get process command line: %s,error %lu&quot;,e.GetMsg(),GetLastError());<br />
sError[sizeof(sError)-1]='\0';<br />
BASEException ee(sError,&quot;ExtProcInfo::GetProcessCmdLine&quot;);<br />
if(strlen(e.GetFkt())&gt;0)<br />
ee.SetFkt(e.GetFkt());<br />
throw ee;<br />
}<br />
CloseHandle(hProcess);<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/167487/aufrufparameter-von-fremdprogrammen-herausfinden</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 16:35:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/167487.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Dec 2006 16:49:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Aufrufparameter von Fremdprogrammen herausfinden on Mon, 11 Dec 2006 16:49:19 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Kennt sich jemand mit dem Environment unter 64bit Windows aus?<br />
Hintergrund ist folgender:<br />
Es geht um eine Funktion, die unter Angabe der Pid die Aufrufparameter beliebiger Prozesse ermittelt. Leider funktioniert die Funktion zwar unter 32bit Windows, nicht jedoch unter 64bit.</p>
<p>void ExtProcInfo::GetProcessCmdLine(DWORD pid,char* sCmdLine,int sizeCmdLine)<br />
{<br />
LPBYTE lpPos=NULL;<br />
DWORD dwBytesRead;<br />
MEMORY_BASIC_INFORMATION mbi;<br />
HANDLE hProcess=NULL;</p>
<p>try {<br />
if(sizeCmdLine&lt;=0)<br />
throw BASEException(&quot;size of command line buffer is 0&quot;);<br />
InitBuffer();<br />
EnableTokenPrivilege(SE_DEBUG_NAME);<br />
if(pid==0) {<br />
strncpy(sCmdLine,&quot;System Idle Process&quot;,sizeCmdLine);<br />
sCmdLine[sizeCmdLine-1]='\0';<br />
return;<br />
}<br />
sCmdLine[0]='\0';<br />
if((hProcess=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_QUERY_INFORMATION,FALSE,pid))==NULL) {<br />
char sError[100];<br />
sError[sizeof(sError)-1]='\0';<br />
snprintf(sError,sizeof(sError),&quot;failed to open process - pid: %lu&quot;,pid);<br />
throw BASEException(sError);<br />
}<br />
if(VirtualQueryEx(hProcess,BLOCK_ADDRESS,&amp;mbi,sizeof(mbi))==0)<br />
throw BASEException(&quot;virtual query ex failed&quot;);<br />
if(IsBadReadPtr(mbi.BaseAddress,1))<br />
throw BASEException(&quot;bad read pointer 1&quot;);<br />
if(!ReadProcessMemory(hProcess,mbi.BaseAddress,(LPVOID)m_lpBuffer,m_sysinfo.dwPageSize,&amp;dwBytesRead))<br />
throw BASEException(&quot;reading process memory failed&quot;);<br />
lpPos=m_lpBuffer+((DWORD)BLOCK_ADDRESS-(DWORD)mbi.BaseAddress);<br />
if(IsBadReadPtr(lpPos,1))<br />
throw BASEException(&quot;bad read pointer 2&quot;);<br />
lpPos=lpPos+(wcslen((LPWSTR)lpPos)+1)*sizeof(WCHAR);<br />
lpPos=(LPBYTE)ALIGN_DWORD((DWORD)lpPos);<br />
if(IsBadReadPtr(lpPos,1))<br />
throw BASEException(&quot;bad read pointer 3&quot;);<br />
lpPos=lpPos+(wcslen((LPWSTR)lpPos)+1)*sizeof(WCHAR);<br />
if(*lpPos=='\0')<br />
lpPos+=sizeof(WCHAR);<br />
if(IsBadReadPtr(lpPos,1))<br />
throw BASEException(&quot;bad read pointer 4&quot;);<br />
sCmdLine[sizeCmdLine-1]='\0';<br />
if(WideCharToMultiByte(CP_ACP,0,(LPWSTR)lpPos,-1,sCmdLine,sizeCmdLine-1,NULL,NULL)&lt;=0)<br />
sCmdLine[0]='\0';<br />
if(sCmdLine[0]=='\0')<br />
throw BASEException(&quot;command line is empty&quot;);<br />
}<br />
catch(BASEException &amp;e) {<br />
if(hProcess!=NULL)<br />
CloseHandle(hProcess);<br />
char sError[100];<br />
snprintf(sError,sizeof(sError),&quot;failed to get process command line: %s,error %lu&quot;,e.GetMsg(),GetLastError());<br />
sError[sizeof(sError)-1]='\0';<br />
BASEException ee(sError,&quot;ExtProcInfo::GetProcessCmdLine&quot;);<br />
if(strlen(e.GetFkt())&gt;0)<br />
ee.SetFkt(e.GetFkt());<br />
throw ee;<br />
}<br />
CloseHandle(hProcess);<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1190238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1190238</guid><dc:creator><![CDATA[leachim]]></dc:creator><pubDate>Mon, 11 Dec 2006 16:49:19 GMT</pubDate></item><item><title><![CDATA[Reply to Aufrufparameter von Fremdprogrammen herausfinden on Tue, 12 Dec 2006 07:37:02 GMT]]></title><description><![CDATA[<p>sollte das nicht nach WinAPI?</p>
<p>und ich denke, ohne CodeTags wird sich das niemand anschauen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1190379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1190379</guid><dc:creator><![CDATA[ser1al_ausgeloggt]]></dc:creator><pubDate>Tue, 12 Dec 2006 07:37:02 GMT</pubDate></item><item><title><![CDATA[Reply to Aufrufparameter von Fremdprogrammen herausfinden on Tue, 12 Dec 2006 21:38:11 GMT]]></title><description><![CDATA[<p>Hat sich mittlerweile eh erledigt, danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1190898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1190898</guid><dc:creator><![CDATA[leachim]]></dc:creator><pubDate>Tue, 12 Dec 2006 21:38:11 GMT</pubDate></item><item><title><![CDATA[Reply to Aufrufparameter von Fremdprogrammen herausfinden on Wed, 13 Dec 2006 11:20:47 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=403" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=4" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191117</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Wed, 13 Dec 2006 11:20:47 GMT</pubDate></item><item><title><![CDATA[Reply to Aufrufparameter von Fremdprogrammen herausfinden on Wed, 13 Dec 2006 14:44:57 GMT]]></title><description><![CDATA[<p>leachim schrieb:</p>
<blockquote>
<p>Hat sich mittlerweile eh erledigt, danke</p>
</blockquote>
<p>Es wäre sinnvoll, den Grund auch posten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> . Nur so für die Allgemeinheit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191253</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 13 Dec 2006 14:44:57 GMT</pubDate></item><item><title><![CDATA[Reply to Aufrufparameter von Fremdprogrammen herausfinden on Wed, 13 Dec 2006 17:06:01 GMT]]></title><description><![CDATA[<p>Grund: Ich bin auf WMI - WIN32_PROCESS class umgestiegen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191339</guid><dc:creator><![CDATA[leachim]]></dc:creator><pubDate>Wed, 13 Dec 2006 17:06:01 GMT</pubDate></item></channel></rss>