顯示具有 Windows 標籤的文章。 顯示所有文章
顯示具有 Windows 標籤的文章。 顯示所有文章

2012年1月31日 星期二

在虛擬機器(Vitual Machine)中擴充硬碟

使用虛擬機器最重要的好處之一,就是可以彈性的擴充硬體
硬體的擴充動作相較於實體機器來說,就少掉了更新硬體這一步驟
(當然要在開虛擬機器的實體機器的硬體限制下)
而Windows在更新CPU或記憶體都是自動完成的
所以在虛擬機器上擴充這兩者都僅僅需要關機,設定,開機三個步驟

如果是一般的硬碟擴充,只要先在虛擬機器的設定中延伸(Expand)硬碟

再到作業系統裡面使用內建的diskpart將同一個硬碟擴充即可

C:\Documents and Settings\Administrator>diskpart

Microsoft DiskPart version 5.2.3790.3959
Copyright (C) 1999-2001 Microsoft Corporation.
On computer: WIN2K3X86

DISKPART> list volume

Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 0 C NTFS Partition 15 GB Healthy System
Volume 1 D CD-ROM 0 B Healthy
Volume 2 E New Volume NTFS Partition 20 GB Healthy

DISKPART> select volume 2

Volume 2 is the selected volume.

DISKPART> extend

DiskPart successfully extended the volume.

DISKPART> list volume

Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 0 C NTFS Partition 15 GB Healthy System
Volume 1 D CD-ROM 0 B Healthy
* Volume 2 E New Volume NTFS Partition 21 GB Healthy

DISKPART>


另外,在Windows 2003中
因為保護作業系統的檔案,所以無法變更系統磁碟的大小
這時候就需要一點小技巧,在把系統碟延伸後
先將系統碟掛到另外一台機器當作一般磁碟並擴充
此時用原本的虛擬機器開機,就會發現系統磁碟大小已經更改成功了

--
參考資料
How to Extend Windows Boot Volumes in VMware
如何擴充 VMware 虛擬磁碟及作業系統容量

2010年12月27日 星期一

Windows的顯示/隱藏桌面

在Windows XP預設的快速啟動列中會有一個捷徑,可以顯示/隱藏桌面
(隱藏/顯示所有已經開啟的視窗)
在XP的時候有時候會不小心砍掉(Win7中已經被放在視窗的右下角,反正也移除不掉,就不會有這個困擾),這時候可以自己重新做一個捷徑

先開一個純文字檔,內容如下

[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop

並將檔案附檔名改為.scf(檔名倒是無所謂,一般習慣設成"ShowDesktop.scf"或"顯示桌面.scf")就可以了

如果想要在程式中做出同樣的功能,則可以呼叫Shell.Application去呼叫ToggleDesktop這個命令

void ShowDesktop()
{
Type shell =
Type.GetTypeFromProgID("Shell.Application");
shell.InvokeMember("ToggleDesktop",
BindingFlags.InvokeMethod, null,
Activator.CreateInstance(shell), null);
}

--
參考資料
How to re-create the Show desktop icon on the Quick Launch toolbar in Windows XP
C#使用系統的「顯示桌面」功能(Shell.Application)

2010年7月16日 星期五

查找註冊表的變動(WinDiff)

在寫Windows程式時,如果遇到比較冷門的功能
常常會遇到怎麼找都找不到API的狀況(甚至上msdn也沒人回應)
如果這時候你發現其實有手動的方式可以達到同樣的目的
(例如之前提過的DPI Virtualization)
那就可以考慮一下去比對註冊表的變動了

在Windows系統中幾乎所有的變動都會改變註冊表
在執行列打入regedit就可以看到一堆機碼
基本上真的無從找起

這時候就要用到WinDiff工具了
可以參考如何使用 Windiff.exe 公用程式
這個工具可以讓你比對兩個文字檔案,找到並瀏覽差異

1. 在做想要達到目的的操作前,先將註冊表匯出成文字檔
2. 做手動的操作
3. 重開註冊表,並匯出成另一個文字檔
4. 開啟WinDiff,從表單中選取File->CompareFiles...
並分別選取兩個文字檔
5. 如果兩個檔案相同,會顯示identical的訊息
6. 如果不同,會顯示紅字,雙擊紅字就會展開整份檔案
7. 首先會到第一筆差異處,利用下一筆(F8)或上一筆(F7)瀏覽

接下來就是用眼睛比對了
通常你會發現一些關鍵字出現,就是你要找的了
這裡有幾點需要注意的
1. 整份註冊表還蠻大的(100MB+是正常的)
可以考慮針對有關的註冊表查找,或是分成很多個表匯出
這樣可以節省比對的時間
2. 使用WinDiff比對完一對檔案後,最好是重開後再比對下一份
因為似乎還是會占用記憶體,所以會變慢很多
3. 一個動作可能會更動到註冊表的很多地方
就算已經找到,還是建議繼續搜索完其他的部分

在找到差異後,就可以透過編輯註冊表的API來做同樣的調整了
例如DPI Virtualization中的方法
不過這邊要強調,這種做法其實有一定的風險
(當然,如果只是檢查倒是無所謂,但是有修改就很難說了)
你有可能有漏掉沒有改到的地方(造成註冊表的關聯錯誤)
建議是先在測試的機器(可隨時重新安裝的電腦)上,手動做幾次
如果確定穩定而且達到目的的話再用程式去改

--
參考資料
如何使用 Windiff.exe 公用程式