方法一:
要求条件是已知一个账户的账号和密码。可以通过手动方式重置,也可以通过下面的脚本。
DECLARE @databaseName AS VARCHAR (128); SELECT @databaseName = DB_NAME(); PRINT 'RESET PASSWORD IN DATABASE : ' + @databaseName; PRINT '-----------------------------' + REPLICATE('-', DATALENGTH(@databaseName)); DECLARE @knownUserName AS NVARCHAR (128); DECLARE @lostUserName AS NVARCHAR (128); DECLARE @lostUserId AS NVARCHAR (128); DECLARE @knownPassword AS NVARCHAR (128); DECLARE @knownSalt AS NVARCHAR (128); --pensl为已知密码的用户名 SET @knownUserName = 'pensl'; SET @lostUserName = 'host'; SELECT @knownPassword = Password, @knownSalt = PasswordSalt FROM aspnet_Membership INNER JOIN aspnet_users ON aspnet_Membership.UserId = aspnet_users.UserId WHERE UserName = @knownUserName; PRINT ''; PRINT 'Known Password for "' + @knownUserName + '" is : ' + @knownPassword; PRINT 'Known Password Salt for "' + @knownUserName + '" is : ' + @knownSalt; SELECT @lostUserId = aspnet_Membership.UserId FROM aspnet_Membership INNER JOIN aspnet_users ON aspnet_Membership.UserId = aspnet_users.UserId WHERE UserName = @lostUserName; PRINT ''; PRINT 'UserID for "' + @lostUserName + '" is : ' + @lostUserId; PRINT ''; IF (DATALENGTH(@lostUserName) <= 0 OR @lostUserName IS NULL) PRINT 'Invalid Lost User Name ' + @lostUserName; ELSE BEGIN IF (DATALENGTH(@knownUserName) <= 0 OR @knownUserName IS NULL) PRINT 'Invalid Lost User Name ' + @lostUserName; ELSE BEGIN IF (DATALENGTH(@knownPassword) <= 0 OR @knownPassword IS NULL) PRINT 'Invalid Known Password ' + @knownPassword; ELSE BEGIN IF (DATALENGTH(@knownSalt) <= 0 OR @knownSalt IS NULL) PRINT 'Invalid Known Salt ' + @knownSalt; ELSE BEGIN PRINT ''; PRINT 'BEFORE'; SELECT LEFT(UserName, 12) AS UserName, aspnet_Membership.UserId, LEFT(Email, 20) AS Email, Password, PasswordSalt FROM aspnet_Membership INNER JOIN aspnet_users ON aspnet_Membership.UserId = aspnet_users.UserId WHERE UserName IN (@knownUserName, @lostUserName); PRINT ''; PRINT 'Changing Password for User Id : "' + @lostUserId + '" to "' + @knownPassword + '"'; PRINT ''; UPDATE aspnet_Membership SET Password = @knownPassword, PasswordSalt = @knownSalt -- SELECT UserId, Password, PasswordSalt -- FROM aspnet_Membership WHERE UserId = @lostUserId; PRINT ''; PRINT 'AFTER'; SELECT LEFT(UserName, 12) AS UserName, aspnet_Membership.UserId, LEFT(Email, 20) AS Email, Password, PasswordSalt FROM aspnet_Membership INNER JOIN aspnet_users ON aspnet_Membership.UserId = aspnet_users.UserId WHERE UserName IN (@knownUserName, @lostUserName); END END END END GO PRINT ''; PRINT ' * * * END OF SCRIPT * * *'; PRINT '';
方法二:(更方便)
注册一个新用户testuser,然后去数据库中的users表找到刚注册的testuser用户,将IsSuperUser字段由false改为True。然后再用testuser账户登录DNN系统,admin->user account中将admin的密码重置就可以了。而host的密码要在host->SuperUser Account中重置。
转自:http://blog.csdn.net/xw13106209/article/details/5101731