2010-03-05 115 views
0

我想使用WMI卸载程序,但出现此错误:“Access is denied。(Exception from HRESULT:0x80070005(E_ACCESSDENIED))”。安装它没有任何问题,使用相同的ConnectionOptions。 管理员用户是否有任何可能需要安装软件,但不能卸载?如果是这样,我该如何编辑它们?使用WMI卸载程序

Main() 
{ 
     ConnectionOptions oConn = new ConnectionOptions(); 
     oConn.Impersonation = ImpersonationLevel.Impersonate; 
     oConn.EnablePrivileges = true; 
     oConn.Username = "Administrator"; 
     oConn.Password = "password"; 

     System.Management.ManagementScope oMs = 
      new System.Management.ManagementScope("\\\\192.168.14.128\\root\\cimv2", oConn); 

     Uninstall(oMs, "\\\\192.168.14.128\\root\\cimv2:Win32_Product.IdentifyingNumber= \"{926C96FB-9D0A-4504-8000-C6D3A4A3118E}\",Name=\"Java DB 10.4.2.1\",Version=\"10.4.2.1\""); 

} 

    static void Uninstall(ManagementScope oMs, string path) 
    { 
     if (!oMs.IsConnected) oMs.Connect(); 
     ManagementObject product = new ManagementObject(path); 

     if ((product != null) && (product.Path.ClassName == 
     "Win32_Product")) 
     { 
      object result = product.InvokeMethod("Uninstall", null); //here is where I get the error 
      Console.WriteLine("The Uninstall method result is {0}", 
      result.ToString()); 
     } 
    } 

谢谢!

+1

当您尝试卸载时,应用程序正在使用还是锁定文件? – slugster

+0

手动卸载(从添加删除程序)工作没有任何问题 –

+0

带有示例代码的任何解决方案? – Kiquenet

回答

0

你在XP机器上这样做吗?我只是谷歌-D你的错误号码,并得到了几个链接:http://www.0x80070005.net/。有很多的有关问题的信息,这里是一个复制和粘贴:

0X80070005经常发生错误时 在 的Windows任务计划程序计划任务被损坏,则需要 安装安全更新,其中将 收到一条错误消息。错误 消息通常显示“访问被拒绝”。 这里它需要一个漏洞任务 调度器,它将允许代码 执行。这些是在早期的 公告中发布的安全更新 。这需要一个Microsoft知识库 。所以很明显, 这个错误是关于安全问题 ,它发现访问中的错误。

此外,我们正在使用WiX作为我们的安装程序解决方案。不知道它是否可以使用,但我想我会把它扔在那里。

+0

这个问题发生在XP上,是的。 我不想为我的软件构建套件并安装它。我想使用WMI远程安装/卸载软件。 尝试远程卸载时出现此问题,而不是在安装时出现此问题。所以这可能不是Windows XP的问题。 –