1. 程式人生 > >【AD】【組策略】利用啟動腳本為域普通用戶安裝字體的方法

【AD】【組策略】利用啟動腳本為域普通用戶安裝字體的方法

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 [email protected]
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管理員知道哪些失敗了,以保證所有人都獲取到這個“根”腳本。

【AD】【組策略】利用啟動腳本為域普通用戶安裝字體的方法