code211218 Asked:2020-05-20 13:03:12 +0800 CST2020-05-20 13:03:12 +0800 CST 2020-05-20 13:03:12 +0800 CST 如何找出程序(如 calc.exe)的路径? 772 比如在cmd中你可以通过写calc.exe来运行 他的真实道路 c:\Windows\System32\calc.exe 如何在c#中找出calc.exe的路径? c# 1 个回答 Voted Best Answer iluxa1810 2020-05-20T15:40:28+08:002020-05-20T15:40:28+08:00 由其名称 *.exe 启动的程序是通过环境变量执行的,它指定了用于搜索可执行文件的目录。 因此,您所需要做的就是通过 遍历环境变量Environment.GetEnvironmentVariable,然后遍历包含文件的目录。 但并非所有程序都在那里注册。 有注册表选项: string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; using(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key)) { foreach(string subkey_name in key.GetSubKeyNames()) { using(RegistryKey subkey = key.OpenSubKey(subkey_name)) { Console.WriteLine(subkey.GetValue("DisplayName")); } } } 和 WMI: ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Product"); foreach(ManagementObject mo in mos.Get()) { Console.WriteLine(mo["Name"]); } 然而,如果程序没有安装,而只是启动了一些 EXE 文件,那么你不太可能在任何地方找到关于它的记录 => 你将不得不搜索所有磁盘和目录的完整枚举。
由其名称 *.exe 启动的程序是通过环境变量执行的,它指定了用于搜索可执行文件的目录。
因此,您所需要做的就是通过 遍历环境变量
Environment.GetEnvironmentVariable
,然后遍历包含文件的目录。但并非所有程序都在那里注册。
有注册表选项:
和 WMI:
然而,如果程序没有安装,而只是启动了一些 EXE 文件,那么你不太可能在任何地方找到关于它的记录 => 你将不得不搜索所有磁盘和目录的完整枚举。