【问题标题】:Script to Install Font in Windows XP在 Windows XP 中安装字体的脚本
【发布时间】:2015-05-29 19:47:17
【问题描述】:

我正在尝试使用 VBScript 在 Windows XP 中安装字体。但由于某种原因,我的脚本在 Windows 7 中运行良好,但在 Windows XP 中无法运行。我需要在不重新启动系统的情况下安装字体,所以我不得不选择这种方法,而不是其他需要重新启动系统的注册表更改方法。这是我的 VBScript

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

我的猜测是 InvokeVerb("Install") 命令在 Windows XP 中不起作用。在那种情况下,有没有其他选择?请指导我谢谢...

【问题讨论】:

    标签: vbscript windows-xp


    【解决方案1】:

    下一个脚本(代码 sn-p)应该可以在(过时的)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)。包含已安装字体的虚拟文件夹。一个 典型路径是C:\Windows\Fonts

    阅读Hey, Scripting Guy! How Can I Install Fonts Using a Script?

    将字体添加到文件夹后,操作系统 将立即为您安装字体...
    这是真的,但有一个非常重要的警告:你必须复制 文件使用 Shell 对象。诚然,您可以使用WMIFileSystemObject 将文件复制到Fonts 文件夹中;然而, 当您这样做时,操作系统不会自动安装 给你的字体。据我们所知,唯一的程序化方式 Windows 识别已将新字体添加到 Fonts 文件夹,从而让 Windows 为您安装该字体,是使用 Shell 对象

    【讨论】:

    • 感谢 JosefZ,我已经尝试过了,您提供的 sn-p 会将字体复制到 C:\Windows\Fonts 位置但不安装。
    • 谢谢JosefZ,我用你的脚本再次尝试了它,它工作正常。不知道上次出了什么问题。也谢谢你的解释。
    • 您好 JosefZ,您提供给我的脚本再次无法正常工作。我复制并粘贴了同样的东西。它可以复制到 C:\Windows\Fonts 文件夹,但不会被安装。操作系统中是否有任何阻塞?
    • @marak 没有理由不信任 嘿,脚本专家! 站点提供的代码 sn-p 和解释。不多说了,抱歉。
    • JosefZ,我想通了。该脚本能够安装字体,但在打开控制面板字体文件夹之前,它没有在 Internet Explorer 中被枚举。所以,我添加了一个脚本,它会在安装字体后自动打开 controlPanel 字体文件夹
    猜你喜欢
    • 1970-01-01
    • 2016-12-15
    • 2013-11-17
    • 2023-03-28
    • 1970-01-01
    • 2014-07-01
    • 2011-10-29
    • 1970-01-01
    • 2011-01-26
    相关资源
    最近更新 更多