2008/06/04

explore.exe 隨身碟病毒

最近我的隨身碟常常亂插別人的電腦,
沒想到我這次忙到忘記,
插回我自己的電腦忘記掃毒。
就....中毒了!!!

這個病毒會在隨身碟裡面產生
explore.exe 跟 Autorun.ini
這兩個黨。
我的PCCILLIN也殺不掉,
USBCleaner也只找得到隨身碟裡面的毒。
再插上去又會出現。

終於找到自解的方式:

1.
先把隨身碟裡面的explore.exe 跟 Autorun.ini刪掉。

2.
在把C:\Documents and Settings\帳號\local Settings\Temp
裡面wauclt.exe 及 msdtr.exe這兩個檔殺掉。

3.清除註冊碼裡面的資料:
3.1
HKEY_CURRENT_USER\Software\Microsoft\Search Assistant\ACMru\5603
裡面的wauclt跟msdtr殺掉

3.2
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
裡面的LOAD殺掉

3.3
HKEY_CURRENT_USER\Software\microsoft\windows\CurrentVersion\Run
SCMTool 殺掉

2008/05/17

windows無法啟動SQL 錯誤代碼3417

最近要從服務啟動SQL EXPRESS,
但是都會出現錯誤訊息,說:

windows無法啟動SQL SERVER(SQLEXPRESS) 錯誤代碼3417
請參閱系統日誌....

搞了半天原來是,SQL資料夾太就沒使用,
被windows壓縮起來了,
所以只要將系統日誌中無法啟動的資料夾下所有檔案,
解壓縮即可。

就在該目錄下,全選所有檔案,按下滑鼠右鍵,
選擇內容;在唯獨旁邊有進階的按鈕,按下,
把壓縮內容,節省磁碟空間這個選項勾勾取消。
就OK了...

2008/03/25

IPNAT

今天一早就接到電話說SQL Server連不進去,

心想應該沒啥大問題,還是很愜意的在陽明山,

本來想說叫IDC機房重開機就好了,

誰知道......

主機的網路整個不通,他X的哩!

這時只有跑到現場去看看它在鬧啥脾氣,

到現場2003右下角的網路連線ICON是OK的!

但是詭異的就是,網路出不去,

而且別人也ping不到這台主機,

靠... 不會中毒了吧!!!

這時候看到網路連線的防火牆圖示是沒有出現低!

想說先打開,再掃毒;這時候真正的問題點出現了,

就當我要進入微軟的防火牆設定的時候,

他說
"由於另一個程序或正在運行的服務可能正在使用網絡地址轉換組件(ipnat.sys)",

所以防火牆開不了!

上網爬了一下,台灣人都沒講過這情況,

於是逼不得已跑去阿陸仔的網站,終於看到解藥了。



因為不知道什麼原因,

windows Server把他自己的路由器服務打開了,

所以導致這台主機變成封包轉送,真的很詭異,

我搞SERVER這麼久還是頭一次遇到,真是學到了...



於是我去 伺服器管理工具=>路由及遠端存取



















把這個服務停止,
其實應該也可以去 服務 裡面把這玩意停掉,
停掉以後,再去 服務 裡面把
Windows Firewall/Internet Connection Sharing (ICS)
這玩意開啟,開啟之後就可以去區域網路設定裡面,
把防火牆開啟...

這樣我的SERVER就復活了...
還好沒有衝動把它重灌...

2007/10/28

IE 參數

2007/09/13

判別Big5或是Unicode

之前為了寫一個批次處理的小程式,
才發現這個點...
好不容易被我研究出來怎樣判斷這兩種編碼,
這過程中有跑去藍色小舖跟微軟的技術論壇發問,
說到這裡不免來發洩一下,
一開始阿~我在藍色小舖發問, 可是沒有人回應,
由於這是工作上需要的程式, 就很急...
於是我跑到微軟的技術論發問,
沒想到那邊的人真的是很跩, 又態度差,
MVP有什麼了不起阿!
這就讓我想到我在藍色小舖遇到的一個MVP (Allen Kuo)
他就說過一句話: 誰沒當過初學者阿!!
這句話讓我對她印象很深刻...
因為我真的是個打破砂鍋問到底的死孩子...
但是他還是很熱心的回答我, 真的讓我很感動...
總之他真的是很NICE的一位, 在此宣傳一下她的網站...
ALLEN KUO

好~~ 以上其實都是題外話....
趕快進入正題!!!
*****************************

問題起因於, 我在寫一隻批次處理文字檔的程式...
要把一個資料夾下所有的html塞入一段JS
一開始呢~~我直接開檔>寫入>關檔
在.NET裡面開檔的時候, 我是用預設的編碼格式,
我起初以為是依據檔案的編碼格式開檔, 結果~~
其實是依據系統預設的檔案編碼格式開檔,
這就導致有些是unicode的檔案編碼格式, 處理以後
會有亂碼的情況....

所以才會想在寫入之前知道檔案的編碼格式,
再依此編碼格式開檔, 如此就不會有亂碼了...
在台灣最常用的編碼格式不外乎就這兩隻,
所以我就只研究這兩種編碼格式並且判別之...


首先約略介紹一下編碼:
早期的編碼就只有ASCII編碼,
(只使用7個Byte, 所以是0~127)
到後因為不符使用所以才產生這麼多種編碼,
Big5的編碼格式:一個字元用兩個Byte
Unicode的編碼格式:一個字元用2~4個Byte來組成
但是又不能跟ASCII重疊, 所以這兩種編碼的每個字元
(不論幾個Byte)的第一個Byte都是從128開始,
也就是說第一個Byte的最前面的Bit為1..

如此~~
我們就可以再開檔的當下去檢查文件的每個Byte,
找出大於128的Byte在判斷接下來的1個字元
或是 接下來的1-3個字元是否符合Big5或是Unicode

雖然這樣判別很慢...但是最穩了八~~
在微軟技術論壇的那位很兇很臭屁的大大說:
阿就叫你判別BOM就好啦...

真不知道你是在兇怎樣的~~

這招不是不可行...
但是不是所有的unicode文件都有BOM的...

所以我在藍色小鋪得到幾位大大熱心的提點,
於是我就去了解編碼格式, 就 寫出來了~~
哈哈 哈哈~~

2007/08/17

編碼簡介

Unicode 概述
常常在論壇上看到很多人問 Unicode 的問題,這邊整理一些基本觀念給大家參考。

Unicode 並不是一開始就有,所以會出現的問題就是以前跟現在相容的問題。早期只有 ANSI 編碼,各國配合自己需求,在 ANSI 下加入自己的編碼需求,例如 big5、gb2312、Japanese、ASCII 等,所以常常容易混淆,事實上都是在 ANSI 下為基礎。

而 Windows 就分成兩種視窗,一種是以 ANSI 為基礎的,一種是以 Unicode 為基礎的,在 API 上的差異就是以 A 結尾的代表 ANSI ,以 W 結尾的,代表 WideChar(寬字元),也就是 Unicode ,又稱 ucs2。而 ANSI Window 是以地區預設語系顯示,也就是 控制台 地區及語言選項 進階 那個地區設定。

使用者界面

若是使用 Unicode Window 時,該視窗本身就直接支援 Unicode ,無須任何轉換,例如 .Net 下是使用 Unicode Window ,所以直接支援 Unicode ,但是若是在 .Net 下插入 COM 元件或是 VB6 的控制項,則要看該元件本身是採用 ANSI Window 或是 Unicode Window 。

而在一般的 ANSI 要支援 Unicode ,全部是沒有,但只針對日韓簡罕倒是可以安裝 Unicode 補完計畫,此軟體並非是讓 ANSI Window 變成 Unicode Window ,而是在 big5 對照表上增加 big5 碼與 Unicode 碼的對應 5 千餘字,使得 ANSI Window 上所採用的字碼能對應到 Unicode ,則在 Windows 2000/XP/2003 下正常可顯示,所以超出這個對照表外的字也是沒有。

若在 VB6 內想要使用 Unicode ,可以使用 Office 提供的 Forms 2.0 ,Forms 2.0 所有的控制項都是使用 Unicode Window,所以就直接支援 Unicode ,而 VB5/6 在記憶體中,均使用 Unicode ,就沒有轉換的問題。

檔案
無論在 VB6 還是 VBNET 下,文字檔的存取預設均是使用 ANSI ,這個應該是為了過去相容的考量,所以預設值採 ANSI ,其他編碼方式均需使用 byte() 陣列方式讀入檔案,再做編碼轉換,若是 Unicode 格式,在 VB6 無需轉換,其他格式則用 MultiByteToWideChar 轉成對應的字元,在 VBNET 則是使用 Encoding 來進行轉換,若是使用了錯誤的編碼格式,在 VB6 只是無法正確顯示,仍可經由轉換成正確的格式顯示,但是在 VBNET 會把錯誤的編碼過濾掉,再轉換就會掉碼,亦即,VB6 可以將一段 UTF8 的字串存在字串變數內,但是在 VBNET 則會發生漏字。

網頁與資料庫
瀏覽器依照 w3c 要求,允許將字碼頁以外的字元採用 &#nnnnn; 來傳遞,瀏覽器會自動編解碼。所以很多網頁系統並非真的支援日韓繁簡罕,但是可透過瀏覽器功能達成支援,但在寫入資料庫後,就會變成一串串的&#nnnnn; 無法做更進一步的應用,VBNET 寫 ASPNET 可以採用 UTF8 編碼來達成完整支援 Unicode ,asp 就會困難重重。

2007/08/16

Byte Order Mark (BOM)

這幾天再寫讀檔
就遇到一個問題
在開檔的時候, 需要告知開檔的檔案編碼格式
但是如果使用者不知道
那就要用程式來判斷
問題就來了...
怎樣判斷???

這時候就要用到BOM
PS:但是不是所有的UTF8都有被加上BOM... 殘念阿...

Q: What is a BOM?
A: A byte order mark (BOM) consists of the character code U+FEFF at the beginning of a data stream, where it can be used as a signature defining the byte order and encoding form, primarily of unmarked plaintext files. Under some higher level protocols, use of a BOM may be mandatory (or prohibited) in the Unicode data stream defined in that protocol.