C#??????????????·???????????
???????????? ???????[ 2013/9/18 13:27:32 ] ????????
?????????????λ?ò???????????????????????????????λ??д???????????????·???????λ?????
????HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Paths
??????????????????????·?????????
??????????????????????????????????????????е??????????office word???????н?winword
????????????????exe?????·????????????е????Path.GetDirectoryName()????
public enum Softwares
{
//The names are the same with the registry names.
//You can add any software exists in the "regedit" path:
//HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Paths
EXCEL?? //Office Excel
WINWORD?? //Office Word
MSACCESS?? //Office Access
POWERPNT?? //Office PowerPoint
OUTLOOK?? //Office Outlook
INFOPATH?? //Office InfoPath
MSPUB?? //Office Publisher
VISIO?? //Office Visio
IEXPLORE?? //IE
ITUNES //Apple ITunes
//.........
}
public class SoftwareOperator
{
//When you do not want to use string name?? then use the Enum instead
public static bool TryGetSoftwarePath(Softwares softName?? out string path)
{
return TryGetSoftwarePath(softName.ToString()?? out path);
}
public static bool TryGetSoftwarePath(string softName?? out string path)
{
string strPathResult = string.Empty;
string strKeyName = ""; //"(Default)" key?? which contains the intalled path
object objResult = null;
Microsoft.Win32.RegistryValueKind regValueKind;
Microsoft.Win32.RegistryKey regKey = null;
Microsoft.Win32.RegistryKey regSubKey = null;
try
{
//Read the key
regKey = Microsoft.Win32.Registry.LocalMachine;
regSubKey = regKey.OpenSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionApp Paths" + softName.ToString() + ".exe"?? false);
//Read the path
objResult = regSubKey.GetValue(strKeyName);
regValueKind = regSubKey.GetValueKind(strKeyName);
//Set the path
if (regValueKind == Microsoft.Win32.RegistryValueKind.String)
{
strPathResult = objResult.ToString();
}
}
catch (System.Security.SecurityException ex)
{
throw new System.Security.SecurityException("You have no right to read the registry!"?? ex);
}
catch (Exception ex)
{
throw new Exception("Reading registry error!"?? ex);
}
finally
{
if (regKey != null)
{
regKey.Close();
regKey = null;
}
if (regSubKey != null)
{
regSubKey.Close();
regSubKey = null;
}
}
if (strPathResult != string.Empty)
{
//Found
path = strPathResult;
return true;
}
else
{
//Not found
path = null;
return false;
}
}
}
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11