<?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[LAN Ip ändern (auslesen funzt schon) [IP Helper API]]]></title><description><![CDATA[<p>Hi!</p>
<p>In letzter Zeit sind ja vermehrt Anforderungen gekommen die IP auszulesen und ggf. auch zu ändern. Da ich selber auch immer zwischen 3 IPs, Gateways und DNS umschalten muß, wollte ich mir ein kleines Programm schreiben, wo ich die verschiedenen Configs einfach auswählen und per Button eintragen kann.</p>
<p>Viele meinten es per Registry zu tun, was aber recht umständlich ist. Beim stöbern in der Platform SDK und bei diversen Seiten stieß ich auf die IP Helper API. Ist wirklich ganz nett gemacht, aber mit dem ändern der IP habe ich einfach noch Probleme.</p>
<p>ipconfig zeigt die geänderten IPs und Subnetmasken als zusätzliche an. Ich würde aber gerne die Hauptaddresse ändern. Dazu dann noch die DNS und das Gateway.</p>
<p>Vielleicht kann mir jemand einen Schubs in die richtige Richtung geben?</p>
<p>Im folgenden noch etwas Code:</p>
<p>Hier einmal der Code zum Speichern:</p>
<pre><code class="language-cpp">void CLanCfgChangerDlg::OnButtonCfgSave() 
{
	IPAddr	ipaddr_NewIpAddress,
			ipaddr_NewSubnetMask;

	ULONG NTEContext = 0;
    ULONG NTEInstance;

	DWORD dw_Error = 0;

	m_ctrl_IPAddress.GetWindowText(m_cstr_IpAddress);
	m_ctrl_Subnet.GetWindowText(m_cstr_SubnetMask);

	ipaddr_NewIpAddress = inet_addr(m_cstr_IpAddress);
    ipaddr_NewSubnetMask = inet_addr(m_cstr_SubnetMask);

	int i_AdapterIndex = m_ctrl_Adapter.GetCurSel();

    if ((dw_Error = AddIPAddress(ipaddr_NewIpAddress, ipaddr_NewSubnetMask, m_parr_IpAdapter[i_AdapterIndex]-&gt;Index, &amp;NTEContext, &amp;NTEInstance)) != 0)
    {
		CString cstr_Error;
		cstr_Error.Format(&quot;AddIPAddress failed with error %d, %d\n&quot;, NTEContext, dw_Error);
		MessageBox( cstr_Error, &quot;Fehler...&quot;, MB_ICONERROR );
        return;
    }
}
</code></pre>
<p>Und hier der Code zum Auslesen:</p>
<pre><code class="language-cpp">BOOL CLanCfgChangerDlg::getAdaptersInfo()
{
	m_dw_NumberOfInterfaces = 0;

	m_p_IpAdapterInfo = NULL;
	m_p_IpAdapt = NULL;	

	m_p_IpPerAdapterInfo = NULL;
	m_p_IpPerAdapt = NULL;

	ULONG ul_AdapterInfoSize = sizeof(m_p_IpAdapterInfo);

	m_dw_Err = GetAdaptersInfo(m_p_IpAdapterInfo, &amp;ul_AdapterInfoSize);

	if( m_dw_Err != ERROR_SUCCESS )
	{
		if( m_dw_Err == ERROR_BUFFER_OVERFLOW )
		{
			// Allocate memory from sizing information
			if ((m_hGlobalAdapterInfo = (PIP_ADAPTER_INFO) GlobalAlloc(GPTR, ul_AdapterInfoSize)) == NULL)
			{
				MessageBox(&quot;Memory allocation error\n&quot;);
				return FALSE;
			}
			m_p_IpAdapterInfo = (PIP_ADAPTER_INFO) m_hGlobalAdapterInfo;

			// Get actual adapter information
			DWORD Err = 0;
			if ((Err = GetAdaptersInfo(m_p_IpAdapterInfo, &amp;ul_AdapterInfoSize)) != 0)
			{
				CString cstr_Error = &quot;&quot;;
				cstr_Error.Format(&quot;GetAdaptersInfo failed with error %d\n&quot;, Err);
				MessageBox(cstr_Error);
				return FALSE;
			}
		}
		else
		{
			DWORD dw_Err = GetLastError();
			if(dw_Err != ERROR_SUCCESS)
			{
				TRACE(&quot;Anderer Fehler als ERROR_BUFFER_OVERFLOW. Implementierung folgt.&quot;);
				return FALSE;
			}
		}
	}

	m_p_IpAdapt = m_p_IpAdapterInfo;

	while(m_p_IpAdapt &amp;&amp; m_dw_NumberOfInterfaces &lt;= 10)
	{
		m_ctrl_Adapter.AddString(m_p_IpAdapt-&gt;Description);
		m_cstrarr_AdapterDescription.Add(m_p_IpAdapt-&gt;Description);
		m_parr_IpAdapter[m_dw_NumberOfInterfaces] = m_p_IpAdapt;
		m_p_IpAdapt = m_p_IpAdapt-&gt;Next;
		m_dw_NumberOfInterfaces++;
	}

	return TRUE;
}

BOOL CLanCfgChangerDlg::getAdaptersAddresses( int i_AdapterIndex )
{
	m_IpAddressString = m_parr_IpAdapter[i_AdapterIndex]-&gt;IpAddressList.IpAddress;
	m_cstr_IpAddress = m_IpAddressString.String;
	m_ctrl_IPAddress.SetWindowText(m_cstr_IpAddress);

	m_IpAddressString = m_parr_IpAdapter[i_AdapterIndex]-&gt;IpAddressList.IpMask;
	m_cstr_SubnetMask = m_IpAddressString.String;
	m_ctrl_Subnet.SetWindowText(m_cstr_SubnetMask);

	m_IpAddressString = m_parr_IpAdapter[i_AdapterIndex]-&gt;GatewayList.IpAddress;
	m_cstr_Gateway = m_IpAddressString.String;
	m_ctrl_Gateway.SetWindowText(m_cstr_Gateway);

	//GetPerAdaptersInfo
	m_dw_Err = 0;
	m_p_IpPerAdapterInfo = NULL;
	ULONG ul_PerAdapterInfoSize = sizeof(m_p_IpPerAdapterInfo);
	m_dw_Err = GetPerAdapterInfo(m_parr_IpAdapter[i_AdapterIndex]-&gt;Index, m_p_IpPerAdapterInfo, &amp;ul_PerAdapterInfoSize);

	if( m_dw_Err != ERROR_SUCCESS )
	{
		if( m_dw_Err == ERROR_BUFFER_OVERFLOW )
		{
			// Allocate memory from sizing information
			if ((m_hGlobalPerAdapterInfo = (PIP_PER_ADAPTER_INFO) GlobalAlloc(GPTR, ul_PerAdapterInfoSize)) == NULL)
			{
				MessageBox(&quot;Memory allocation error\n&quot;);
				return FALSE;
			}
			m_p_IpPerAdapterInfo = (PIP_PER_ADAPTER_INFO) m_hGlobalPerAdapterInfo;

			// Get actual adapter information
			DWORD Err = 0;
			if ((Err = GetPerAdapterInfo(m_parr_IpAdapter[i_AdapterIndex]-&gt;Index, m_p_IpPerAdapterInfo, &amp;ul_PerAdapterInfoSize)) != 0)
			{
				CString cstr_Error = &quot;&quot;;
				cstr_Error.Format(&quot;GetPerAdaptersInfo failed with error %d\n&quot;, Err);
				MessageBox(cstr_Error);
				return FALSE;
			}
		}
		else
		{
			DWORD dw_Err = GetLastError();
			if(dw_Err != ERROR_SUCCESS)
			{
				TRACE(&quot;Anderer Fehler als ERROR_BUFFER_OVERFLOW. Implementierung folgt.&quot;);
				return FALSE;
			}
		}
	}

	m_p_IpPerAdapt = m_p_IpPerAdapterInfo;

	m_IpAddrString = m_p_IpPerAdapt-&gt;DnsServerList;
	m_IpAddressString = m_IpAddrString.IpAddress;
	m_cstr_DNS1 = m_IpAddressString.String;
	m_ctrl_DNS1.SetWindowText(m_cstr_DNS1);

	if( m_IpAddrString.Next != NULL )
	{
		m_IpAddrString = *m_IpAddrString.Next;

		m_IpAddressString = m_IpAddrString.IpAddress;
		m_cstr_DNS2 = m_IpAddressString.String;
		m_ctrl_DNS2.SetWindowText(m_cstr_DNS2);
	}
	else
	{
		m_cstr_DNS2 = &quot;0.0.0.0&quot;;
		m_ctrl_DNS2.SetWindowText(m_cstr_DNS2);
	}

	return TRUE;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/44055/lan-ip-ändern-auslesen-funzt-schon-ip-helper-api</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 17:10:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/44055.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 Jul 2003 16:15:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to LAN Ip ändern (auslesen funzt schon) [IP Helper API] on Sun, 27 Jul 2003 16:15:44 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>In letzter Zeit sind ja vermehrt Anforderungen gekommen die IP auszulesen und ggf. auch zu ändern. Da ich selber auch immer zwischen 3 IPs, Gateways und DNS umschalten muß, wollte ich mir ein kleines Programm schreiben, wo ich die verschiedenen Configs einfach auswählen und per Button eintragen kann.</p>
<p>Viele meinten es per Registry zu tun, was aber recht umständlich ist. Beim stöbern in der Platform SDK und bei diversen Seiten stieß ich auf die IP Helper API. Ist wirklich ganz nett gemacht, aber mit dem ändern der IP habe ich einfach noch Probleme.</p>
<p>ipconfig zeigt die geänderten IPs und Subnetmasken als zusätzliche an. Ich würde aber gerne die Hauptaddresse ändern. Dazu dann noch die DNS und das Gateway.</p>
<p>Vielleicht kann mir jemand einen Schubs in die richtige Richtung geben?</p>
<p>Im folgenden noch etwas Code:</p>
<p>Hier einmal der Code zum Speichern:</p>
<pre><code class="language-cpp">void CLanCfgChangerDlg::OnButtonCfgSave() 
{
	IPAddr	ipaddr_NewIpAddress,
			ipaddr_NewSubnetMask;

	ULONG NTEContext = 0;
    ULONG NTEInstance;

	DWORD dw_Error = 0;

	m_ctrl_IPAddress.GetWindowText(m_cstr_IpAddress);
	m_ctrl_Subnet.GetWindowText(m_cstr_SubnetMask);

	ipaddr_NewIpAddress = inet_addr(m_cstr_IpAddress);
    ipaddr_NewSubnetMask = inet_addr(m_cstr_SubnetMask);

	int i_AdapterIndex = m_ctrl_Adapter.GetCurSel();

    if ((dw_Error = AddIPAddress(ipaddr_NewIpAddress, ipaddr_NewSubnetMask, m_parr_IpAdapter[i_AdapterIndex]-&gt;Index, &amp;NTEContext, &amp;NTEInstance)) != 0)
    {
		CString cstr_Error;
		cstr_Error.Format(&quot;AddIPAddress failed with error %d, %d\n&quot;, NTEContext, dw_Error);
		MessageBox( cstr_Error, &quot;Fehler...&quot;, MB_ICONERROR );
        return;
    }
}
</code></pre>
<p>Und hier der Code zum Auslesen:</p>
<pre><code class="language-cpp">BOOL CLanCfgChangerDlg::getAdaptersInfo()
{
	m_dw_NumberOfInterfaces = 0;

	m_p_IpAdapterInfo = NULL;
	m_p_IpAdapt = NULL;	

	m_p_IpPerAdapterInfo = NULL;
	m_p_IpPerAdapt = NULL;

	ULONG ul_AdapterInfoSize = sizeof(m_p_IpAdapterInfo);

	m_dw_Err = GetAdaptersInfo(m_p_IpAdapterInfo, &amp;ul_AdapterInfoSize);

	if( m_dw_Err != ERROR_SUCCESS )
	{
		if( m_dw_Err == ERROR_BUFFER_OVERFLOW )
		{
			// Allocate memory from sizing information
			if ((m_hGlobalAdapterInfo = (PIP_ADAPTER_INFO) GlobalAlloc(GPTR, ul_AdapterInfoSize)) == NULL)
			{
				MessageBox(&quot;Memory allocation error\n&quot;);
				return FALSE;
			}
			m_p_IpAdapterInfo = (PIP_ADAPTER_INFO) m_hGlobalAdapterInfo;

			// Get actual adapter information
			DWORD Err = 0;
			if ((Err = GetAdaptersInfo(m_p_IpAdapterInfo, &amp;ul_AdapterInfoSize)) != 0)
			{
				CString cstr_Error = &quot;&quot;;
				cstr_Error.Format(&quot;GetAdaptersInfo failed with error %d\n&quot;, Err);
				MessageBox(cstr_Error);
				return FALSE;
			}
		}
		else
		{
			DWORD dw_Err = GetLastError();
			if(dw_Err != ERROR_SUCCESS)
			{
				TRACE(&quot;Anderer Fehler als ERROR_BUFFER_OVERFLOW. Implementierung folgt.&quot;);
				return FALSE;
			}
		}
	}

	m_p_IpAdapt = m_p_IpAdapterInfo;

	while(m_p_IpAdapt &amp;&amp; m_dw_NumberOfInterfaces &lt;= 10)
	{
		m_ctrl_Adapter.AddString(m_p_IpAdapt-&gt;Description);
		m_cstrarr_AdapterDescription.Add(m_p_IpAdapt-&gt;Description);
		m_parr_IpAdapter[m_dw_NumberOfInterfaces] = m_p_IpAdapt;
		m_p_IpAdapt = m_p_IpAdapt-&gt;Next;
		m_dw_NumberOfInterfaces++;
	}

	return TRUE;
}

BOOL CLanCfgChangerDlg::getAdaptersAddresses( int i_AdapterIndex )
{
	m_IpAddressString = m_parr_IpAdapter[i_AdapterIndex]-&gt;IpAddressList.IpAddress;
	m_cstr_IpAddress = m_IpAddressString.String;
	m_ctrl_IPAddress.SetWindowText(m_cstr_IpAddress);

	m_IpAddressString = m_parr_IpAdapter[i_AdapterIndex]-&gt;IpAddressList.IpMask;
	m_cstr_SubnetMask = m_IpAddressString.String;
	m_ctrl_Subnet.SetWindowText(m_cstr_SubnetMask);

	m_IpAddressString = m_parr_IpAdapter[i_AdapterIndex]-&gt;GatewayList.IpAddress;
	m_cstr_Gateway = m_IpAddressString.String;
	m_ctrl_Gateway.SetWindowText(m_cstr_Gateway);

	//GetPerAdaptersInfo
	m_dw_Err = 0;
	m_p_IpPerAdapterInfo = NULL;
	ULONG ul_PerAdapterInfoSize = sizeof(m_p_IpPerAdapterInfo);
	m_dw_Err = GetPerAdapterInfo(m_parr_IpAdapter[i_AdapterIndex]-&gt;Index, m_p_IpPerAdapterInfo, &amp;ul_PerAdapterInfoSize);

	if( m_dw_Err != ERROR_SUCCESS )
	{
		if( m_dw_Err == ERROR_BUFFER_OVERFLOW )
		{
			// Allocate memory from sizing information
			if ((m_hGlobalPerAdapterInfo = (PIP_PER_ADAPTER_INFO) GlobalAlloc(GPTR, ul_PerAdapterInfoSize)) == NULL)
			{
				MessageBox(&quot;Memory allocation error\n&quot;);
				return FALSE;
			}
			m_p_IpPerAdapterInfo = (PIP_PER_ADAPTER_INFO) m_hGlobalPerAdapterInfo;

			// Get actual adapter information
			DWORD Err = 0;
			if ((Err = GetPerAdapterInfo(m_parr_IpAdapter[i_AdapterIndex]-&gt;Index, m_p_IpPerAdapterInfo, &amp;ul_PerAdapterInfoSize)) != 0)
			{
				CString cstr_Error = &quot;&quot;;
				cstr_Error.Format(&quot;GetPerAdaptersInfo failed with error %d\n&quot;, Err);
				MessageBox(cstr_Error);
				return FALSE;
			}
		}
		else
		{
			DWORD dw_Err = GetLastError();
			if(dw_Err != ERROR_SUCCESS)
			{
				TRACE(&quot;Anderer Fehler als ERROR_BUFFER_OVERFLOW. Implementierung folgt.&quot;);
				return FALSE;
			}
		}
	}

	m_p_IpPerAdapt = m_p_IpPerAdapterInfo;

	m_IpAddrString = m_p_IpPerAdapt-&gt;DnsServerList;
	m_IpAddressString = m_IpAddrString.IpAddress;
	m_cstr_DNS1 = m_IpAddressString.String;
	m_ctrl_DNS1.SetWindowText(m_cstr_DNS1);

	if( m_IpAddrString.Next != NULL )
	{
		m_IpAddrString = *m_IpAddrString.Next;

		m_IpAddressString = m_IpAddrString.IpAddress;
		m_cstr_DNS2 = m_IpAddressString.String;
		m_ctrl_DNS2.SetWindowText(m_cstr_DNS2);
	}
	else
	{
		m_cstr_DNS2 = &quot;0.0.0.0&quot;;
		m_ctrl_DNS2.SetWindowText(m_cstr_DNS2);
	}

	return TRUE;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/319018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/319018</guid><dc:creator><![CDATA[Frenzy]]></dc:creator><pubDate>Sun, 27 Jul 2003 16:15:44 GMT</pubDate></item><item><title><![CDATA[Reply to LAN Ip ändern (auslesen funzt schon) [IP Helper API] on Thu, 31 Jul 2003 08:57:42 GMT]]></title><description><![CDATA[<p>Keiner eine Idee?</p>
<p>*schaut ratlos*</p>
<p>Muß doch nen anderen Weg geben, als die Registry zu bearbeiten (was bei mir auch nur mäßig bis garnicht ging).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/321627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/321627</guid><dc:creator><![CDATA[Frenzy]]></dc:creator><pubDate>Thu, 31 Jul 2003 08:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to LAN Ip ändern (auslesen funzt schon) [IP Helper API] on Fri, 15 Aug 2003 10:50:12 GMT]]></title><description><![CDATA[<p>*nochmal nach oben schiebt*</p>
<p>Also das Problem ist noch akut und ich werde einfach nicht fündig.</p>
<p>Ich kann bislang nur weitere IPs hinzufügen, was aber nicht gewollt ist. In der Registry herumzufummeln ist ja wohl auch nicht der Sinn.</p>
<p>Kennt denn keiner ne Möglichkeit die primäre IP etc zu ändern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/332824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/332824</guid><dc:creator><![CDATA[Frenzy]]></dc:creator><pubDate>Fri, 15 Aug 2003 10:50:12 GMT</pubDate></item><item><title><![CDATA[Reply to LAN Ip ändern (auslesen funzt schon) [IP Helper API] on Fri, 15 Aug 2003 11:34:00 GMT]]></title><description><![CDATA[<p>Also ich hab auch mal versucht, so ein Prog zu schreiben.<br />
Ich hab's über die Registry gemacht, da ging auch alles (DNS,Gateway, Proxy,..) eben bis auf die IP.<br />
Ich weiß bis heute nicht warum. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/332881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/332881</guid><dc:creator><![CDATA[CrazyOwl]]></dc:creator><pubDate>Fri, 15 Aug 2003 11:34:00 GMT</pubDate></item><item><title><![CDATA[Reply to LAN Ip ändern (auslesen funzt schon) [IP Helper API] on Fri, 15 Aug 2003 11:37:54 GMT]]></title><description><![CDATA[<p>Aber das muß doch eigentlich irgendwas dafür geben (ob MFC oder WinApi)....</p>
<p>Die Berechtigung sowas zu machen ist ja wohl eher über die Benutzerverwaltung gesteuert.</p>
<p>Habe mich nun schon dumm und dusselig gesucht... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/332886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/332886</guid><dc:creator><![CDATA[Frenzy]]></dc:creator><pubDate>Fri, 15 Aug 2003 11:37:54 GMT</pubDate></item><item><title><![CDATA[Reply to LAN Ip ändern (auslesen funzt schon) [IP Helper API] on Fri, 15 Aug 2003 12:27:04 GMT]]></title><description><![CDATA[<p>Du fügst mit AddIPAddress ja nur eine Adresse hinzu. Du musst die, die schon drin steht wohl acuh noch löschen. Maybe mit DeleteIPAddress?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/332933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/332933</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Fri, 15 Aug 2003 12:27:04 GMT</pubDate></item><item><title><![CDATA[Reply to LAN Ip ändern (auslesen funzt schon) [IP Helper API] on Fri, 15 Aug 2003 14:23:32 GMT]]></title><description><![CDATA[<p>Ich glaube das Problem ist, daß ich mit DeleteIpAddress nur welche löschen kann die ich vorher mit AddIpAddress hinzufügte, wenn ich richtig gelesen habe.</p>
<p>Bei AddIpAddress bekomme ich ja nen pointer auf NTEContext. Den muß ich bei DeleteIpAddress dann übergeben und schwups ist sie gelöscht. Gilt aber halt nur für welche, die ich zur Laufzeit hinzufügte.</p>
<p>Mit AddIpAddress hinzugefügte IPs sind ja auch nach dem Neustart des Rechners wieder futsch.... Das will ich ja auch nicht.</p>
<p>Unmöglich sollte es ja nicht sein..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/333046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/333046</guid><dc:creator><![CDATA[Frenzy]]></dc:creator><pubDate>Fri, 15 Aug 2003 14:23:32 GMT</pubDate></item><item><title><![CDATA[Reply to LAN Ip ändern (auslesen funzt schon) [IP Helper API] on Fri, 15 Aug 2003 14:49:57 GMT]]></title><description><![CDATA[<p>Jo, stimmt ... Was ist mit diesen ARP-Funktionen? (SetIpNetEntry zb?)<br />
Allerdings steht ARP für Address Resolution Protocol und nciht für Transmission Control Protocol (TCP).<br />
Vielleicht probierst du noch die Funktion SetTcpEntry aus ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/333070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/333070</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Fri, 15 Aug 2003 14:49:57 GMT</pubDate></item></channel></rss>