if ($_SERVER['REQUEST_METHOD'] == 'POST')
корректный путь, можно отправить запрос сообщения без любых данных сообщения.
Итак, я нашел решение, которое сработало для меня:
Type type = Type.GetTypeFromProgID("WindowsInstaller.Installer");
Installer msi = (Installer)Activator.CreateInstance(type);
foreach (string productcode in msi.Products)
{
string productname = msi.get_ProductInfo(productcode, "InstalledProductName");
if (productname.Contains("<APPLICATION NAME>"))
{
string installdir = msi.get_ProductInfo(productcode, "InstallLocation");
}
}
Если установка выполняется с помощью MSI, получение информации из WMI тривиально. У класса Win32_Product есть свойство InstallLocation для хранения этой информации.
Использование WMI может работать для некоторых людей, к сожалению, у наших пользователей не будет учетных данных, позволяющих делать это на своих машинах:
ManagementObjectSearcher search = new ManagementObjectSearcher("Select InstallationLocation from Win32_Product");
ManagementObjectCollection results = search.Get();
foreach (ManagementObject mo in results)
{
Console.WriteLine(mo["InstallLocation"]);
}