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 個TextboxButton(分別用來「新增」與「取消」之用)。於各 Textbox 輸入完畢,並按下「新增」按鈕之後,便將各 Textbox 的值放入剛剛觸發的 Label 控制項裡。

程式碼的重點在於:

  1. 不需用 UpdatePanelLabel 控制項包起來,雖然 UpdatePanel 是 AJAX Control Toolkit 的核心之一,但是請不要濫用!
    一來是效能考量,二來是為了善用 PopupControlExtender 所提供的 CommitScriptCommitProperty 屬性。
  2. Popupcontrol Extender 所彈出的 Panel 控制項之 UpdatePanel UpdateMode 屬性應該要明確設定為 Conditional
    很多人抱怨用了 AJAX 網路流量沒有減少,效能也沒提升,原因就是因為沒特別去設定 UpdateMode 屬性。
  3. Label 控制項根本就沒有 value 這樣的屬性可在 JavaScript 使用,有的也只是 HTML 控制項通用的 innerTextinnerHTML,那為什麼我可以在 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: