上篇讲完了Terminal Services 2008中依据用户角色来分配应用程序,很辛苦,要找插件,要改代码,一二三四步,一路走下来,总算是心愿达成,达成心愿了。微软似乎也意识到了依据用户角色来分配程序这个需求的迫切性,在Windows Server 2008 R2中加入了这样的一个功能,打开RemoteApp管理器,找到发布的应用程序,选择属性,选择用户分配,给个截图看个明白
 
要使用这个功能,有一个前提条件,RD会话主机服务器必须加入到域中。或许你就有了开个工作组环境的RDS的冲动,年轻人,想试试就动手吧,结果我们给个图看一下
 
提示很明确,不在域中,这个功能就没得完了,这里就留给了我们一个新的问题,工作组中有什么办法做到依据用户来分配程序?
我们很自然的先想到RemoteApp Filter这个插件,但它只适用于Windows Server 2008的Terminal Services,到了RDS当中,一句话,爱莫能助。
其实,softice既然写这篇文档,提这个问题,不是想自己搬个石头砸断自己的脚,弄个自己搞不定的问题把自己掐死,这里我们还是有方法玩的,要玩的话,得改注册表项,依照老规矩,一二三四步走一走:
1、打开注册表项,
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Applications
一看这项,我们就明白了,我们在RemoteApp管理器中发布的程序都在这里列队排着呢,站得还挺整齐,给个截图,看个明白
我们随便打开其中的一个程序,就可以发现右边有一个SecurityDescriptor的项,他就是我们今天的主角了,要实现工作组环境中,针对用户分配程序,就得改它的值。
 
2、我们在域环境当中,成功分配用户后,SecurityDescriptor的值如下
O:WDG:WDD:ARP(A;CIOI;CCLCSWLORCGR;;;S-1-5-21-1976147704-17255726-1205334786-1002)(A;CIOI;CCLCSWLORCGR;;;S-1-5-21-1976147704-17255726-1205334786-1003)
依据上面的这个值,可以看出,实际上用户或组在这里是以SID的形式表示的,我们可以依葫芦画瓢,把工作组环境当中的用户或组的SID在这里替换或是增加就OK了;
 
3、要获取用户的SID,给上一个sysinternals的psgetsid工具,给个链接,直接下了
要获取用户的SID,可以运行psgetsid 用户名,给个截图,看个明白
 
这样的话,将获得的SID,按照步骤2当中的格式修改SecurityDescriptor的键值就OK了。
通过这种方法,我们就可以在工作组环境当中,实现依据用户来分配程序了。
 
 

本文出自 “俾多心机 做好自己” 博客,请务必保留此出处 http://softicelee.blog.51cto.com/932950/301167