因为所有的用户必须加入到
Team Foundation Licensed Users
组内才能连接上
TFS;
所以只要手工修改数据库,就可以破解
5
用户限制了。我们以
TFSGuest4
帐户做测试
.
具体操作如下:
我们先以
Team Foundation Server
管理员的帐户连接
Team Foundation Server;
然后我们为
Team Foundation Licensed Users
组添加用户
;
如果超过
5
个用户会提示如下显示
:
要破解达到最在用户数的限制(5),我们就手工修改数据库吧:
1. 先把TFSGuest4这个帐户的分配一下权限,例如分配给[Project]\Contributors如下:
2. 选择”属性”进入如下窗口:
3. 选择”Windows用户或组(W)”;点”添加”;再选择”TFSGuest4”帐户;操作后如下:
4. 点确定;
5. 然后打开SQL SERVER 2005;
使用
SQL Management Studio
连接到你的数据库服务器
;
找到
”TfsIntegration”
数据库下的
”tbl_security_identity_cache”
表
SELECT
sid
FROM
tbl_security_identity_cache
where
display_name
=N
'TFSGuest4'
and
deleted=0
注意
:
中文的用户名在之前加
N .
即:
where [display_name]=N'
张三
';
Deleted
字段
:
是否已经删除
;0
表示
:
未删除
;1
表示
:
已删除
执行后如下
:
7.
然后再用
SQL
语句查询出
Team Foundation Licensed Users
组的
SID;
SELECT
sid
FROM
tbl_security_identity_cache
WHERE
(display_name = N'Team Foundation Licensed Users')
AND
(deleted = 0)
8.
然后打开
”
tbl_security_membership_cache
”
表
;
如下
:
10.
再在
”
tbl_gss_group_membership
”
表中也加入
;”
parent_group_sid
”
字段中加入
7中查出的SID, “
member_sid
”
字段中加入
6查出的SID; “
last_update
”
字段定个时间
;
跟
9
有点相同操作
:
注
:
6-11
步骤
;
可以用一个
SQL
脚本添加用户到
Team Foundation Licensed Users
组处理
:
declare
@container
varchar(
100
),
@member
varchar(
100
)
SELECT
@container
=
[sid]
FROM
[TfsIntegration]
.
[dbo]
.
[tbl_security_identity_cache]
where
[display_name]
=N
'Team Foundation Licensed Users' and deleted=0
SELECT
@member
=
[sid]
FROM
[TfsIntegration]
.
[dbo]
.
[tbl_security_identity_cache]
where
[display_name]
=N
'TFSGuest4' and deleted=0
Insert
[TfsIntegration]
.
[dbo]
.
[tbl_security_membership_cache]
(
[container]
,
[member]
)
s
(
@container
,
@member
)
Insert
[TfsIntegration].[dbo].[tbl_gss_group_membership]
(
[parent_group_sid]
,
[member_sid]
,
[last_update]
)
s
(
@container
,
@member
,
getdate
())
将上面的代码用查询分析器执行一下就可以了
;(
只需要执行一次
)
如果一不小心删除了所有
“Team Foundation Licensed Users”
组中的用户
;
就无法登录
TFS
了
,
也可以用上面脚本的方法
;
改一下帐户名就
OK
了
;