2011-01-28 156 views
7

我在安裝Windows服務時遇到問題。我安裝並卸載了多次服務(installutil ..... installutil/u),沒有任何問題,但出現了一些問題,現在當我嘗試安裝時,出現以下錯誤消息。我檢查了計算機管理控制檯,服務CIMediator沒有出現在服務列表中。我如何刪除服務?安裝Windows服務時出現問題

System.ArgumentException:源CIMediator已經存在於本地計算機上。

回答

0

檢查註冊表中是否存在密鑰。

HKLM \系統\ CurrentControlSet \服務\ CIMediator(可能是,除非關鍵是不同的定義)

如果是,密鑰導出到.reg文件,然後將其刪除。

14

剛剛解決了同樣的問題,也經過多次卸載/安裝/重新啓動。 我有我自己的實現服務的安裝程序,我已經指定的應用程序事件日誌(從[System.Configuration.Install.Installer] [1]得到的)的如下:

public ProjectInstaller() 
    { 
     InitializeComponent(); 

     EventLogInstaller installer = FindInstaller(this.Installers); 
     if (installer != null) 
     { 
      installer.Log = "MyService";     
     } 
    }  

您可能具有相同的功能實現的下面的方式([MSDN:EventLog.CreateEventSource方法] [2]):

if(!EventLog.SourceExists("MySource")) 
{ 
    EventLog.CreateEventSource("MySource", "MyNewLog"); 
} 

在我的情況下,在一些EventLog是successfuly創建安裝的,但在卸載過程中出現了問題,而事件日誌未刪除(雖然它沒有在EventViewer中顯示,但它仍然存在e註冊表)。 因此,錯誤「MyService已經存在於本地計算機上」,顯然是EventLog的錯誤,而不是服務本身。

你可以試着做到以下幾點:

轉到您的開始菜單和類型regedit。這將打開註冊表編輯器。要小心,總是建議在做任何事情(文件 - >導出)之前備份整個註冊表,或者只有您要編輯/刪除的密鑰。 打開編輯 - >查找,鍵入CIMediator並僅保留Keys檢查。您的服務名稱應顯示爲鍵多次,在以下位置

HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \服務\事件日誌\ CIMediator,
HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \服務\ CIMediator,
HKEY_LOCAL_MACHINE \系統\ CurrentControlSet \服務\事件日誌\ CIMediator,
HKEY_LOCAL_MACHINE \系統\ CurrentControlSet \服務\ CIMediator

嘗試刪除這些註冊表項。它爲我工作。

1 2

+0

完美解決方案。我找到了在註冊表中生成的密鑰。我相信我沒有通過Project Bin文件夾安裝它。不知道它是如何創建註冊表項而不安裝的。只是好奇。但是,刪除現有的鍵確實解決了我的問題。謝謝。 – 2016-03-18 16:34:19