我正在开发一个软件,将列出所有的软件安装在计算机上现在我想卸载它使用我的程序在C#通过调用该软件的卸载键在注册表键我的程序是这样的,但过程不工作
var UninstallDir = "MsiExec.exe /I{F98C2FAC-6DFB-43AB-8B99-8F6907589021}";
string _path = "";
string _args = "";
Process _Process = new Process();
if (UninstallDir != null && UninstallDir != "")
{
if (UninstallDir.StartsWith("rundll32.exe"))
{
_args = ConstructPath(UninstallDir);
_Process.StartInfo.FileName = Environment.SystemDirectory.ToString() + "\\explorer.exe";
_Process.StartInfo.Arguments = Environment.SystemDirectory.ToString() + "\\" + UninstallDir;
_Process.Start();
}
else if (UninstallDir.StartsWith("MsiExec.exe"))
{
_args = ConstructPath(UninstallDir);
_Process.StartInfo.FileName = Environment.SystemDirectory.ToString() + "\\cmd.exe";
_Process.StartInfo.Arguments = Environment.SystemDirectory.ToString() + "\\" + UninstallDir;
_Process.Start();
}
else
{
//string Path = ConstructPath(UninstallDir);
_path = ConstructPath(UninstallDir);
if (_path.Length > 0)
{
_Process.StartInfo.FileName = _path;
_Process.StartInfo.UseShellExecute = false;
_Process.Start();
}
}发布于 2012-02-03 17:45:16
尝试以下方法:
Process p = new Process();
p.StartInfo.FileName = "msiexec.exe";
p.StartInfo.Arguments = "/x {F98C2FAC-6DFB-43AB-8B99-8F6907589021}/qn";
p.Start(); 请访问此链接:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/msiexec.mspx?mfr=true
HTH。
发布于 2015-07-25 05:38:43
misexec.exe代码的问题在于,运行cmd.exe someprogram.exe不会启动程序,因为cmd.exe不会执行传递给它的参数。但是,您可以通过使用here中看到的/C开关来告诉它。在您的情况下,这应该是可行的:
_Process.StartInfo.FileName = Environment.SystemDirectory.ToString() + "\\cmd.exe";
_Process.StartInfo.Arguments = "/C " + Environment.SystemDirectory.ToString() + "\\" + UninstallDir;我所做的就是在参数的开头添加/C (后面有一个空格)。然而,我不知道如何让你的rundll32.exe代码工作。
发布于 2016-03-10 13:31:48
您的解决方案看起来不错,但在\qn之前要留点空间
p.StartInfo.Arguments = "/x {F98C2FAC-6DFB-43AB-8B99-8F6907589021} /qn"; 否则它不会在静默模式下工作。
https://stackoverflow.com/questions/9126104
复制相似问题