星期三, 十月 28, 2009

User State Migration Tool 4示範影片

最近作了一段User State Migration Tool(USMT)4示範影片。

USMT 4是Windows自動化安裝套件(Windows Automated Installation Kit,WAIK)所提供的命令列工具程式之一,它最主要的兩支程式是 ScanState 和 LoadState,在移轉Windows的過程擔任資料收集和回存的角色,協助您將Windows系統裡的相關設定值移轉到另一部Windows電腦。

這段名為〈邊做邊學 Windows 7:以 USMT 4 將 Windows XP 移轉到 Windows 7〉的影片,收錄在TechNet教學短片

附註一提,微軟在上週透過Microsoft Download Center釋出1.1版的Windows 7 WAIK文件(AIK_Windows7_DocUpdate_10.2009.zip),但此更新文件目前僅有英文版。


[全文]

星期四, 十月 22, 2009

硬體輔助虛擬化偵測工具--Hardware-Assisted Virtualization Detection Tool

諸如Windows Virtual PC(文後簡稱WVPC)必須在支援硬體輔助虛擬化的電腦執行(註:這已非強制條件,詳情請參閱Windows Virtual PC和Windows XP Mode不再需要HAV處理器),為了讓使用者更容易識別自己的電腦支不支援這項技術,微軟提供了Hardware-Assisted Virtualization Detection Tool(文後簡稱HAVDT),協助使用者檢測。

對WVPC的執行而言,硬體輔助虛擬化技術有兩項重點:

  • 處理器必須支援硬體輔助虛擬化技術,例如Intel Virtualization Technology(Intel VT)、AMD Virtualization(AMD-V)或VIA VT等,皆是硬體輔助虛擬化技術。
  • 主機板必須啟用處理器所提供的硬體輔助虛擬化技術,有些板子預設關閉了這項功能,因此必須進到BIOS開啟,而且每家廠商在BIOS設定的位置、所用的名稱也各不相同(例如在我Asus P5B-E Plus的AMI BIOS設定,是以Intel VT專案代號Vanderpool Technology稱之)。細節可查閱廠商提供的手冊或直接詢問廠商。

HAVDT不止能檢測處理器是否支援硬體輔助虛擬化技術,還能檢查系統是否開啟了這項功能。HAVDT檔案很小,而且不需安裝就能執行,可到微軟網站下載。HAVDT支援的Windows系統如下:

  • Windows XP SP 3 (Professional)、Windows XP SP 2 (Professional)
  • Windows Vista SP 1, 2 (Home Basic、Home Premium、Business、Enterprise、Ultimate)
  • Windows 7 (Home Basic、Home Premium、Professional、Enterprise、Ultimate)

HAVDT有以下5種執行結果。

  • This tool does not run on this operating system:「HAVDT無法在此作業系統執行」;HAVDT只支援上述版本的Windows,若執行的Windows版本不在上列,就會出現這種結果。

  • This computer does not have hardware-assisted virtualization:「此電腦不含硬體輔助虛擬化功能」;因此無法執行WVPC、Windows XP Mode。

  • Hardware-assisted virtualization is not enabled on this computer:「此電腦的硬體輔助虛擬化功能尚未啟用」;通常要透過BIOS設定來啟用這項功能,而且啟用之後才能執行WVPC、Windows XP Mode。

  • This computer is configured with hardware-assisted virtualization:「此電腦能提供硬體輔助虛擬化技術」;這意味著這部電腦不僅CPU支援硬體輔助虛擬化技術,而且也已啟用這項功能,當然就能執行WVPC、Windows XP Mode。

  • The configuration of this computer is not compatible with Windows Virtual PC:「此電腦的設定與WVPC不相容」;可能是因為這部電腦所具備的Intel Trust Execution Technology(Intel TXT)與WVPC不相容。Intel TXT應該可以從BIOS關閉(詳情可參閱主機板、電腦手冊,或詢問廠商)。

HAVDT也提供傳回值或將結果寫入記錄檔的功能,細節可參閱Microsoft Hardware-Assisted Virtualization Detection Tool User Guide(下載HAVDT的網頁亦可下載User Guide)。

參考資料

  • Microsoft Hardware-Assisted Virtualization Detection Tool User Guide


[全文]

Windows 7 Upgrade Advisor

就在Windows 7正式推出的前夕,Windows 7 Upgrade Advisor擺脫了測試階段,成為正式版本。

Windows 7 Upgrade Advisor是一支微軟提供的程式,可藉由安裝、執行、掃瞄而給予升級到Windows 7的建議;假如有一部想升級到Windows 7的電腦,便可在這部電腦安裝、執行Windows 7 Upgrade Advisor,這支程式會掃瞄電腦裡的軟硬體,並呈現一份升級的建議。

使用者可到微軟網站下載Windows 7 Upgrade Advisor的自解壓縮安裝程式Windows7UpgradeAdvisorSetup.exe,而因為Windows 7 Upgrade Advisor是以.NET 2.0開發,因此執行環境必須有.NET Framework 2.0;如果沒有,Windows 7 Upgrade Advisor的安裝程式會透過網路下載、安裝.NET Framework 2.0。

Windows7UpgradeAdvisorSetup.exe內含x86和x64兩種版本的程式,安裝程式會根據目的端的情況自動安裝適當的版本,並且會在桌面建立Windows 7 Upgrade Advisor的捷徑。

執行Windows 7 Upgrade Advisor之前,應該連接、開啟所有想在升級後的系統使用的USB硬體,例如印表機、掃描器、外接式儲存設備等。

執行Windows 7 Upgrade Advisor之後,它會掃瞄整個電腦的環境,並且根據情況,給予升級到Windows 7的建議。Windows 7 Upgrade Advisor主程式雖然會列出建議內容,不過最好還是將這份報告存檔(mht格式),以供後續查閱。

如果是執行Win32系統的x64電腦,Windows 7 Upgrade Advisor會提供32位元和64位元各一的報告(需個別存檔),分別列出升級到32位元或64位元Windows 7的建議。

報告的重點包括:

  • 需不需要自訂安裝?也就是先備份舊系統的資料,再重新安裝Windows 7及所有應用程式,最後再還原備份資料。
  • 顯示卡是否支援Aero?
  • CPU、RAM、硬碟空間是否符合升級後所需?
  • 包括顯示卡、網路卡、音效卡等重要的硬體是否相容Windows 7?也就是有沒有適當的驅動程式。
  • 舊系統裡的軟體是否相容Windows 7?結果有4種:有問題、相容、已獲得官方的Windows 7相容認證、未知。
  • 能不能執行Windows XP Mode?包括硬體是否支援,及記憶體、硬碟空間是否足夠。


[全文]

星期四, 十月 15, 2009

Windows SDK練習曲--檢驗Windows版本資訊

Windows版本資訊除了能「取得」之後自行檢查,也能直接將相關資訊送交特定API來檢驗;例如若想知道是不是Windows 7,就送驗主序號6和次序號1。


負責檢驗版本資訊的API是VerifyVersionInfo,但在呼叫之前,必須先以OSVERSIONINFOEX結構和VER_SET_CONDITION巨集來處理欲檢驗的相關資訊。以下以檢驗Windows 7為例說明(Windows 7的版本序號是6.1)。

設定OSVERSIONINFOEX結構

之前的例子就曾用過OSVERSIONINFOEX,這個結構可儲存好幾種Windows版本相關資訊,本例欲檢驗Windows 7,因此其中與本例相關的是:

  • dwMajorVersion:主序號,設為6。
  • dwMinorVersion:次序號,設為1。
  • wServicePackMajor:Service Pack主序號,設為0。
  • wServicePackMinor:Service Pack次序號,設為0。
  • wProductType:產品類型,設為VER_NT_WORKSTATION。

雖然目前Windows 7並無Service Pack,也就是並無檢驗Service Pack序號的必要,但仍建議加入,並設為0。整個初始OSVERSIONINFOEX的程式碼如下:

OSVERSIONINFOEX osvi;
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
osvi.dwMajorVersion = 6;
osvi.dwMinorVersion = 1;
osvi.wServicePackMajor = 0;
osvi.wServicePackMinor = 0;
osvi.wProductType = VER_NT_WORKSTATION;

呼叫VER_SET_CONDITION巨集

VER_SET_CONDITION巨集的目的是設定比較的條件遮罩,以設定Windows 7的主序號為例:

VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, VER_GREATER_EQUAL);
  • dwlConditionMask:儲存比較資訊(初始值需為0),後續會是呼叫VerifyVersionInfo的第3個參數。
  • VER_MAJORVERSION:設定比較的類型,VER_MAJORVERSION即為版本主序號。所有類型的常數包括:
    • VER_BUILDNUMBER(dwBuildNumber)
    • VER_MAJORVERSION(dwMajorVersion)
    • VER_MINORVERSION(dwMinorVersion)
    • VER_PLATFORMID(dwPlatformId)
    • VER_PRODUCT_TYPE(wProductType)
    • VER_SERVICEPACKMAJOR(wServicePackMajor)
    • VER_SERVICEPACKMINOR(wServicePackMinor)
    • VER_SUITENAME(wSuiteMask)
  • VER_GREATER_EQUAL:比較運算子,VER_GREATER_EQUAL表示必須大於或等於,也就是本例必須大於或等於6才會得到True值。其他的運算子常數包括:
    • VER_EQUAL:等於
    • VER_GREATER:大於
    • VER_GREATER_EQUAL:大於或等於
    • VER_LESS:小於
    • VER_LESS_EQUAL:小於或等於

本例需比較5項資訊,程式碼如下:

VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, VER_GREATER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, VER_GREATER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_NT_WORKSTATION, VER_EQUAL );

呼叫VerifyVersionInfo函式

VerifyVersionInfo(
    &osvi,
    VER_MAJORVERSION | VER_MINORVERSION | 
    VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR | 
    VER_NT_WORKSTATION,
    dwlConditionMask);

VerifyVersionInfo函式有3個參數:

  1. 指向OSVERSIONINFOEX的指標。
  2. 檢驗的類型,同VER_SET_CONDITION的第2個參數,能以OR位元運算子(|)合併所有欲檢驗的類型常數。
  3. 比較資訊,就是VER_SET_CONDITION巨集的第1個參數。

VerifyVersionInfo函式的傳回值有3種情況:

  • 目前作業系統符合檢驗資訊,傳回非零值(也就是True)。
  • 目前作業系統「不」符合檢驗資訊,或,傳回零(也就是Flase),且GetLastError函式會傳回ERROR_OLD_WIN_VERSION。
  • VerifyVersionInfo函式呼叫失敗,傳回零(也就是Flase),且GetLastError函式會傳回不同於ERROR_OLD_WIN_VERSION的錯誤碼(端視錯誤原因而定)。

檢驗Windows版本資訊

我們可以將檢驗Windows 7的程式碼包裝成函式(例如Is_Win7_or_Later),再根據傳回值來判斷目前的作業系統版本是不是Windows 7:

if(Is_Win7_or_Later())
    printf("這是 Windows 7 或其後續版本\n");
else printf("這不是 Windows 7 或其後續版本\n");

完整的程式碼請下載verifyWinVer.zip(1 KB),其中還另外包含了Windows Server 2008 SP2及網域控制器的檢驗。

參考資料


[全文]

星期二, 十月 06, 2009

簡介Windows Automated Installation Kit for Windows 7

Windows Automated Installation Kit(Windows自動化安裝套件,簡稱Windows AIK或WAIK)是微軟提供的Windows自動化部署工具組。不同的WAIK版本,適合不同版本的Windows部署:第1個WAIK是針對Vista所設計,WAIK  1.1適用於Vista SP1和Windows Server 2008,目前最新的WAIK則支援Windows 7、Vista SP1、Windows Server 2008 R2、Windows Server 2008(但可以安裝在Windows XP)。

WAIK是以光碟映像ISO的格式釋出,目前最新版有1796.7  MB,可至微軟網站免費下載。利用虛擬光碟程式掛載ISO檔,或將ISO檔燒成光碟,就能安裝WAIK:可點選光碟自動播放程式左側的『Windows AIK安裝程式』,或者直接執行光碟根目錄的wAIKX86.msi(如果是x64,請執行wAIKAMD64.msi;Itanium請執行wAIKIA64.msi)。

安裝之後會在『開始』功能表建立『Microsoft Windows AIK』資料夾,裡面有相關工具及文件的捷徑(請注意,此資料夾並未包含所有工具程式或文件檔案的捷徑)。這些工具和文件預設是安裝在%ProgramFiles%\Windows AIK資料夾,有些工具程式或文件檔案必須直接到安裝資料夾尋找或執行。

WAIK的工具包括:

  • Windows系統映像管理員(Windows System Image Manager)
  • ImageX(可用以擷取、建立、修改、套用Windows映像的工具)
  • Deployment Image Servicing and Management(DISM)
  • Windows Preinstallation Environment(Windows PE)
  • User State Migration Tool(USMT)
  • 大量啟用管理工具(VAMT)

隸屬WAIK但不在上述WAIK安裝資料夾裡的工具有:

  • Windows安裝程式(用來安裝Windows的程式,位於Windows產品光碟)
  • Sysprep(位於%WINDIR%\system32\sysprep資料夾)

WAIK相關工具對不同Windows版本及硬體架構,各有不同的支援,細節可參閱TechNet Library的《Deployment Tools Supported Platforms》。


[全文]

Windows 7小時鐘也能顯示3個時區的時間

預設只會顯示系統時區的時間,但透過『日期和時鐘/其他時鐘』的設定,Windows 7的小時鐘最多能顯示3個時區的時間。

修改之後,將滑鼠移到工作列右側顯示時間的位置,就會顯示所有已指定的時間。

如果以滑鼠點擊工作列右側顯示時間的位置,則會顯示所有已指定的時間。


[全文]

Windows SDK練習曲--取得系統資訊

之前做過的osInfo為基礎,再呼叫若干取得系統資訊的API,拼湊並改版成sysInfo。

sysInfo是主控台程式,不具實用性,完全無法與Windows內建的systemInfo.exe相比;製作sysInfo的目的只是呼叫相關API的練習。

除了之前osInfo用到的技巧,sysInfo又呼叫了GetComputerGetUserNameGetSystemDirectoryGetWindowsDirectoryExpandEnvironmentStrings,以及GetNativeSystemInfo / GetSystemInfo

由於程式不算短,與其完整列在網頁,不如讓有興趣的人下載(sysInfo.zip,4 KB)後研究。我在程式碼裡加了若干註解,而相關API的細節,則請參閱MSDN Library。

參考資料:MSDN Getting System Information


[全文]

星期一, 十月 05, 2009

Windows 7內建光碟映像檔燒錄程式

其名為『Windows光碟映像燒錄程式』,能支援ISO和IMG格式,而且預設也與這兩種檔案類型設定關聯,只要以滑鼠雙按這兩種類型的檔案,就會出現『Windows光碟映像燒錄程式』。

如果Windows 7安裝了其他會處理光碟映像檔案的軟體,可能會覆蓋『Windows光碟映像燒錄程式』與ISO、IMG的檔案關聯,而須執行滑鼠右鈕快顯功能表的『開啟檔案』裡面的『Windows光碟映像燒錄程式』。


[全文]

Windows 7的可靠性監視器

源自Vista的『可靠性及效能監視器』,Windows 7的『可靠性監視器』列出電腦的『嚴重事件』和『資訊事件』。

欲執行『可靠性監視器』,可先從『控制台』執行『行動作業中心』,再從『行動作業中心』的『維護』底下,點選『檢視可靠性歷程記錄』。或者,在『開始/搜尋程式或檔案』輸入『Reliability』,也會找到『檢視可靠性歷程記錄』。

『可靠性監視器』能以天或週作為檢視方式,可供使用者查看嚴重事件(例如有哪些程式當掉)及資訊事件(例如安裝了哪些系統更新程式)。『可靠性監視器』還會以1到10的分數來評估系統整體的穩定性。


[全文]

Windows 7的問題步驟收錄程式--PSR

多數願意助人解決電腦問題的熱心人士,可能經常遇到不懂發問者在講什麼的情況。現在,Windows 7提供的『問題步驟收錄程式』(Problem Steps Recorder,PSR),可以讓發問者錄下操作步驟;藉此,或許對發問與回答之間的溝通有所助益。

欲執行『問題步驟收錄程式』,可以在『開始』功能表裡的『搜尋程式及檔案』輸入psr,就會看到『psr.exe』和『記錄步驟以重現問題』,任點其中一個皆可啟動PSR。

psr

按下PSR的『開始錄製』之後,PSR會擷取使用者每個操作動作的全螢幕畫面,並且自動附上每個步驟的文字說明。使用者亦可在錄製的過程『新增註解』。

按下PSR的『停止錄製』之後,PSR會將所錄製的圖檔畫面、文字說明編譯成單一的MHTML檔,並且再壓縮成ZIP檔,而後讓使用者決定ZIP檔的存放位置。

接著發問者可透過將ZIP檔交給回答者,並輔以適當的問題說明,應該可讓回答者更能瞭解問題所在。

此外,使用者也可以選擇不擷取螢幕畫面(在『說明/設定』所出現的交談窗,點選『啟用螢幕擷取』的『否』),這只會產生每個步驟的文字說明。

想要更瞭解PSR嗎?執行它、隨意錄製幾個步驟、存檔,然後開啟並檢視壓縮檔裡的MHTML,必能對PSR的功能有所體悟。


[全文]