技術

Articles

用Visual Studio開發Window作業系統服務

Windows作業系統,背後有一大堆服務在運作著,早期是開發主控台應用程式(沒有UI介面的EXE執行檔),然後用工作排程器運作,這是一種解決方案,但是其實Visual Studio工具可以直接開發系統服務,首先要開新專案,選Windows 服務,如下圖: 不囉嗦,其他步驟就略過,直接到重點,建立好專案後,進入第一個設計模式畫面(Service1.cs)中,在畫面任一處按右鍵,出現選單選擇加入安裝程式,如下: 接著再安裝設計模式中會出現兩個元件,點選serviceInstaller1元件的屬性設定,如下圖紅框處都要修改一下。 同樣的點選serviceProcessInstaller1元件,有個服務執行的角色權限設定要調整一下,LocalSystem的權限是最大的,用甚麼權限就視服務本身做的事情來決定了。 編輯Service1.cs的兩個方法(OnStart、OnStop)後工作就完成了,你會發現直接按下綠色小箭頭開始是無法測試的,如下圖: 只好乖乖的把服務安裝起來,並且用NET START與NET STOP等命令提示字元進行測試。這個時候要靠.NET framework本身的工具(installutil.exe)來進行服務安裝與移除。 打開命令提示字元(需有本機管理員權限才能建立系統服務) 安裝服務 C:WindowsMicrosoft.NETFrameworkv4.0.30319InstallUtil.exe D:CSharpProjectMyServicebinDebugMyService.exe 移除服務 C:WindowsMicrosoft.NETFrameworkv4.0.30319InstallUtil.exe /u D:CSharpProjectMyServicebinDebugMyService.exe 測試方式(建置方案後) net start MyService net stop MyService 因為沒有任何UI,那Debug 要怎麼做,這時候就要借重事件檢視器,然後工具會將所有的log,包含exception,都會寫到事件檢測器中,要自己寫log也很簡單,只要依照以下就可以: this.EventLog.WriteEntry("WHO can help?");
技術
0
minutes

Visual Studio專案用的dll怎麼放?

有很多種放置的方式,但最好的方式應該算是在專案下建立一個lib的資料夾,然後修改app.config,加入以下區段: <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> ...
技術
0
minutes

沒有光碟機怎麼安裝Windows作業系統

因具備光碟機的電腦設備已漸漸式微,沒有光碟機可以安裝作業系統嗎?答案是可以的,可以改用隨身碟的方式,許多作業系統的安裝都有支援隨身碟版本。 Windows 10 安裝,下載官方版本執行時,會問你要使用隨身碟還是ISO檔案,相當簡單喔,從以下網址下載並執行即可。https://www.microsoft.com/zh-tw/software-download/windows10ISO
技術
0
minutes

免費的Windows10開發與測試環境

網路上有許多免費的資源,Windows就提供給開發者三個月(90)天的使用期限,雖然每三個月都要更換,但有總比沒有好。
技術
0
minutes

C#應用程式連線Oracle DB免安裝Client的方法

使用framework內建的System.Data.OracleClient,這個需要安裝Oracle Client並且設定tnsname.ora檔案才可以與Oracle DB連線,工具會報出已過時的警告,建議不要用這種方式,因為.net framework已不在支援這樣的寫法。 那就只好使用另一種方式了(Oracle官方出品),就是Oracle.DataAccess.Client或 Oracle.ManagedDataAccess.dll,這兩種( 也叫ODP.net )方式都不用安裝Oracle Client, Oracle.ManagedDataAccess.dll 性能最優,官方下載位置在這裡。 當然也可以用Nuget的方式去安裝。PM> Install-Package Oracle.ManagedDataAccess -Version 19.6.0 解壓縮ODP.net後在參考本篇,加入到參考中,就可以連線Oracle DB了。 一個簡單的select範例如下: string conn_str = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=主機位置)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=DB的SID)));User ID=DB帳號;Password=DB密碼;"; OracleConnection conn_oracle = new...
技術
0
minutes

Docker設定

Docker簡單的說就像是一台虛擬機器(Guest OS),甚至可以使用終端機下指令。 其實需要連線到終端機的情況並不多 ,Synology NAS的Docker已經把重要的資料設定變成環境變數,只要新增環境變數就可以達成設定參數檔案的功能,在修改前要先停止服務,才能編輯。 以下是一個簡單的例子設定電子郵件(無驗證與SSL)的運作 : SMTP_ENABLED = true SMTP_METHOD = smtp (Redmine可設定 async_smtp 延後再寄功能) SMTP_HOST = 192.168.1.100 SMTP_PORT = 25 SMTP_STARTTLS = false SMTP_OPENSSL_VERIFY_MODE = none SMTP_TLS = false 下面的例子是有驗證並使用中華電信的SMTP主機: SMTP_ENABLED =...
技術
0
minutes