Удалите программу, используя System.Diagnostic.Process и ее UninstallString в C#

Я использую этот код (пробовал это тоже) Чтобы удалить программу, используя мою строку удаления в моем реестре, но в коде первой ссылки есть некоторые ошибки. Я пытаюсь это исправить, но мне трудно понять, что будет в имени файла, а что в Аргументах. Моя UninstalString это:

rundll32.exe dfshim.dll, ShArpMaintain ItemMan.Client.application, культура = нейтральная, PublicKeyToken=4f1069eb693dc232, processorArchitecture=msil

Каталог в реестре

CurrentUser\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\9e648bbdf5bc3053

Часть, с которой у меня проблемы:

            System.Diagnostics.Process FProcess = new System.Diagnostics.Process();
            FProcess.StartInfo.FileName = "rundll32.exe"; (Dont know if this is right though, but have tried various ways to write the FileName...)
            FProcess.StartInfo.Arguments = "9e648bbdf5bc3053";
            FProcess.StartInfo.UseShellExecute = false;
            FProcess.Start();
            FProcess.WaitForExit();

С этим битом ничего не происходит. Все остальные способы я пробовал выкидывает ошибку. КАК вы порежете / используете uninstalString для удаления этой программы?

1 ответ

Решение

Строка удаления - это все, все после первого исполняемого файла является аргументами, поэтому вам нужно сделать что-то вроде:

var start_info = new StartInfo() {
    FileName = "rundll32.exe",
    Arguments = "dfshim.dll,ShArpMaintain ItemMan.Client.application, Culture=neutral, PublicKeyToken=4f1069eb693dc232, processorArchitecture=msil",
    UseShellExecute = false
};

Process process = new Process(start_info);

process.Start();
process.WaitForExit();
Другие вопросы по тегам