2015-05-29 98 views
1

我正嘗試在Windows XP中使用VBScript安裝字體。但出於某種原因,我的腳本在Windows 7中正常工作,但在Windows XP中無法正常工作。我需要在沒有系統重啓的情況下安裝字體,所以我不得不選擇這種方法,而不是其他需要系統重啓的註冊表更改方法。這是我的VBScript在Windows XP中安裝字體的腳本

Set objShell = CreateObject("Shell.Application") 
Set objFolder = objShell.Namespace("D:\Logs\") 
Set objFolderItem = objFolder.ParseName("Roboto-Italic.ttf") 
objFolderItem.InvokeVerb("Install") 

我的猜測是InvokeVerb(「安裝」)命令不能在Windows XP中工作。在那種情況下,有沒有其他的選擇?請指導我謝謝...

回答

3

下一個腳本(代碼段)應該在(過時)的Windows XP的工作:

Const ssfFONTS = &H14& 

Set objShell = CreateObject("Shell.Application") 
Set objFolder = objShell.Namespace(ssfFONTS) 
objFolder.CopyHere "D:\Logs\Roboto-Italic.ttf" 

如果字體已經安裝,那麼你可以提示覆蓋它。不知道是否不使用上面的方法...

ShellSpecialFolderConstants enumeration

指定識別特殊 文件夾獨特的,系統無關的值需要重新啓動。這些文件夾經常被應用程序使用,但在任何給定的系統上,這些文件夾可能不具有相同的名稱或位置。

其中包括:

  • ssfFONTS 0x14 (20)。包含已安裝字體的虛擬文件夾。 A 的典型路徑是C:\Windows\Fonts

閱讀Hey, Scripting Guy! How Can I Install Fonts Using a Script?

一旦字體已被添加到該文件夾​​,操作系統 將立即安裝字體爲你...
這是事實,但與一個非常重要的注意事項:您必須使用Shell對象複製 文件。無可否認,您可以使用WMIFileSystemObject將文件複製到Fonts文件夾;但是,當您這樣做時,操作系統將不會自動爲您安裝 字體。據我們所知,只有程序化的方式來獲得 Windows識別一個新的字體已被添加到Fonts 文件夾,從而讓Windows安裝字體爲你,就是用 的Shell對象

+0

謝謝JosefZ,我已經嘗試過了,您提供的代碼片段將字體複製到C:\ Windows \ Fonts位置,但不安裝它。 – marak

+0

如果我記得自Windows XP最佳時間以來,它應該工作... – JosefZ

+0

謝謝JosefZ,我再次嘗試它與您的腳本它的工作。不知道上次發生了什麼問題。也謝謝你的解釋。 – marak