Article ID: 306222 - Last Review: December 11, 2006 - Revision: 2.2

How to use a file name to start an application by using Visual C#

System TipThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
This article was previously published under Q306222

On This Page

Expand all | Collapse all

SUMMARY

This step-by-step article shows you how to start the application that is associated with a given document extension or file type without needing to know the name or location of the associated application. For example, you can start Arcade.bmp with the application that is associated with the .bmp file extension, which is MSPaint.exe in most cases.

Requirements

  • Microsoft C# .NET
  • Microsoft Visual C# 2005

Include Namespaces

The namespace must appear before the class declaration, as follows:
using System.Diagnostics;
				

Specify the ProcessStartInfo Information

You can use the ProcessStartInfo structure of the .NET Framework Process class to specify options when you start a process. This article outlines how to use the file name option. Another member, UseShellExecute, specifies that the process be started based on a file extension or file type instead of the name of the executable (.exe). This property is set to true by default. It is set explicitly in this code for illustrative purposes.
string sysFolder =
 Environment.GetFolderPath(Environment.SpecialFolder.System);
ProcessStartInfo pInfo = new ProcessStartInfo();
pInfo.FileName = sysFolder + @"\eula.txt";
pInfo.UseShellExecute = true;
				

Start the Application

This example opens a file named Eula.txt. The file is opened with the application that is associated with the .txt file extension, which is normally Notepad.exe. You can substitute any file name or type that has an associated application.
Process p  = Process.Start(pInfo);
				

Shortcut to Start the Application

Because UseShellExecute is true by default, you are not required to use ProcessStartInfo when you start a process. You can start the associated application with a single line of code, as follows:
Process p  = Process.Start(@"C:\winnt\system32\eula.txt");
				

Complete Code Sample

using System.Diagnostics;

    //Get path of the system folder.
    string sysFolder =
    Environment.GetFolderPath(Environment.SpecialFolder.System);
    //Create a new ProcessStartInfo structure.
    ProcessStartInfo pInfo = new ProcessStartInfo();
    //Set the file name member. 
    pInfo.FileName = sysFolder + @"\eula.txt";
    //UseShellExecute is true by default. It is set here for illustration.
    pInfo.UseShellExecute = true;
    Process p  = Process.Start(pInfo);
				

Troubleshooting

It is possible that an individual computer may not have the associated application installed, or the associations in the registry may not be correct. It is best to wrap this code in a try...catch block so that your application is alerted in the event of a failure.


APPLIES TO
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
Keywords: 
kbdiagnostics kbhowtomaster KB306222