我創建了一個窗口服務並安裝它,我創建了它的部署項目並安裝了它。安裝後,我盯着它。它成功開始。System.Security.SecurityException
第二天我做了一些修改,重建和重新安裝,但現在它不安裝。
然後我認爲它與安裝程序的問題,讓我們創建一個服務的自定義安裝程序,以便我可以隨時更新我的代碼。
我創建它就像這個incase如果有人需要這個未來。
public class MyInstaller : Installer
{
ServiceProcessInstaller spi;
ServiceInstaller si;
public MyInstaller()
{
spi = new ServiceProcessInstaller();
spi.Account = ServiceAccount.LocalSystem;
si = new ServiceInstaller();
si.StartType = ServiceStartMode.Manual;
si.ServiceName = "MyService";
si.DisplayName = "My Service";
si.Description = "service installed from command line";
this.Installers.Add(spi);
this.Installers.Add(si);
}
}
我通過檢查參數args從main方法調用它。
case "-i":
case "-install":
ti = new TransactedInstaller();
mi = new MyInstaller();
ti.Installers.Add(mi);
string logPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\install.log";
ctx = new InstallContext(logPath, cmdline);
ti.Context = ctx; //.Context (ctx);
ti.Install(new Hashtable());
break;
現在,當我試圖安裝。 我收到錯誤System.Security.SecurityException:未找到源,但無法搜索某些或全部事件日誌。無法訪問的日誌:安全。
我谷歌它,並知道服務將嘗試訪問應用程序日誌,同時安裝和寫入日誌那裏。
我不寫任何事件日誌。我有我的log4net記錄。但仍然是它的默認行爲。
如何解決這個問題呢?即使我擁有所有權限,它仍未安裝。
謝謝
我用cntrl + shift +在運行中輸入。然後,我再次manaully右鍵單擊並作爲管理員運行,它工作的人。感謝我正在做的一個愚蠢的錯誤。 但我想知道如何改善窗口服務的啓動/停止性能。 – sunder
@sunder:開始/停止表現將與你的服務正在做的事情有很大關係。 '開始'應該沒問題,因爲通常你會啓動一個新的線程來完成這項工作。要阻止你,需要一些快速的方法來阻止線程的行爲。所以沒有通用的方法來提高性能。 –
我創建了一個批處理文件(.BAT)來安裝該服務,並且我以管理員身份運行該批處理,但不起作用。然後,我以管理員身份運行命令提示符,並在沒有BAT文件的情況下安裝該服務,只需輸入EXE文件的安裝名稱即可。我不知道爲什麼會發生這種情況,但也許可以幫助其他人。我認爲這可能與這樣一個事實有關,即以管理員身份運行BAT文件不會執行您以admin身份執行的代碼,而只是BAT文件。 –