My application requires a simple ini file. Is there a easy way to implement this without using any parsing

Yes. This may not be the most efficient way to read from a ini file but it is a pretty good solution that is easy to maintain. You can use a XML file to store your settings. Use a DataSet to read from it. Consider a simple sample file, config.ini. It has three parameters base_path, update_path and output_file. These will map to columns in the settings datatable. view config.ini // add error handling DataSet ds = new DataSet(); ds.ReadXml(‘config.ini’, XmlReadMode.Auto); DataTable table = ds.Tables[‘settings’]; DataRow row = table.Rows[0]; string baseFolder = (string)row[‘base_path’]; string updateFolder = (string)row[‘update_path’]; string outputFileName = (string)row[‘output_file’]; You can of course use XmlReader, XmlDocument etc to create and maintain more complex ini files. But this is a quick way to maintain a simple property set.

How can I find all programs with a GUI (not just arbitrary windows) that are running on my local machine

You could use EnumWindows with p/Invoke, but using the static Process.GetProcesses() found in the System.Diagnostics namespace will avoid the interop overhead. [C#] Using System.Diagnostics; … foreach ( Process p in Process.GetProcesses(System.Environment.MachineName) ) { if( p.MainWindowHandle != IntPtr.Zero) { //this is a GUI app Console.WriteLine( p ); // string s = p.ToString(); } } [VB.NET] Imports System.Diagnostics … Dim p As Process For Each p In Process.GetProcesses(System.Environment.MachineName) If p.MainWindowHandle <> IntPtr.Zero Then ’this is a GUI app Console.WriteLine(p) ’ string s = p.ToString(); End If Next p There is one potential problem on Windows 98. If a process was started with ProcessStartInfo.UseShellExecute set to true, this MainWindowHandle is not available.

How can I get a list of all processes running on my system

Use the static Process.GetProcesses() found in the System.Diagnostics namespace. [C#] Using System.Diagnostics; … foreach ( Process p in Process.GetProcesses() ) Console.WriteLine( p ); // string s = p.ToString(); [VB.NET] Imports System.Diagnostics … Dim p As Process For Each p In Process.GetProcesses() Console.WriteLine(p) ’ string s = p.ToString() Next p

How can I run an EXE from within my application

Use the Process class found in the System.Diagnostics namespace. [C#] Process proc = new Process(); proc.StartInfo.FileName = @’Notepad.exe’; proc.StartInfo.Arguments = ”; proc.Start(); [VB.NET] Dim proc As New Process() proc.StartInfo.FileName = ‘Notepad.exe’ proc.StartInfo.Arguments = ” proc.Start()