<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lowe Software &#187; Code</title>
	<atom:link href="http://blog.lowesoftware.com/category/code/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.lowesoftware.com</link>
	<description>Alex Lowe on software, technology, and startups.</description>
	<lastBuildDate>Wed, 16 Jun 2010 14:40:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2220</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Network Link Detection in C#</title>
		<link>http://blog.lowesoftware.com/code/network-link-detection-in-c-2</link>
		<comments>http://blog.lowesoftware.com/code/network-link-detection-in-c-2#comments</comments>
		<pubDate>Fri, 03 Aug 2007 13:29:01 +0000</pubDate>
		<dc:creator>Alex Lowe</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://blog.lowesoftware.com/code/network-link-detection-in-c-2</guid>
		<description><![CDATA[This code snippit will show you how to detect if there is a network link on one of the network adaptors on your system. The function is written in C# and uses the Windows Management Instrumentation to get the link status.

/// &#60;summary&#62;
/// Checks if a network is connected to the local machine.
/// &#60;/summary&#62;
/// &#60;returns&#62;true if [...]]]></description>
			<content:encoded><![CDATA[<p>This code snippit will show you how to detect if there is a network link on one of the network adaptors on your system. The function is written in C# and uses the Windows Management Instrumentation to get the link status.</p>
<pre class="csharpcode">
<span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// Checks if a network is connected to the local machine.</span>
<span class="rem">/// &lt;/summary&gt;</span>
<span class="rem">/// &lt;returns&gt;true if network connected, false if not&lt;/returns&gt;</span>
<span class="kwrd">static</span> <span class="kwrd">public</span> <span class="kwrd">bool</span>IsNetworkConnected()
{
    <span class="kwrd">bool</span> connected=<span class="kwrd">false</span>;
    <span class="kwrd">if</span>(SystemInformation.Network)
    {
        System.Management.ManagementObjectSearcher searcher=
                      <span class="kwrd">new</span> System.Management.ManagementObjectSearcher(
                      <span class="str">"SELECT NetConnectionStatus FROM Win32_NetworkAdapter"</span>);  

        <span class="kwrd">foreach</span>(System.Management.ManagementObject networkAdapter <span class="kwrd">in</span> searcher.Get())
        {
            <span class="kwrd">if</span>(networkAdapter[<span class="str">"NetConnectionStatus"</span>]!=<span class="kwrd">null</span>)
            {
                <span class="kwrd">if</span>((<span class="kwrd">int</span>)networkAdapter[<span class="str">"NetConnectionStatus"</span>]==2)
                {
                    connected = <span class="kwrd">true</span>;
                    <span class="kwrd">break</span>;
                }
            }
        }
        searcher.Dispose();
    }
    <span class="kwrd">return</span> connected;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.lowesoftware.com/code/network-link-detection-in-c-2/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fixing &#8220;The application failed to initialize properly (0xc0000135)&#8221;</title>
		<link>http://blog.lowesoftware.com/software-development/fixing-the-application-failed-to-initialize-properly-0xc0000135</link>
		<comments>http://blog.lowesoftware.com/software-development/fixing-the-application-failed-to-initialize-properly-0xc0000135#comments</comments>
		<pubDate>Wed, 01 Aug 2007 12:12:16 +0000</pubDate>
		<dc:creator>Alex Lowe</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.lowesoftware.com/software-development/fixing-the-application-failed-to-initialize-properly-0xc0000135</guid>
		<description><![CDATA[When attempting to run Microsoft .Net based applications, like many of those available from http://www.lowesoftware.com, you may get the following error on startup:
The application failed to initialize properly (0xc0000135) 
The cause of this error is that the Microsoft .Net framework is not installed or is damaged in some way. Therefore applications will fail to launch. 
To [...]]]></description>
			<content:encoded><![CDATA[<p><span class="pn-normal">When attempting to run Microsoft .Net based applications, like many of those available from <a href="http://www.lowesoftware.com/">http://www.lowesoftware.com</a>, you may get the following error on startup:</span></p>
<blockquote><p><span class="pn-normal"><strong><em>The application failed to initialize properly (0xc0000135)</em></strong></span><span class="pn-normal"> </span></p></blockquote>
<p><span class="pn-normal"></span><span class="pn-normal">The cause of this error is that the Microsoft .Net framework is not installed or is damaged in some way. </span><span class="pn-normal">Therefore applications will fail to launch.</span><span class="pn-normal"> </span></p>
<p><span class="pn-normal"></span><span class="pn-normal">To fix this error you can run Windows Update and find the Microsoft .Net framework update to install. Alternatively, you can download the Microsoft .Net Framework directly from Microsoft.</p>
<ul>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=262D25E3-F589-4842-8157-034D1E7CF3A3&amp;displaylang=en">Microsoft .Net 1.1</a></li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;DisplayLang=en">Microsoft .Net 2.0</a></li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043&amp;displaylang=en">Microsoft .Net 3.0</a></li>
</ul>
<p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lowesoftware.com/software-development/fixing-the-application-failed-to-initialize-properly-0xc0000135/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Network Link Detection in C#</title>
		<link>http://blog.lowesoftware.com/code/network-link-detection-in-c</link>
		<comments>http://blog.lowesoftware.com/code/network-link-detection-in-c#comments</comments>
		<pubDate>Mon, 23 Jul 2007 20:29:43 +0000</pubDate>
		<dc:creator>Alex Lowe</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://blog.lowesoftware.com/general/network-link-detection-in-c</guid>
		<description><![CDATA[This code snippit will show you how to detect if there is a network link on one of the network adaptors on your system. The function is written in C# and uses the Windows Management Instrumentation to get the link status.
It is ready to use, as is. It has been used on many projects, personal [...]]]></description>
			<content:encoded><![CDATA[<p>This code snippit will show you how to detect if there is a network link on one of the network adaptors on your system. The function is written in C# and uses the Windows Management Instrumentation to get the link status.</p>
<p>It is ready to use, as is. It has been used on many projects, personal and professional.</p>
<pre class="csharpcode">
<span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// Checks if a network is connected to the local machine.</span>
<span class="rem">/// &lt;/summary&gt;</span>
<span class="rem">/// &lt;returns&gt;true if network connected, false if not&lt;/returns&gt;</span>   

<span class="kwrd">static</span> <span class="kwrd">public</span> <span class="kwrd">bool</span> IsNetworkConnected()
{
    <span class="kwrd">bool</span> connected=<span class="kwrd">false</span>;     <span class="kwrd">if</span>(SystemInformation.Network)   

    {
        System.Management.ManagementObjectSearcher searcher=<span class="kwrd">new</span> System.Management.ManagementObjectSearcher
                            (<span class="str">"SELECT NetConnectionStatus FROM Win32_NetworkAdapter"</span>);
        <span class="kwrd">foreach</span>(System.Management.ManagementObject networkAdapter <span class="kwrd">in</span> searcher.Get())
        {
            <span class="kwrd">if</span>(networkAdapter[<span class="str">"NetConnectionStatus"</span>]!=<span class="kwrd">null</span>)
            {
                <span class="kwrd">if</span>((<span class="kwrd">int</span>)networkAdapter[<span class="str">"NetConnectionStatus"</span>]==2)
                {
                    connected = <span class="kwrd">true</span>;
                    <span class="kwrd">break</span>;
                }
            }
        }
        searcher.Dispose();
    }
    <span class="kwrd">return</span> connected; }</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.lowesoftware.com/code/network-link-detection-in-c/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Detecting Installed Microsoft .Net Framework (CLR) Version Information</title>
		<link>http://blog.lowesoftware.com/code/detecting-installed-microsoft-net-framework-clr-version-information</link>
		<comments>http://blog.lowesoftware.com/code/detecting-installed-microsoft-net-framework-clr-version-information#comments</comments>
		<pubDate>Fri, 20 Jul 2007 18:12:49 +0000</pubDate>
		<dc:creator>Alex Lowe</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://blog.lowesoftware.com/software-development/detecting-installed-microsoft-net-framework-clr-version-information</guid>
		<description><![CDATA[It can be difficult to detect which versions of the Microsoft .Net framework are installed and available on a Windows device. This article presents a method to detect information about installed Microsoft .Net Framework versions.
In addition to describing the method this article provides a functional class to query and detect the installed CLR versions as [...]]]></description>
			<content:encoded><![CDATA[<p>It can be difficult to detect which versions of the Microsoft .Net framework are installed and available on a Windows device. This article presents a method to detect information about installed Microsoft .Net Framework versions.</p>
<p>In addition to describing the method this article provides a functional class to query and detect the installed CLR versions as well as a command line tool that will print out .Net CLR information.</p>
<p><strong>Method</strong></p>
<p>There is no simple function call in the .Net framework to detect versions of installed frameworks. This does make sense though, because in the case that .Net is not available it would be impossible to execute such a function call. C++ native code solutions do exist to perform this function and one such implementation can be found on Aaron Stebner&#8217;s MSDN Blog <a href="http://blogs.msdn.com/astebner/archive/2004/09/18/231253.aspx">here</a>.</p>
<p>The method used in the tool provided in this article is to enumerate the installed frameworks in the %systemroot%\Microsoft.NET\Framework folder, open the mscorlib.dll files, and retrieve version build information. These version numbers can then be looked up in a table of descriptions to provide information about the service pack level the .Net version is.</p>
<p><strong>Command Line Tool</strong></p>
<p>A command line tool to query the installed Microsoft .Net frameworks can be downloaded <a href="http://www.lowesoftware.com/modules.php?op=modload&amp;name=Downloads&amp;file=index&amp;req=viewdownloaddetails&amp;lid=4">here</a>. This Lowe*Software tool was written using the C# snippet below.</p>
<p>Note that this tool is compiled under Microsoft .Net Framework 1.1 and requires a version of .Net to run.</p>
<p><strong>C# Code</strong></p>
<pre class="csharpcode">
<span class="kwrd">using</span> System;
<span class="kwrd">using</span> System.IO;
<span class="kwrd">using</span> System.Collections;
<span class="kwrd">using</span> System.Diagnostics;
<span class="kwrd">using</span> System.Text.RegularExpressions; 

<span class="kwrd">namespace</span> DotNetVersionInfo
{
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// This class is used to retrieve information about the </span>
    <span class="rem">/// Microsoft .Net Frameworks installed.</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">sealed</span> <span class="kwrd">class</span> DotNetVersion
    {
        <span class="kwrd">private</span> DotNetVersion()
        {
        } 

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// Retrieves the version of the CLR version the process is</span>
        <span class="rem">/// currently executing in.</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;returns&gt;A string representing the CLR version.&lt;/returns&gt;</span>
        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">string</span> GetCurrentCLRVersion()
        {
            <span class="kwrd">return</span> System.Environment.Version.ToString();
        } 

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// Retrieves a description of a CLR based on version. This</span>
        <span class="rem">/// method will return information about service pack levels.</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name="version"&gt;A string representing the CLR version.&lt;/param&gt;</span>
        <span class="rem">/// &lt;returns&gt;A description of the CLR.&lt;/returns&gt;</span>
        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">string</span> GetCLRVersionDescription(<span class="kwrd">string</span> version)
        {
            <span class="kwrd">switch</span>(version)
            {
                <span class="kwrd">case</span> <span class="str">"1.0.3705.0"</span>:
                    <span class="kwrd">return</span> <span class="str">".NET Framework 1.0 Original Release"</span>;
                <span class="kwrd">case</span> <span class="str">"1.0.3705.209"</span>:
                    <span class="kwrd">return</span> <span class="str">".NET Framework 1.0 Service Pack 1"</span>;
                <span class="kwrd">case</span> <span class="str">"1.0.3705.288"</span>:
                    <span class="kwrd">return</span> <span class="str">".NET Framework 1.0 Service Pack 2"</span>;
                <span class="kwrd">case</span> <span class="str">"1.0.3705.6018"</span>:
                    <span class="kwrd">return</span> <span class="str">".NET Framework 1.0 Service Pack 3"</span>;
                <span class="kwrd">case</span> <span class="str">"1.1.4322.573"</span>:
                    <span class="kwrd">return</span> <span class="str">".NET Framework 1.1 Original Release"</span>;
                <span class="kwrd">case</span> <span class="str">"1.1.4322.2032"</span>:
                    <span class="kwrd">return</span> <span class="str">".NET Framework 1.1 Service Pack 1"</span>;
                <span class="kwrd">case</span> <span class="str">"1.1.4322.2300"</span>:
                    <span class="kwrd">return</span> <span class="str">".NET Framework 1.1 Service Pack 1 (Windows Server 2003 SP1)"</span>;
                <span class="kwrd">case</span> <span class="str">"2.0.40607.16"</span>:
                    <span class="kwrd">return</span> <span class="str">".NET Framework 2.0 Beta 1"</span>;
                <span class="kwrd">case</span> <span class="str">"2.0.50215.44"</span>:
                    <span class="kwrd">return</span> <span class="str">".NET Framework 2.0 Beta 2"</span>;
                <span class="kwrd">case</span> <span class="str">"2.0.50727.42"</span>:
                    <span class="kwrd">return</span> <span class="str">".NET Framework 2.0 Original Release"</span>;
                <span class="kwrd">default</span>:
                    <span class="kwrd">return</span> <span class="str">"Unknown Version"</span>;
            }
        } 

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// Retrieves a list of versions installed on the current machine.</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;returns&gt;A string array of installed CLR versions.&lt;/returns&gt;</span>
        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">string</span>[] GetInstalledCLRVersions()
        {
            ArrayList versions=<span class="kwrd">new</span> ArrayList(); 

            <span class="kwrd">string</span> frameworkpath=Path.Combine(
                Environment.SystemDirectory,
                <span class="str">;@"..Microsoft.NETFramework"</span>); 

            <span class="kwrd">string</span>[] dirs=Directory.GetDirectories(frameworkpath, <span class="str">"v*.*.*"</span>); 

            <span class="kwrd">foreach</span>(<span class="kwrd">string</span> dir <span class="kwrd">in</span> dirs)
            {
                <span class="kwrd">try</span>
                {
                    <span class="kwrd">if</span>(Regex.IsMatch(dir, <span class="str">"v[0-9]{1,5}.[0-9]{1,5}.[0-9]{1,5}.[0-9]{1,5}"</span>))
                    {
                        FileVersionInfo verinfo=FileVersionInfo.GetVersionInfo(
                            Path.Combine(frameworkpath, dir + <span class="str">;@"Mscorlib.dll"</span>)); 

                        versions.Add(
                            verinfo.FileMajorPart + <span class="str">"."</span> +
                            verinfo.FileMinorPart + <span class="str">"."</span> +
                            verinfo.FileBuildPart + <span class="str">"."</span> +
                            verinfo.FilePrivatePart);
                    }
                }
                <span class="kwrd">catch</span> {}
            } 

            <span class="kwrd">return</span> (<span class="kwrd">string</span>[])versions.ToArray(<span class="kwrd">typeof</span>(<span class="kwrd">string</span>));
        }
    }
}</pre>
<p><strong>References</strong></p>
<p><a href="http://blogs.msdn.com/astebner/archive/2004/09/18/231253.aspx">http://support.microsoft.com/default.aspx?kbid=318785</p>
<p>http://blogs.msdn.com/astebner/archive/2004/09/14/229574.aspx</p>
<p>http://blogs.msdn.com/astebner/archive/2004/09/18/231253.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lowesoftware.com/code/detecting-installed-microsoft-net-framework-clr-version-information/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

