2015-05-29 35 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