1、OnStart()最常見的問題:在OnStart()的執行時間問題,如果超過30秒SCM會武斷的認為服務無法啟動,所以建議放到線程中執行。
2、調試最痛苦的問題:這個就直接貼上代碼,在mian中寫入如下代碼
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Watcher() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
//#region //Console.WriteLine("Console"); //Watcher watcher = new Watcher(); //watcher.OnStart(null); //Console.ReadLine(); //watcher.OnStop(); //watcher.Dispose(); //#endregion }
請好好看看代碼,我喜歡登出了來切換調試與發布版的程式,你也可以通過用#if 或者通過輸入參數來判斷。這個可能比較難,建議新手還是老老實實的註冊再運行(我也剛學^_^,但是我不老實)。
3、註冊服務的問題:用C:\Windows\Microsoft.NET\Framework\v2.0.50727目錄下的InstallUtil.exe執行(在命令列中:目前的目錄=>InstallUtil [-u表示卸載] 服務名.exe)。
如果你想直接安裝的話可以搜下windows服務安裝,有不用InstallUtil.exe版本的,還圖文並茂,這裡就不說了。
4、功能限制的問題:說起來服務差不多就是木馬,反過來也差不多,你看不見摸不著的,呵呵,所以它有好多許可權被限制了,不過你完全可以放到別的程式裡,然後通過服務控制通訊就可以了。
5、截屏的問題:哎,第一次編程我就想幹壞事,呵呵,然後會報錯,但是在控制台是正確的。原因很簡單,服務是沒有介面的因此跟案頭無關,當然就沒法截屏了。
6、執行目錄的問題:C:\Windows\System32這個是它的執行目錄,不是你的程式所在的目錄。
暫時就這麼多,希望用過windows服務的童鞋們,把遇到過的、沒遇到過的、已經解決的、沒解決的問題都發上來給大家分享^_^,非常感謝