C# 有没有办法在没有卸载注册表或C:\Windows\Installer的情况下检测安装位置?

C# 有没有办法在没有卸载注册表或C:\Windows\Installer的情况下检测安装位置?,c#,batch-file,installation,windows-installer,batch-processing,C#,Batch File,Installation,Windows Installer,Batch Processing,我需要检测的某些可执行文件已正确安装,但尚未在普通计算机\HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall中写入InstallLocation\ 我还检查了C:\Windows\Installer,但在msi文件中找不到GUID 有没有方法知道文件安装在哪里?< < /P> < P> >强> MSI API < /强>:这里是一个使用VBScript的安装路径,用于 >代码>微软Visual C+

我需要检测的某些可执行文件已正确安装,但尚未在普通计算机\HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall中写入InstallLocation\

我还检查了C:\Windows\Installer,但在msi文件中找不到GUID

有没有方法知道文件安装在哪里?< < /P> < P> >强> MSI API < /强>:这里是一个使用VBScript的安装路径,用于<强> >代码>微软Visual C++ 2012 x86最小运行时间-110.50727 < /代码> <强>更新GUID以供您使用(很明显):

Set i=CreateObject(“WindowsInstaller.Installer”)
微软Visual C++ 2012 x86最小运行时间-110.50727
MsgBox i.ComponentPath(“{2F73A7B2-E50E-39A6-9ABC-EF89E4C62E36},{F5CBD6DC-5C9C-430E-83A7-179BA49988CD}”)
安装程序。组件路径
方法:

  • 第一个参数是产品代码
  • 第二个参数是部件代码

GUIDs:使用打开有问题的MSI(或同等产品,请参阅链接),在
“属性表”
中查找产品代码,并在
“组件表”
中查找组件代码


对于已安装的软件包,您可以执行以下操作:

  • 产品代码
  • 打开缓存的MSI:您可以找到缓存的MSI并在Orca中执行文件=>打开以检索所需信息。您可以使用下面的脚本找到缓存路径
查找缓存的MSI:。它将允许您查找已安装MSI的本地缓存路径

gwmi -Query "SELECT Name,LocalPackage FROM Win32_Product WHERE IdentifyingNumber='{2F73A7B2-E50E-39A6-9ABC-EF89E4C62E36}'" | Format-Table Name,LocalPackage

链接:


对于特定的应用程序?对于特定的应用程序是的。
其中/r c:\Applicationname.exe
我希望在某个地方会写一些东西。因为我好像知道它在哪里。好吧,那样的话。非常感谢您的回复。我已经看到你的其他回复有关微星,这是非常有帮助的。谢谢,你是受欢迎的-希望它有帮助。是的,MSI是一种奇怪的技术(有点下流)和相当多的怪癖:和(关于“反模式”的部分)。