2009年10月22日

How to find the Microsoft Expression Studio 3 production key out

If you get the Microsoft Expression Studio 3 (not a trival version) from MSDN / TechNet subscription or somewhere else, you may not require to enter the production key when installing, since the key is pre-pidded.

Is there any way to find out the production key?

Yes! After installing, just explore to the %temp% folder and open the "XSetup_ExpressionStudio_<Installed Date & Time>.log", such as XSetup_ExpressionStudio_2009_10_22_12_8_50.log. Then search the key word "InstallProofOfPurchase" to find the production key out.

2009年10月15日

2009 年底前 MCP 考試大優惠,最高折扣為 25%

為了嘉惠更多 MCP 考生,只要在今年(2009)年底之前參加 MCP 考試,即可享受最高 25% 的價格優惠,詳細考試科目之折扣、活動說明,請參考官網:Special Offers on Training and Certifications from Microsoft

2009年10月14日

如何使用指令找出網路卡的 MAC 位址

網路常見的作法皆是使用 ipconfig.exe/all,搭配相關指令去解析網路卡的 MAC 位址(即下面結果中的「實體位址」),這樣做會有個問題,就是 ipconfig.exe 輸出的結果會因為 Windows 語言的不同,而出現不同國家的文字,例如下面是 Windows 7 正體中文版執行的部分結果:

C:\Users\Alex>ipconfig/all
…
乙太網路卡 區域連線 2:

連線特定 DNS 尾碼 . . . . . . . . :
描述 . . . . . . . . . . . . . . .: Microsoft Windows Mobile Remote Adapter
實體位址 . . . . . . . . . . . . .: 12-34-56-01-23-45
DHCP 已啟用 . . . . . . . . . . . . : 是
自動設定啟用 . . . . . . . . . . .: 是
IPv4 位址 . . . . . . . . . . . . : 169.254.2.2(偏好選項)
子網路遮罩 . . . . . . . . . . . .: 255.255.255.0
租用取得 . . . . . . . . . . . . .: 2009年7月21日 下午 10:29:29
租用到期 . . . . . . . . . . . . .: 2009年8月20日 下午 10:29:25
預設閘道 . . . . . . . . . . . . .:
DHCP 伺服器 . . . . . . . . . . . : 169.254.2.1
NetBIOS over Tcpip . . . . . . . .: 啟用

乙太網路卡 區域連線:

連線特定 DNS 尾碼 . . . . . . . . :
描述 . . . . . . . . . . . . . . .: Realtek RTL8168C(P)/8111C(P) Family PCI-E
Gigabit Ethernet NIC (NDIS 6.20)
實體位址 . . . . . . . . . . . . .: 00-11-22-33-44-55
DHCP 已啟用 . . . . . . . . . . . . : 否
自動設定啟用 . . . . . . . . . . .: 是
IPv4 位址 . . . . . . . . . . . . : 192.168.165.107(偏好選項)
子網路遮罩 . . . . . . . . . . . .: 255.255.255.0
預設閘道 . . . . . . . . . . . . .: 192.168.165.254
DNS 伺服器 . . . . . . . . . . . .: 168.95.192.1
168.95.1.1
NetBIOS over Tcpip . . . . . . . .: 啟用

通道介面卡 isatap.{6D6E2283-45C4-90A7-0506-1087391E5A92}:

媒體狀態 . . . . . . . . . . . . .: 媒體已中斷連線
連線特定 DNS 尾碼 . . . . . . . . :
描述 . . . . . . . . . . . . . . .: Microsoft ISATAP Adapter
實體位址 . . . . . . . . . . . . .: 00-00-00-00-00-00-00-E0
DHCP 已啟用 . . . . . . . . . . . . : 否
自動設定啟用 . . . . . . . . . . .: 是

通道介面卡 區域連線* 3:

連線特定 DNS 尾碼 . . . . . . . . :
描述 . . . . . . . . . . . . . . .: Teredo Tunneling Pseudo-Interface
實體位址 . . . . . . . . . . . . .: 00-00-00-00-00-00-00-E0
DHCP 已啟用 . . . . . . . . . . . . : 否
自動設定啟用 . . . . . . . . . . .: 是
IPv6 位址. . . . . . . . . . . . .: 2001:0:cf2e:3096:38c5:bda2:2256:d659(偏好
選項)
連結-本機 IPv6 位址 . . . . . . . : fe80::38c5:bda2:2256:d659%13(偏好選項)
預設閘道 . . . . . . . . . . . . .: ::
NetBIOS over Tcpip . . . . . . . .: 停用

通道介面卡 isatap.{04426D6D-40CD-B5A2-D88C-DF7B9FBDD227}:

媒體狀態 . . . . . . . . . . . . .: 媒體已中斷連線
連線特定 DNS 尾碼 . . . . . . . . :
描述 . . . . . . . . . . . . . . .: Microsoft ISATAP Adapter #3
實體位址 . . . . . . . . . . . . .: 00-00-00-00-00-00-00-E0
DHCP 已啟用 . . . . . . . . . . . . : 否
自動設定啟用 . . . . . . . . . . .: 是

在此,我使用 Windows XP 之後才提供的 GetMac.exe,先看看執行的結果:
C:\Users\Alex>getmac

實體位址              傳輸名稱
=================== ==========================================================
00-11-22-33-44-55   \Device\Tcpip_{6D6E5A92-EEEE-45C4-90A7-1087E2283344}
12-34-56-01-23-45   \Device\Tcpip_{0442D227-FFFF-5555-6666-776DDF7B88ED}

由於 GetMac 提供以 CSV 格式輸出結果的參數,所以我們可以搭配 FOR 指令寫出 GetMacAddr01.cmd:
@echo off
REM 結果前後會有「"」
for /f "tokens=1 delims=," %%i in ('"getmac /fo csv /nh"') do echo 實體位址為:%%i

REM 刪除「"」:將原本的 %%i 改成 %%~i
for /f "tokens=1 delims=," %%i in ('"getmac /fo csv /nh"') do set mac=%%~i
echo.
echo 刪除「"」的結果:%mac%
echo.

REM 刪除「-」:使用 for 搭配 delims=-
for /f "tokens=1-6 delims=-" %%j in ('echo %mac%') do echo 最後結果:%%j%%k%%l%%m%%n%%o

執行結果:
C:\Users\Alex>GetMacAddr01.cmd
實體位址為:"00-11-22-33-44-55"
實體位址為:"12-34-56-01-23-45"

刪除「"」的結果:12-34-56-01-23-45

最後結果:123456012345

由執行結果來看,上面那樣的寫法會有問題,萬一有多張網卡時,因為使用環境變數 %mac% 來儲存結果,所以只會顯示最後查到的 MAC 位址,所以經過修改並精簡後的程式碼:
for /f "tokens=1 delims=," %%i in ('"getmac /fo csv /nh"') do (
for /f "tokens=1-6 delims=-" %%j in ('echo %%~i') do echo %%j%%k%%l%%m%%n%%o
)

執行結果:
C:\Users\Alex>GetMacAddr.cmd
001122334455
123456012345

2009年10月11日

Label 控制項搭配 AJAX Control Toolkit 的 PopupControlExtender 使用的問題


希望在某個 Label 控制項,按下滑鼠左鍵之後,即會使用 AJAX Control Toolkit 的 PopupControlExtender 彈出 1 個 Panel 控制項,於其內有 2 個Textbox 與 Button(分別用來「新增」與「取消」之用)。於各 Textbox 輸入完畢,並按下「新增」按鈕之後,便將各 Textbox 的值放入剛剛觸發的 Label 控制項裡。

程式碼的重點在於:

  1. 不需用 UpdatePanel 把 Label 控制項包起來,雖然 UpdatePanel 是 AJAX Control Toolkit 的核心之一,但是請不要濫用!
    一來是效能考量,二來是為了善用 PopupControlExtender 所提供的 CommitScript 與 CommitProperty 屬性。
  2. Popupcontrol Extender 所彈出的 Panel 控制項之 UpdatePanel 的 UpdateMode 屬性應該要明確設定為 Conditional。
    很多人抱怨用了 AJAX 網路流量沒有減少,效能也沒提升,原因就是因為沒特別去設定 UpdateMode 屬性。
  3. Label 控制項根本就沒有 value 這樣的屬性可在 JavaScript 使用,有的也只是 HTML 控制項通用的 innerText 或 innerHTML,那為什麼我可以在 GetValue() 那段 JavaScript 程式碼這樣寫:
  4. function GetValue(sender)
    {
      var lbl = $get(sender);
      if(lbl!=null) lbl.innerText = lbl.value;
    }
    請自個體驗箇中奧妙吧!


原始碼下載:

PopupControlExtenderUsingLabels.zip

2009年10月8日

Office 2003 更新與自動安裝部署


這份簡報原本是為了「微軟摯友」活動所準備的,後來因故沒有舉辦。簡報大綱如下:

剛好日前在整理文件,就順便把檔案放到 Windows Live Skydrive 上,有需要的人請自取。下載點:

2009年10月2日

Windows 7 可以安裝哪些版本的 SQL Server

Windows 7 嶄新的操作介面,執行速度又比他的兩個哥哥 Windows Vista 跟 Windows XP 來的快,相信有不少人計畫(或是已經)改用 Windows 7。

在 Windows 7 上可安裝下列版本的 SQL Server: