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),其它分辨率背景一樣操作

wKioL1nB1uriQ3hWAACv0Z67uAg944.png-wh_50

第三,準備後,在\\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
  EndIf
EndFunction
FUNCTION 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 @error
ENDFUNCTION

第四,定義好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"
ELSE
RUN "%logonserver%\netlogon\Bginfo\bginfo.exe /nolicprompt %logonserver%\netlogon\Bginfo\wallpaper.bgi /timer:00"
ENDIF


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章