千家信息网

【AD】【组策略】利用启动脚本为域普通用户安装字体的方法

发表于:2025-12-05 作者:千家信息网编辑
千家信息网最后更新 2025年12月05日,默认情况下安装字体需要管理员权限。如果只是把字体文件复制到%systemroot%\fonts内,是无法被系统认定为字体已经安装的。同时需要在以下位置的注册表写入一个项。hklm\SOFTWARE\M
千家信息网最后更新 2025年12月05日【AD】【组策略】利用启动脚本为域普通用户安装字体的方法

默认情况下安装字体需要管理员权限。
如果只是把字体文件复制到%systemroot%\fonts内,是无法被系统认定为字体已经安装的。同时需要在以下位置的注册表写入一个项。
hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts,具体格式你可以自己查看。
那么知道怎么算正确安装脚本后。就可以使用启动脚本来做了。因为启动脚本用的是nt authority\system权限。

安装前字体文件夹内默认如下:

注册表内如下:

脚本执行完安装后如下:

注册表:

脚本内容如下:


@echo off
::以下内容为了测试脚本是否正常执行可删除
::---------------------------------------------------------------------------
rem 该脚本会在启动时在C盘根目录创建一个计算机名称加日期的文件夹
set y=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%
md "c:\%y%+%computername%"
::----------------------------------------------------------------------------

::下面是为了设置fonts的名字
set x=%date:~0,4%%date:~5,2%%date:~8,2%

::共享路径
set paath=\192.168.1.160\abc
::共享主机的访问权限
set usr=administrator@kaedeleo.com
set psd=1
::共享IP
set ip=192.168.1.160

::因为是启动脚本所以要先创建空连接目标计算机
net use \%ip%\ipc$ /user:%usr% %psd%

::测试空连接有没有正常,要有写入权限,测试,可删除。
::---------------------------------------------------------------------------
whoami >%paath%\1.txt
::----------------------------------------------------------------------------

::利用当天日期的一个txt文档名来判断是否需要执行下面的内容,这样,这个脚本就可控了。
if exist %paath%\%x%.txt goto abc else goto xyz

:abc
::复制字体到字体目录内并添加如下注册表信息
xcopy %paath%\%x%.TTF %systemroot%\fonts && reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v %x%(TrueType) /t reg_sz /d %x%.ttf
xcopy %paath%\%x%1.TTF %systemroot%\fonts && reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v %x%1(TrueType) /t reg_sz /d %x%1.ttf
xcopy %paath%\%x%2.TTF %systemroot%\fonts && reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v %x%2(TrueType) /t reg_sz /d %x%2.ttf
xcopy %paath%\%x%3.TTF %systemroot%\fonts && reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v %x%3(TrueType) /t reg_sz /d %x%3.ttf
xcopy %paath%\%x%4.TTF %systemroot%\fonts && reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v %x%4(TrueType) /t reg_sz /d %x%4.ttf

::必须重启才能生效
shutdown /r /t 00 /f

:xyz
exit


脚本内容应该都看得明白,里面测试的东西是方便你排错,用好了可以删掉,做个脱水版。说下里面一些为什么这么做。
设计部门可能会使用字体的情况比较多,设置这个脚本日常启动就行。
【if exist %paath%\%x%.txt goto abc else goto xyz】
里面也写了,这是为了控制。如果平时不需要安装字体,到这一步就结束了。
需要安装,你只需要将字体改成当天的日期就行,比如将微软雅黑.ttf改成20180523.ttf放到对应的目录就行。
如果是多个,就根据脚本里的内容改名。默认给了5个。
如下图:

假如A用户要你安装某个字体,你就把字体按照上图改成当天的日期后改名放到目录内。新建一个当天日期的txt放里面。告知用户A,重启计算机,重启完毕后什么都不要操作,安装完字体后电脑会自动重启,要生效必须重启。然后登录即可。
有人会问会不会无限重启,如果源ttf一直在的话。
不会,第二次执行的时候因为目标文件夹已经有文件,会询问是否覆盖而不执行下去。然后你把日期.ttf删掉即可。
过了10分钟,A用户又要你安装某个字体了。
那么如果你一开始用的20180523,那么就用下面的名字,叫他重启,就自动安装完了。


因为思考这个的关系,引申出是不是我可以做一个永久自动运行的启动脚本与登陆脚本。
这个脚本也是由共享目录内的日期.txt来控制是否执行。
这个脚本本身不执行多余操作,只通过共享目录的日期.txt来激活,启动另一个BAT或Powershell。
这样我就可以很方便的再执行其他脚本,而不需要再做新的组策略刷新等操作。避免莫名原因的失败。
那么为了避免无限loop,用xcopy覆盖不执行下面命令和if exsit来判断解决。
这个脚本起先应该将计算机或用户名回写到共享目录,让IT管理员知道哪些失败了,以保证所有人都获取到这个"根"脚本。

脚本 字体 日期 目录 内容 文件 用户 权限 注册表 计算机 测试 文件夹 名字 情况 目标 管理员 面的 控制 管理 策略 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 我的世界基岩版竹龙服务器ip 数据库系统原理及应用教程实验 我的世界服务器发点卷指令 北京推广软件开发有哪些 文科能考网络安全专业吗 面试电脑网络技术员 刀片式服务器 上海专业网络技术服务代理商 网络安全活动周心得体会 数据库设计命名规则 联佰DICOM打印服务器软件 网络技术OSPF 网络安全意识的问题 连接本地数据库无监听程序 地平线4服务器是全球吗 梁溪区机电软件开发注意事项 怎么描述数据库的增删改查 java获取服务器类型 教育部学生数据库 网络安全风险漏洞通报整改 医学临床病例随访数据库平台 数据库应用实践会计ppt 淮安系统软件开发管理 放心的crm管理软件开发定制 预防网络安全诈骗十个凡是 过好网络安全观 西安分行网络安全宣传 连接本地数据库无监听程序 最具性价比家用游戏服务器购买 软件开发专业怎么样呀
0