由于普通的Domain Users没有进行注册表写入及复制文件到All Users桌面的权限,因此昨天分享的登录脚本还需要两个辅助脚本,这两个辅助脚本都是通过Runasspc来实现的。

     根据MVP亮亮的建议,我在脚本中适当的加入了中文的注释,希望能够更多的帮助到大家,如果您对VBScript有兴趣,建议多去看看TechNet的脚本中心,以及Scripting Guy,这里有更详细以及更多的介绍。

   进入今天的正题,这两个辅助脚本分别为Default_Admin_Program.vbs和Special_Admin_Program.vbs,在昨天的分享中,有这样一段代码

 
  
  1. '省略部分代码....  
  2.  
  3.   Case "Print-Screen-User"  
  4.          RegInfo = 1     
  5.  
  6. '省略部分代码....  
  7.  
  8. If RegInfo = 1 Then     
  9.     wshell.Run("\\" & VCsite & "2k3dc01\netlogon\runasspc.exe /cryptfile:" & "\\" & VCSite & "2k3dc01\netlogon\Admin_Program\Special_Admin_Program.spc /quiet")     
  10.  Else                  
  11. wshell.Run("\\" & VCsite & "2k3dc01\netlogon\runasspc.exe /cryptfile:" & "\\" & VCSite & "2k3dc01\netlogon\Admin_Program\Default_Admin_Program.spc /quiet")             End If       End if

     以上代码用于判断当前用户是否属于Print-Screen-User组,如果是则执行Special_Admin_Program.vbs,否则则执行Default_Admin_Program.vbs,这两个脚本的内容几乎完全一致,唯一不同之处在于Special通过注册表实现了将PrnScr键位映射的调整,从而失用户无法通过该键来打印屏幕。

以下分别为这两个VBS的代码,带有简单中文注释。

 

 
  
  1. '***********************************************************************  
  2. ' Script        : Special Users Policy  
  3. ' Creation Date : 2010-07-22  
  4. ' Version       : 2.1  
  5. '***********************************************************************  
  6.  
  7.  
  8. '定义无须UsbStor安全策略的计算机列表  
  9. On Error Resume Next 
  10. Const HKEY_LOCAL_MACHINE = &H80000002  
  11. arrEnUsbStorPClist       = Array("HZPC01","HZPC02","HZPC03"_  
  12.                       "SHPC01","SHPC02",_  
  13.                   "NJPC01","NJPC02",_  
  14.                 "FZPC01","FZPC02"_  
  15.                   "XMPC01","XMPC02"_  
  16.                   "SZPC01")  
  17. '定义无需VNC安全策略的计算机列表  
  18. arrVNCNoQueryConPClist   = Array("HZPUB01","HZPUB02","HZPUB03"_  
  19.                       "SHPUB01","SHPUB02",_  
  20.                   "NJPUB01","NJPUB02",_  
  21.                   "FZPUB01","FZPUB02"_  
  22.                   "XMPUB01","XMPUB02"_  
  23.                   "SZPUB01")            
  24.                    
  25. '------------------------------------------------------------------------------------------------------------  
  26. Set WShell     = CreateObject("wscript.shell")  
  27. Set objNetwork = CreateObject("wscript.network")  
  28. Set objFSO     = CreateObject("scripting.FileSystemObject")   
  29. strComputer    = objNetwork.ComputerName  
  30. VCsite         = Left(strComputer,2)  
  31. EnableUSB      = 0  
  32. EnableVNC      = 0  
  33.  
  34. 'Copy ICA Lnk 复制ICA快捷键到目标计算机All user桌面  
  35. objFSO.CopyFile "\\" & VCSite & "2k3dc01\Resources\Icon\×××\LinkName1.lnk","C:\Documents and Settings\All Users\桌面\",True 
  36. objFSO.CopyFile "\\" & VCSite & "2k3dc01\Resources\Icon\×××\LinkName2.lnk","C:\Documents and Settings\All Users\桌面\",True 
  37. objFSO.CopyFile "\\" & VCSite & "2k3dc01\Resources\Icon\×××\LinkName3.lnk","C:\Documents and Settings\All Users\桌面\",True 
  38.  
  39.  
  40. 'Disable Print Screen 通过更改PRNScr键位映射,达到禁用屏幕打印键功能  
  41. Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")  
  42. strKeyPath = "SYSTEM\CurrentControlSet\Control\Keyboard Layout" 
  43. strValueName = "Scancode Map" 
  44. arrValues = Array(&h00,&h00,&h00,&h00,&h00,&h00,&h00,&h00,&h03,&h00,&h00,&h00,&h46,&h00,&h37,&he0,&h46,&h00,&h54,&h00,&h00,&h00,&h00,&h00)  
  45. objReg.SetBinaryValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,arrValues  
  46.  
  47. 'USB Security Policy 遍历arrEnUsbStorPClist数组,判断当前计算机名称是否在列表中,如果在,则分别写入相应的注册表键值  
  48. For lngIndex = 0 To UBound(arrEnUsbStorPClist)  
  49.     If arrEnUsbStorPClist(lngIndex) = strComputer Then 
  50.         EnableUSB = 1  
  51.         Exit For 
  52.     Else 
  53.         EnableUSB = 0  
  54.     End If 
  55. Next 
  56.  
  57. If EnableUSB =1 Then 
  58.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\WriteProtect","1","REG_DWORD" '禁止写入  
  59.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Start","3","REG_DWORD"                     '启用USBStor  
  60. Else 
  61.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\WriteProtect","1","REG_DWORD" '禁止写入  
  62.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Start","4","REG_DWORD"                     '禁用用USBStor  
  63. End if  
  64.  
  65.  
  66. 'VNC Security Policy  
  67. For lngIndex = 0 To UBound(arrVNCNoQueryConPCList)  
  68.     If arrVNCNoQueryConPCList(lngIndex) = strComputer Then 
  69.         EnableVNC = 1  
  70.         Exit For 
  71.     Else   
  72.         EnableVNC = 0  
  73.     End If    
  74. Next 
  75.  
  76. If EnableVNC =1 Then 
  77.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4\QueryConnect","0","REG_DWORD"       '禁用VNC连接确认  
  78.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4\QueryOnlyIfLoggedOn","0","REG_DWORD"   
  79. Else   
  80.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4\QueryConnect","1","REG_DWORD"         '启用VNC连接确认  
  81.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4\QueryOnlyIfLoggedOn","1","REG_DWORD"    
  82. End If 
  83.  
  84. 'Enable Remote Desktop 启用RDP功能  
  85. WShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fDenyTSConnections","0","REG_DWORD" 
  86.  
  87. 'Reset Terminal Services Licensing 用于解决终端服务Lincens90天过期的问题  
  88. WShell.RegDelete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\" 
  89.  
  90. 'Disable Firewall Services 禁用系统内置Firewall服务  
  91. WShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Start","4","REG_DWORD" 
  92.  
  93. 'The end 

 

 

 
  
  1. '***********************************************************************  
  2. ' Script        : Default Users Policy  
  3. ' Creation Date : 2010-07-22  
  4. ' Version       : 2.1  
  5. '***********************************************************************  
  6.  
  7.  
  8. '定义无需UsbStor安全策略的计算机列表  
  9. On Error Resume Next 
  10. Const HKEY_LOCAL_MACHINE = &H80000002  
  11. arrEnUsbStorPClist       = Array("HZPC01","HZPC02","HZPC03"_  
  12.                       "SHPC01","SHPC02",_  
  13.                   "NJPC01","NJPC02",_  
  14.                   "FZPC01","FZPC02"_  
  15.                   "XMPC01","XMPC02"_  
  16.                   "SZPC01")  
  17. '定义无需VNC安全策略的计算机列表  
  18. arrVNCNoQueryConPClist   = Array("HZPUB01","HZPUB02","HZPUB03"_  
  19.                       "SHPUB01","SHPUB02",_  
  20.                   "NJPUB01","NJPUB02",_  
  21.                   "FZPUB01","FZPUB02"_  
  22.                   "XMPUB01","XMPUB02"_  
  23.                   "SZPUB01")            
  24.                    
  25. '------------------------------------------------------------------------------------------------------------  
  26. Set WShell     = CreateObject("wscript.shell")  
  27. Set objNetwork = CreateObject("wscript.network")  
  28. Set objFSO     = CreateObject("scripting.FileSystemObject")   
  29. strComputer    = objNetwork.ComputerName  
  30. VCsite         = Left(strComputer,2)  
  31. EnableUSB      = 0  
  32. EnableVNC      = 0  
  33.  
  34. 'Copy ICA Lnk 复制ICA快捷键到目标计算机All user桌面  
  35. objFSO.CopyFile "\\" & VCSite & "2k3dc01\Resources\Icon\×××\LinkName1.lnk","C:\Documents and Settings\All Users\桌面\",True 
  36. objFSO.CopyFile "\\" & VCSite & "2k3dc01\Resources\Icon\×××\LinkName2.lnk","C:\Documents and Settings\All Users\桌面\",True 
  37. objFSO.CopyFile "\\" & VCSite & "2k3dc01\Resources\Icon\×××\LinkName4.lnk","C:\Documents and Settings\All Users\桌面\",True 
  38.    
  39. 'Enable Print Screen 删除Scanncode MAP 键值,从而达到启用PRNScr键的功能(需重新登录或重启才能生效)  
  40. WShell.RegDelete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancode Map" 
  41.  
  42. 'USB Security Policy 遍历arrEnUsbStorPClist数组,判断当前计算机名称是否在列表中,如果在,则分别写入相应的注册表键值  
  43. For lngIndex = 0 To UBound(arrEnUsbStorPClist)  
  44.     If arrEnUsbStorPClist(lngIndex) = strComputer Then 
  45.         EnableUSB = 1  
  46.         Exit For 
  47.     Else 
  48.         EnableUSB = 0  
  49.     End If 
  50. Next 
  51.  
  52. If EnableUSB =1 Then 
  53.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\WriteProtect","1","REG_DWORD" '禁止写入  
  54.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Start","3","REG_DWORD"                     '启用USBStor  
  55. Else 
  56.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\WriteProtect","1","REG_DWORD" '禁止写入  
  57.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Start","4","REG_DWORD"                     '禁用用USBStor  
  58. End if  
  59.  
  60.  
  61. 'VNC Security Policy  
  62. For lngIndex = 0 To UBound(arrVNCNoQueryConPCList)  
  63.     If arrVNCNoQueryConPCList(lngIndex) = strComputer Then 
  64.         EnableVNC = 1  
  65.         Exit For 
  66.     Else   
  67.         EnableVNC = 0  
  68.     End If    
  69. Next 
  70.  
  71. If EnableVNC =1 Then 
  72.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4\QueryConnect","0","REG_DWORD"       '禁用VNC连接确认  
  73.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4\QueryOnlyIfLoggedOn","0","REG_DWORD"   
  74. Else   
  75.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4\QueryConnect","1","REG_DWORD"         '启用VNC连接确认  
  76.     WShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4\QueryOnlyIfLoggedOn","1","REG_DWORD"    
  77. End If 
  78.  
  79. 'Enable Remote Desktop 启用RDP功能  
  80. WShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fDenyTSConnections","0","REG_DWORD" 
  81.  
  82. 'Reset Terminal Services Licensing 用于解决终端服务Lincens90天过期的问题  
  83. WShell.RegDelete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\" 
  84.  
  85. 'Disable Firewall Services 禁用系统内置Firewall服务  
  86. WShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Start","4","REG_DWORD" 
  87.  
  88. 'The end 

      在这两个脚本中,您可以学习到如何使用VBScript能过WMI对注册表进行相关的操作。