嗨,Scripting Guy!

嗨,Scripting Guy!

歡迎使用 TechNet 專欄,Microsoft Scripting Guys 會在此為您解答有關系統管理指令碼的常見問題。您有關於系統管理指令碼方面的問題嗎?請將電子郵件傳送到 scripter@microsoft.com。我們無法保證能夠逐一回答每個問題,不過我們會盡力而為。

還有,別忘了瞧瞧全新經過改良的嗨,Scripting Guy!過往文件

今天的問題:如何變更 Temporary Internet Files 資料夾的大小?


如何變更 Temporary Internet Files 資料夾的大小?

嗨,Scripting Guy!我要如何變更預留給 Internet Explorer 暫存檔資料夾的磁碟空間量?

-- AD

AD,您好。此專欄的第一份草稿我們馬上就寫得出來;因為整篇只有這一行字:

問倒我們了。

但是在討論完這樣的答案對我們的顧客來說有多麼可貴,同時又發現我們這個月要寫績效報告之後,我們決定或許該進一步探勘這個問題。雖然花了點時間研究,我們最後還是找到了答案 (不用賭也知道我們肯定會把這特別註明在績效報告上,放在「至少今年我們沒有放火燒了任何東西」的註記之後。除了這兩項,這或許是我們表現最好的報告)。

要是您不確定 AD 指的是什麼,請啟動 Internet Explorer,然後從 [工具] 功能表中選取選取 [網際網路選項]。在 [網際網路選項] 對話方塊中的 [一般] 索引標籤上,按一下 [設定]。您應該會看到一個與此類似的對話方塊:

Internet Explorer


AD 想要做的是寫一個可以變更 [使用的磁碟總空間] 值的指令碼 (在本例中是設定為 447 MB)。我們有個好消息要告訴您,AD,您不用寫這個指令碼,我們已經為您寫好了:

Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
 
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
 
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\Cache\Content"
strValueName = "CacheLimit"
dwValue = 358400
objRegistry.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Cache\Content"
strValueName = "CacheLimit"
dwValue = 358400
objRegistry.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

結果預留給網際網路暫存檔的磁碟空間量是由兩個登錄值所管理的:

  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\Cache\Content\CacheLimit
  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Cache\Content\CacheLimit

如要變更 447 MB 的大小,只需要變更這兩個登錄項目的值就可以了。

而那正是我們指令碼所做的,指令碼一開始會定義一個名為 HKEY_CURRENT_USER 的常數,並且將值設為 &H80000001;我們稍後會用此常數來告訴指令碼我們想要使用登錄中的 HKEY_CURRENT_USER 部分。接著連接到本機電腦上的 WMI 服務,更具體地說,是連接到 StdRegProv 類別。

接下來的三行程式碼是用來將值指定給三個不同變數:

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\Cache\Content"
strValueName = "CacheLimit"
dwValue = 358400

strKeyPath 變數代表登錄中 HKEY_CURRENT_USER 部分的路徑;而 ValueName 代表我們想要變更的登錄值 (在此例中為 CacheLimit)。我們使用 dwValue 變數來指明 Temporary Internet Files 資料夾的新大小。有一點要注意的是,雖然磁碟空間量在 Internet Explorer UI 中是以 MB 表示,但是存在登錄中的值則是以 KB 儲存。不用說也知道,我們得在此做點算術。假設我們想將磁碟空間量設定為 350 MB,這樣就必須將 350 乘以 1024,會得到 358400 KB。而這就是要指定給 dwValue 變數的值。如果要預留 238 MB,就將 238 乘以 1024,然後將該值 (243712) 指定給 dwValue。

若要實際變更登錄中的值,只需要呼叫 SetDWORDValue 方法,將適當的變數當成參數就行了:

objRegistry.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

之後再對第二個登錄值重複此程序。下一次啟動 Internet Explorer 時,您應該會看到預留給網際網路暫存檔的磁碟空間量已經變更了:

Internet Explorer


要是我們能夠寫一個指令碼,跟這個變更 Internet Explorer 快取大小的指令碼一樣簡單,來改一下我們的績效報告成績那就太好了…


如需詳細資訊

查看嗨,Scripting Guy!- 過往文件

 

回到頁首 回到頁首