解說幾個 EventLog 常用操作方法與重要觀念

最近在開發一些 Windows Service 程式,由於過程中修修改改的,所以藉此整理一下思緒,也順手開發出一套簡易的 EventLog 管理工具,可方便建立、刪除、查詢 EventSource 的相關資訊,也可以刪除 LogName 等資料,避免程式在寫入 EventLog 的時候發生錯誤。

我想如何使用 EventLog.WriteEntry 應該不用多說了,但在使用 EventLog.WriteEntry 之前,卻有幾個蠻重要的觀念要傳達。

如果你要在 EventLog 中建立自己的 LogName 或 EventSource 必須要知道你的程式在執行時「權限」夠不夠的問題。一般來說,我們會用 EventLog.CreateEventSource 幫我們建立自訂的 EventSource 與 LogName,但是你若是以 LocalSystem 帳戶執行 Windows Service 的話,並沒有執行這個方法所需的權限,所以解決之道必須在安裝的過程中進行建立,否則在執行 EventLog.WriteEntry 時會失敗。

如果你之前已經建立了 EventSource 且也已經指派了 LogName 的話,如果因為程式修正 LogName 的名稱,且原本機器上的 EventSource 沒有刪除時,也會引發例外事件,解決之道就是先刪除舊的 EventSource 再重建時指派新的 LogName 即可。

以下程式範例我是放在 InstallerAfterInstall 事件中:

// 由於權限的關係,EventSource 必須要在安裝時建立
if (!EventLog.SourceExists(Program.EventSource))
{
	EventLog.CreateEventSource(m_EventSource, m_EventLog);
}

// 如果安裝時發現 EventSource 的 LogName 與我們預期的名稱不同時就重建!
if (EventLog.LogNameFromSourceName(m_EventSource, ".") != m_EventLog)
{
	EventLog.DeleteEventSource(m_EventSource);
	EventLog.CreateEventSource(m_EventSource, m_EventLog);
}

當 Windows Service 要移除時,最好是將安裝時建立的 EventSource 一併移除。移除 EventSource 並不會連帶將 EventLog 中的資料也刪除,只是若有程式也要存取該 EventSource 時會發生例外事件。

以下程式範例我是放在 InstallerAfterUninstall 事件中:

if (EventLog.SourceExists(m_EventSource))
{
    EventLog.DeleteEventSource(m_EventSource);
}

由於我最近都在改別人寫的 Windows Service 程式,也修改了原本的 EventSource 與 LogName 名稱,不過卻發現之前的程式所建立的 EventSource 沒有刪除,導致我改過的程式會一直 hang 住,而且好像也沒有一個方便的工具可以刪除這些沒用的 EventSource,因此我寫了一個小工具幫我做這些事,圖示如下:

EventLog 管理工具

原始碼執行檔我都已經放上 CodePlex,有需要的人可以去抓來用:EventLog Manager

相關連結

  

此文章由 will 發表於 2009/3/31 下午 07:52:16

永久連結 | 評論 (5) | 此文章的RSSRSS comment feed |

分類: .Net | C#

標籤:

收藏:

介紹好用工具:Imagine ( 支援 Unicode 的看圖軟體 )

在看圖的時候,如果遇到檔名或目錄名用到很奇怪的文字或符號時,大部分免費看圖軟體都無法開啟檔案,雖然 Windows 內建的看圖工具可以,不過功能過於陽春,實在不適合深度使用電腦的玩家,Imagine 幾乎是為了玩家而生的。

Imagine 本身是免費軟體不用說,還支援繁體中文介面,當然支援 Unicode 也是一大特色,且支援圖片格式也很多,想看有哪些圖檔格式支援,可以透過說明選單查閱到。

說明 -> 支援的檔案格式  支援的檔案格式

這套軟體很神奇,沒有感覺很官方的官網,軟體只放在一個 phpBB 架設的論壇上,感覺還真不像一個寫很好的軟體呢,不過這套軟體還真的做的不錯,功能也不少,以下我從官網轉錄該軟體的功能特色,以保哥我個人的觀點來看,我把我覺得還蠻喜歡的特色標紅色出來:

    - View and save image/animation files with very fast speed
    - Support for numerous image/animation file formats:
      GIF, BMP, PNG, JPG, TIF, TGA, PCX, ICO, ANI, FLI, and many more...
    - Extract single/all frames from animation files
    - Show detailed information of image/animation files
    - Show EXIF information
    - Show or hide transparency
    - Unicode support
    - Multilingual support:
      English, German, Spanish, Russian, Danish, Korean, Chinese, and many more...
    - Thumbnail browser
    - Capture screen
    - Batch conversion
    - Slideshow
    - Tiled view (check textures for seamless tiling, very useful for game developers/modders)
    - Create Multiple page images
    - Manipulate and edit images :
      + Flip vertical and horizontal
      + Rotate left, right and free
      + Grayscale
      + Negative
      + Change color depth (1, 4, 8, 16, 24 and 32 bit)
      + Swap colors
      + Resize per pixel, percentage or standard dimensions. Several resample filters available.
      + Effect filters, including a handy Preview browser
      + Import, export and edit palettes
      + Set and remove transparency
      + and more ...
    - Customizable shortcuts for Keyboard and Mouse
    - Command line parameter support
    - Shell extension support
    - Add-on plugin support
    - Total Commander lister and packer plugin
    - Fully optimized binaries (tiny, pure, fast, neat)

像是基本濾鏡功能與一些常用的圖片編輯功能我都覺得蠻實用的,但是其中最值得稱道的就是可完全客製化 Keyboard 快速鍵與 Mouse 各按鍵的預設動作。

自從安裝了 Imagine 之後,我就已經把之前常用的 SlowView 與 IrfanView 移除了,這一套看圖軟體實在是不錯。

相關連結

  

此文章由 will 發表於 2009/3/30 下午 01:45:09

永久連結 | 評論 (6) | 此文章的RSSRSS comment feed |

分類: 介紹好用工具

標籤:

收藏:

SQL Server 透過 TCP/IP 遠端連線時如何使用非 1433 埠號

最近客戶提供了一台 SQL Server 2008 的測試機給我們,不過特別的是他們提供的 SQL Server 2008 並非使用預設的 1433 埠號(Port)。一般來說,網路連線到非預設埠號時,都會使用冒號 ( : ) 分隔,不過當我在 SQL Server Management Studio 中輸入 192.xxx.xxx.111:14333 這樣的格式連線時,卻會出現以下錯誤:

Connect to Server

Connect to Server

這真的是件詭異的事,正常來說連線到不同的 Port 不都是這樣表示的嗎?在不斷嘗試好幾分鐘之後,決定放棄,改搜尋 Google 大神,最後終於找到正確的表示法。

原來在 SQL Server Management Studio 中要連接非 1433 的 Port 必須使用逗號 ( , ) 當成分隔符號,才能夠正確連到遠端電腦。

在 SQL Server Management Studio 中要連接非 1433 的 Port 必須使用逗號 ( , )當成分隔符號,才能夠正確連到遠端電腦。

相關連結

  

此文章由 will 發表於 2009/3/29 下午 07:31:25

永久連結 | 評論 (3) | 此文章的RSSRSS comment feed |

分類: SQL Server

標籤:

收藏:

介紹好用工具:Internet Explorer Collection

我之前推薦過一套 MultipleIE 工具,還又推薦過一套 IETester 工具,這兩套基本上都有其缺點之處,說實在的不盡理想,但我最近發現另一套更猛的 Internet Explorer Collection 工具,對於網頁相容性測試將更加方便快速。

之前的 MultipleIEIETester 最大的缺點就在於不支援 Internet Explorer Developer Toolbar,因為在實務上我們在測試 IE 各版本間的問題時,大多都是 CSS 支援度不一的問題,經常要靠許多 CSS Hack 技巧修正一些顯示問題,有時後為了 1px 的空間可能就要花我們設計師好多時間去調整、測試,如果有 Internet Explorer Developer Toolbar 的 DOM Explorer 來協助,將會節省許多時間!

雖然 Internet Explorer Developer Toolbar 支援 IE 5 以上的版本,但是通常只會安裝到你目前電腦的最新版 IE 上 ( IE8 已內建,無須特別安裝 ),所以就算安裝了 MultipleIE 也是無法使用,不過 Internet Explorer Collection 可就不同啦,他除了幫你安裝各版本的 IE 之外,也一併幫你把 Internet Explorer Developer Toolbar 裝上去了,而且讓你各版本都能用喔!

與其說 Internet Explorer Collection 是個「程式」,倒不如說他是個「安裝程式」還比較精準一些。這套安裝程式比 MultipleIE 還更狠,可安裝的 IE 版本從 1.0 到 8.0 都有 ( 還有人在用 IE 1.0 嗎? 呵... ),目前的最新版 (1.3.0.1) 支援的各 IE 版本詳細編號如下:

  • Internet Explorer 1.0 (4.40.308)
  • Internet Explorer 1.5 (0.1.0.10)
  • Internet Explorer 2.01 (2.01.046)
  • Internet Explorer 3.0 (3.0.1152)
  • Internet Explorer 4.01 (4.72.3110.0)
  • Internet Explorer 5.01 (5.00.3314.2100)
  • Internet Explorer 5.5 (5.51.4807.2300)
  • Internet Explorer 6.0 (6.00.2800.1106)
  • Internet Explorer 6.0 (6.00.2900.2180)   ( IE 6 SP 2 )
  • Internet Explorer 7.0 (7.00.5730.13)
  • Internet Explorer 8.0 (8.00.6001.18702)

而且不管你的系統已經安裝的是 IE6, IE7 或 IE8,都可以直接安裝 Internet Explorer Collection,並不會影響你現有系統所安裝的 IE 版本。使用 Internet Explorer Collection 唯一的差別就是 IE 的選單介面可能都是英文的,不過這並不影響你對各版本 IE 的操作就是了。

接著,我就帶大家一起安裝 Internet Explorer Collection 1.3.0.1,安裝前請記得先將所有正在執行中的 IE 瀏覽器關閉。

Internet Explorer Collection 1.3.0.1 安裝過程  Internet Explorer Collection 1.3.0.1 安裝過程

Internet Explorer Collection 1.3.0.1 安裝過程  Internet Explorer Collection 1.3.0.1 安裝過程

Internet Explorer Collection 1.3.0.1 安裝過程  Internet Explorer Collection 1.3.0.1 安裝過程

Internet Explorer Collection 1.3.0.1 安裝過程  Internet Explorer Collection 1.3.0.1 安裝過程

Internet Explorer Collection 1.3.0.1 安裝過程 安裝完成!

安裝完後的部分版本圖示如下:

IE 5.5

 IE 6

在我測試的過程中,我發現在 IE 7 瀏覽器中,在工具列上都找不到 Internet Explorer Developer Toolbar 的啟動按鈕,點選 Customize 也找不到加入的地方,但事實上還是可以開啟,請參考如下圖示。

Internet Explorer Developer Toolbar 在 IE 7 的啟動方式

其他相關資訊各位可參考 Internet Explorer Collection 官網的說明,上面有更多的圖示。

額外鄭重申明

雖然安裝 Internet Explorer Collection 十分方便,但強烈建議各位「不要使用這些 IE 版本瀏覽外部網站」,畢竟舊版的 IE 所帶來的自然包括舊版 IE 的安全性漏洞,如果拿這些舊版的 IE 瀏覽器進行網頁瀏覽,難保你不會遭受惡意網站的攻擊,要是被植入木馬那可就遭了!

所以還是建議各位拿 Internet Explorer Collection 來測試「內部網站」即可,否則後果自負。

相關連結

  

此文章由 will 發表於 2009/3/28 上午 11:44:21

永久連結 | 評論 (9) | 此文章的RSSRSS comment feed |

分類: Web | 介紹好用工具

標籤: ,

收藏:

錯過 MIX09 了嗎?沒關係!全場錄影與 Slide 已開放下載

MIX 09 一年一度的 MIX 開發人員大會是我最期待的一場技術盛宴,雖然我沒機會親身到場參加,但是他們每次都會將所有課程錄影起來供所有人下載,真的十分貼心,最新、最夯的技術都在這裡,有興趣的人可以到  MIX Videos 網頁下載所有課程的錄影檔 ( 高畫質 ) 與簡報檔。

若想要批次下載所有高畫質影片,建議可以使用 Free Download Manager (FDM) 批次下載,如果你是使用 IE7 或 IE8 的話,以下我的下載技巧你可以參考看看。

如何僅下載所有與 ASP.NET 相關的高畫質影片檔

  1. 連到 MIX Videos 後,你會看到右上角有個 Subscribe 連結,這裡是所有影片的 RSS 連結,請點選 WMV High 進去。
    MIX09: Subscribe
  2. 接著在 IE7 , IE8 內建的 RSS Reader 介面右方可看到這些課程的標籤分類,你可以點選 ASP.NET 進行影片的篩選。
    在 IE7 , IE8 內建的 RSS Reader 介面右方可看到這些課程的標籤分類,你可以點選 ASP.NET 進行影片的篩選。
  3. 然後按下 Ctrl + A 全選,並用滑鼠右鍵選取『使用 FDM 下載選取項目
    然後按下 Ctrl + A 全選,並用滑鼠右鍵選取『使用 FDM 下載選取項目』
  4. 再來會出現 FDM 的下載清單,但我們可以利用「過濾器」功能篩選出我們要下載的 *.wmv 影像檔即可。
    FDM: 新增下載項目的清單
  5. 然後在『過濾器』的視窗打上 wmv ,因為我們只要下載 *.wmv 的影片檔而已。
    在『過濾器』的視窗打上 wmv ,因為我們只要下載 *.wmv 的影片檔而已。
  6. 最後,你就可以放心讓 FDM 幫你下載一堆檔案啦!
    最後,你就可以放心讓 FDM 幫你下載一堆檔案啦!

相同的技巧也可以用在其他的檔案類型喔。

相關連結

  

此文章由 will 發表於 2009/3/27 下午 07:40:32

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: .Net | ASP.NET

標籤: , ,

收藏: