千家信息网

AD 脚本kixtart运用之四(用户桌面背景)

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,在http://windyma.blog.51cto.com/661702/1967027 文章,已做好用户脚本基础上进行设置首先设置用户背景桌面是微软件的Bginfo工具,而kixtart只是用来获
千家信息网最后更新 2025年02月01日AD 脚本kixtart运用之四(用户桌面背景)

在http://windyma.blog.51cto.com/661702/1967027 文章,已做好用户脚本基础上进行设置

首先设置用户背景桌面是微软件的Bginfo工具,而kixtart只是用来获取用户屏幕的分辨率,根据不同屏幕的分辨率再来调用Bginfo工具来设置不同分辨率的背景图片,以此保证图片不会变形。

第一,在域\\nccn.int\NETLOGON 共享下新建Bginfo目录,把Bginfo.exe工具及不同分辨率的背景图全复制到Bginfo目录下。

第二,用Bginfo.exe工具设置上桌面上需要显示内容(如我的,右上角是电话拨打简单说明,右下角是计算机相关信息及IT的联系电话),点Backgroud,在use these setting:下选择不同的分辨率的背景图文件,确认后。保存在\\nccn.int\NETLOGON\Bginfo下,名为1280-1024.bgi文件(假如这个背景图文件的分辨率为1280x1024),其它分辨率背景一样操作

第三,准备后,在\\nccn.int\NETLOGON\下新建脚本文件Function.kix用于定义一个获取用户屏幕的分辨率的funciton,以便于kixtart.kix调用,如下内容:

;此function来自kixtart官方的案例,根据自行需要作了一些更改

Function GetScreenRes()  Dim $Dev,$Idx,$RKey,$ScreenXRes,$ScreenYRes,$SType  $GetScreenRes = ''  If @InWin = 1     If Split(@ProductType)[1] <> "NT"      $Dev = Split('' + WMIQuery("VideoModeDescription","Win32_VideoController"))      If UBound($Dev) > 1        $GetScreenRes = $Dev[0] + "-" + $Dev[2]      EndIf    Else      $RKey="HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services"      $Dev = "\Device0"      If KeyExist($RKey)        $Idx = 0        Do          $SType = EnumKey($RKey,$Idx)          If @Error = 0 And $SType <> "VgaSave"              $ScreenXRes = '' + ReadValue($RKey + "\" + $SType + $Dev,"DefaultSettings.XResolution")              $ScreenYRes = '' + ReadValue($RKey + "\" + $SType + $Dev,"DefaultSettings.YResolution")          Else            $Idx = $Idx + 1          EndIf        Until @Error Or $ScreenXRes        If $ScreenXRes          $GetScreenRes = $ScreenXRes + '-' + $ScreenYRes        EndIf      EndIf    EndIf  Else    $RKey="HKLM\Config\0001\Display\Settings"    If KeyExist($RKey)      $GetScreenRes = ReadValue($RKey,"Resolution")    EndIf  EndIfEndFunctionFUNCTION WMIQuery($what,$where, optional $computer)  dim $strQuery, $objEnumerator, $value  if not $computer  $computer="@WKSTA"  endif  $strQuery = "Select $what From $where"  $SystemSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//$computer")  $objEnumerator = $SystemSet.ExecQuery($strQuery)  For Each $objInstance in $objEnumerator    If @Error = 0 and $objInstance <> ""      $=execute("$$value = $$objInstance.$what")      $WMIQuery="$value"+""+"$WMIQuery"      EndIf    Next  $WMIQuery=left($WMIQuery,len($WMIQuery)-1)  exit @errorENDFUNCTION

第四,定义好function后,我们在kixtart.kix中添加如下内容:

;首先调用自定义的Function.kix

CALL "%logonserver%\NETLOGON\Function.kix";取得用户屏幕的分辨率并赋给变量$ScreenRes$ScreenRes = GetScreenRes();调用bginfo.exe工具IF EXIST("%logonserver%\netlogon\Bginfo\$ScreenRes.bgi")RUN "%logonserver%\netlogon\Bginfo\bginfo.exe /nolicprompt %logonserver%\netlogon\Bginfo\$ScreenRes.bgi /timer:00"ELSERUN "%logonserver%\netlogon\Bginfo\bginfo.exe /nolicprompt %logonserver%\netlogon\Bginfo\wallpaper.bgi /timer:00"ENDIF


0