Chinaunix首页 | 论坛 | 博客
  • 博客访问: 751166
  • 博文数量: 803
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 10:29
文章分类

全部博文(803)

文章存档

2011年(1)

2008年(802)

我的朋友

分类:

2008-10-29 11:38:59


  当然,你还可以使用前面提到的Kixtart修饰一下这个程序。但有一点要注意,如果允许用户看提示信息的时间过长,意味着用户有足够的时间来终止logout.exe的执行。
  
  但是,这个NTName存在明显的不足,就是在多域的情况下,它会影响另一个域中同名账号的登录。比如,Sales域中的John没有注销,Markets域中的John将不能登录。然而,我们还是找到了解决的办法。NTName2支持自定义的NetBIOS名字,如前所述,这个名字是你登录时是由系统自动添加的。但NTName2允许你自己指定一个值,默认值为Byte 16=oxCE。由于程序需要根据这个值来确定名字冲突,这样执行速度稍微会有一点慢,另一个美中不足的是,自定义的Byte 16值可能与其他NetBIOS应用程序发生冲突。
  
  三、Microsoft
  
  事实上,很多管理员都希望Microsoft提供一个自己的解决方案。最终,Microsoft在 2000 Server Resource Kit中提供了一个命名为CConnect的程序。注意,CConnect虽然在Windows 2000中才出现,但它支持Windows NT,但对系统方面有些特殊需求,主要包括必须是NT SP4或者更高,Windows Script Host,WBEM,MDAC 2.0以上版本。Windows 2000本身已经满足这些条件。这也是目前唯一由Microsoft自己实现的一个解决方案,主要提供了这些功能:
  
  ü 跟踪所有用户已经登录的计算机
  
  ü 允许把并发连接限制到每用户或者每组方式
  
  ü 所有的信息被保存地SQL数据库中
  
  ü 跟踪用户最后登录的计算机
  
  ü 监视用户已经登录到哪台
  
  程序以典型的客户/方式运行。因此,它要求在客户端正确地配置组策略并安装客户端软件,如图1所示。这些组策略选项由CConnect软件包中的CConnect.adm文件提供,并不是由Windows 2000自带的。因此,你必须把这个文件添加到相应的组策略中。打开活动目录用户与计算机管理单元,选择适当的组策略(只有这个策略受到作用的用户才会生效,所以一般我们选择Default Domain Policy),展开用户配置,右击管理员模板*属性*添加,从相应的文件夹中找到CConnect.adm文件,最后,从查看菜单中清除“仅显示策略”。图1中看到的是Windows 2000中组策略选项配置界面,如果你使用的是WinNT 4.0,应该使用Poledit.exe程序打开这个模板。每位管理员可以根据实际要求来配置这些选项,决定启用哪些功能。策略中提供调试与日志记录功能,这对高要求的环境提供了进一步的支持,当然,你可能需要做进一步的配置,如指定日志记录的位置。策略中的“Track Last User”是非常有意思的,有时候计算机可能意外停机(如停电),导致用户没有及时注销,此时用户登录的信息仍然保留在数据库中,此时如果用户试图登录到其他计算机,登录将被拒绝,因为策略认为你仍然登录在另一台计算机上,此时你必须从数据库中搜索相关信息,并予以删除后方可登录。但如果你是登录到同一台计算机(来电后重新登录),数据库信息会被自动更新,并不需要额外的工作。
  
 
  图1:Con-Connect Limiter提供的组策略选项

  
  对于服务器端,你还需要正确配置SQL服务器,为CConnect指定一个具有与sa平等权限的登录账号,这些账号登录信息被保存在每台计算机的下列位置:
  
  HKEY_CURRENT_USER\Software\Microsoft\CConnect\SQLSERVER
  HKEY_CURRENT_USER\Software\Microsoft\CConnect\SQLUSER
  HKEY_CURRENT_USER\Software\Microsoft\CConnect\SQLPASSWORD
  
  Windows 2000的客户计算机可以从VB Script中获益。CConnect软件包中提供了CConnect.vbs(登录)与CClogoff.vbs(注销)两个脚本文件。脚本程序可以实现简单的并发登录限制与远程注销功能,但如果你希望实现CConnect实现的所有功能,建议你安装CConnect Client程序。
  
  图2显示的是CConnect的管理界面,很容易看出可以实现什么功能。在这里我不再详细地描述整个配置过程,有兴趣的读者可以使用随CConnect提供的文档来配置。总体来说,还是非常简单的。
  
  但我们从上面的一些关键信息的描述中不难看出CConnect中存在的问题:—所有的SQL连接信息以明文方式被保存在注册表中,这显然是一件令人提心吊胆的事。其次,对于略通注册表的用户,通过修改注册表就可以解除登录限制,除非你在组策略中限制用户修改注册表。但从解决并发登录限制角度来说,CConnect从可管理性角度讲,是一个不错的选择,而且最新版本( 2.0)还实现对终端用户的限制支持。
  
 

  以上是对并发登录限制三个方案的简单比较,很明显,不论是Windows管理员自己还是Microsoft,都在进步,我们期待更完美的解决方案。如果你有更好的方案,不妨与我们共享一下?
  
  CLS
  AT (1,1)
  If @INWIN = 2     ; 表示客户计算机是Windows 95/98
  $L = "@LSERVER" + "\" + "NETLOGON" + "\" + "WINSET.EXE"
  shell "$L USERNAME=@USERID"
  shell "$L HOMEDRIVE=X:" ; 你为用户映射的网络驱动器
  shell "$L HOMEPATH=@HOMEDIR"
  shell "$L HOMESHARE=@HOMESHR"
  shell "$L COMPUTERNAME=@WKSTA"
  shell "$L USERDOMAIN=@DOMAIN"
  shell "$L LOGONSERVER=@LSERVER"
  shell "$L USERPROFILE=@HOMESHR"
  shell "$L OS=Windows_98"
  setl "USERNAME=@USERID"
  setl "HOMEDRIVE=X:"
  setl "HOMEPATH=@HOMEDIR"
  setl "HOMESHARE=@HOMESHR"
  setl "COMPUTERNAME=@WKSTA"
  setl "USERDOMAIN=@DOMAIN"
  setl "LOGONSERVER=@LSERVER"
  setl "USERPROFILE=@HOMESHR"
  setl "OS=Windows_98"
  endif
  If @WKSTA <> "@LSERVER"   ; 如果客户的工作站不是这台计算机
  settime "@LSERVER"   ; 把工作站的时间设置成服务器时间
  endif
  use X: "@HOMESHR"   ;这是Kixtart中自带的Net use命令
  $S = "@LSERVER" + "\" + "NETLOGON" + "\" + "users.txt"
  IF INGROUP("users") and EXIST("$S")
  Display "$S"
  AT (23,1) "按任何键继续"
  GET $A
  endif
  $B = "@LSERVER" + "\" + "NETLOGON" + "\" + "LOGBAT.BAT"
  shell "$B"
  CLS
  BIG
  $X = 1
  DO
  COLOR w/n
  AT ( $X,$X*2 ) "@USERID"
  $X = $X+1
  UNTIL $X = 6
  COLOR g+/n
  AT ( $X,$X*2 ) "@USERID"
  sleep 3
  AT (23,0)
  SMALL
  $K=”@LSERVER”+”\”+”NETLOGON”+”\”+Onlyonce.txt”
  $J=”x:\”+”@USERID”+”.txt”
  if exist(“J$”)
  goto done
  endif
  CLS
  Display “$K”
  Sleep 3
  $RC=shutdown(“”,”正在关闭系统!”,0,1,0)
  :done
  cookie1 ; 需要通知Windows 98计算机当通过LMSCRIPT时脚本已经运行完毕
  exit
【责编:admin】

--------------------next---------------------

阅读(529) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~