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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

  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 = 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

本文出自 “water-ice” 博客,请务必保留此出处http://windyma.blog.51cto.com/661702/1967071

以上是关于AD 脚本kixtart运用之四(用户桌面背景)的主要内容,如果未能解决你的问题,请参考以下文章

AD 脚本kixtart运用之三(添加windows共享打印机)

AD 脚本kixtart运用之一 ( 网络盘自动映射)

AD 脚本kixtart运用之六(outlook邮件批量生成签名)

在AD中如何实现统一桌面

这系统桌面右击有一个啥打开好桌道壁纸,这个怎么删掉,原应用我已经卸载了

在AD中,使用组策略同一桌面域