I wanted to have my .NET based Palm OS conduit DLL be able to report the version of the HotSync Manager that the user has installed on their computer. Initially, I was going to try to read the version of the executable, but then I would first have to find the path to the executable, and hope that this would be a reliable enough method.
As it turns out, after I did a little investigation, I found out that it is not necessary to try and figure out where the HotSync Manager is installed by reading the appropriate registry key to get the HotSync Manager location and then trying to get the version number of the assembly at that path. Because the user is in the conduit code, the HotSync Manager (HOTSYNC.EXE) is already in the running processes list. It just so happens that in the System.Diagnostics namespace there is a handy dandy method that gets all of the running processes, along with a goodly amount of information about each process, including the version number.
So here is my VB.NET code that searches for the HotSync Manager process and returns the version number as a string.
Function GetHotSyncVersion() As String Dim versionString As String = "Unknown" Dim procList As List(Of Process) = Process.GetProcesses().ToList Dim hotSyncProcess As Process = Nothing For Each p In procList If p.ProcessName.ToUpper = "HOTSYNC" Then hotSyncProcess = p End If Next If hotSyncProcess IsNot Nothing Then versionString = hotSyncProcess.MainModule.FileVersionInfo.FileVersion End If Return versionString End Function
Sorry I missed the CIDUG meeting tonight.