惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
NISL@THU
NISL@THU
Application and Cybersecurity Blog
Application and Cybersecurity Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
E
Exploit-DB.com RSS Feed
Forbes - Security
Forbes - Security
Cyberwarzone
Cyberwarzone
Hacker News - Newest:
Hacker News - Newest: "LLM"
Schneier on Security
Schneier on Security
Webroot Blog
Webroot Blog
WordPress大学
WordPress大学
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Check Point Blog
Google DeepMind News
Google DeepMind News
S
Security @ Cisco Blogs
H
Help Net Security
T
Tenable Blog
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
Attack and Defense Labs
Attack and Defense Labs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
S
Schneier on Security
宝玉的分享
宝玉的分享
Help Net Security
Help Net Security
博客园 - 聂微东
A
Arctic Wolf
S
Securelist
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
Google Online Security Blog
Google Online Security Blog
O
OpenAI News
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
D
Darknet – Hacking Tools, Hacker News & Cyber Security
H
Hacker News: Front Page
Cisco Talos Blog
Cisco Talos Blog
P
Privacy International News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
M
MIT News - Artificial intelligence
Martin Fowler
Martin Fowler
T
Troy Hunt's Blog
有赞技术团队
有赞技术团队
The Hacker News
The Hacker News
C
Cisco Blogs

博客园 - 鱼十七

[Programming Entity Framework] 第3章 查询实体数据模型(EDM)(二) [Programming Entity Framework] 第3章 查询实体数据模型(EDM)(一) [Programming Entity Framework] 第2章 探究实体数据模型(EDM)(三) [Programming Entity Framework] 第2章 探究实体数据模型(EDM)(二) [Programming Entity Framework] 第2章 探究实体数据模型(EDM)(一) [Programming Entity Framework] 第1章 ADO.NET实体框架介绍(二) [Programming Entity Framework] 第1章 ADO.NET实体框架介绍(一) Programming Entity Framework 第二版 翻译索引 设计模式学习笔记 1.介绍 WP7 学习手记1.你好 WP7 excel2007内容转成xml ASP.NET 生成静态页面的思路介绍 scrum介绍 SQL SERVER 2005服务无法启动问题的解决办法 C#操作Excel知识点 [翻译]MS project 与 MS Team Foundation Server(TFS)的域映射 [翻译]通过调用多个动作创建ASP.NET MVC视图 [翻译]在ASP.NET MVC中绑定数据(包括分页和排序) MOSS文章过滤QueryString Filter Web Parts使用及Web Parts部署
ASP.NET方式在工作组内修改帐户密码
鱼十七 · 2010-04-27 · via 博客园 - 鱼十七

背景:
以工作组的方式在服务器A上架设了TFS2008,分配给组员的帐户是服务器A的本地帐户,在这种情况下,组员如果想要修改密码,就需要提供一个修改的平台。

首先想到的是,在TFS的Sharepoint门户上集成修改密码的页面,但是很遗憾,在网上找到的Web part控件都有些问题,实在不行了,就只好自己单独弄了一个ASP.NET页面,其实还是使用DirectoryEntry来使用修改。修改密码的命令有"ChangePassword"和"SetPassword",这两个命令的区别在于:


"ChangePassword"需要旧密码,它对于修改密码的帐户没有要求。
"SetPassword"不需要旧密码,但它要求被修改的用户拥有管理员权限。

最后选择使用ChangePassword,码如下: 

Default.aspx.cs

/*
* Created by Aries 
http://www.cnblogs.com/sansi
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.DirectoryServices;namespace ChangePwd
{
    
public partial class _Default : System.Web.UI.Page
    {
        
protected void Page_Load(object sender, EventArgs e)
        {
            lableUserName.Text 
= Environment.UserName;
        }
protected void btnChangePwd_Click(object sender, EventArgs e)
        {
            
string oldPassword = textOldPwd.Text.Trim();
            
string newPassword = textNewPwd.Text.Trim();
            
string newPassword2 = textNewPwd2.Text.Trim();if (oldPassword == newPassword)
            {
                lableMSG.Text 
= "新密码与旧密码不能相同";
                
return;
            }
            lableMSG.Text = ChangePassword(Environment.UserName, oldPassword, newPassword);
        }private string ChangePassword(string username, string oldpass, string newpass)
        {
            
string machineAndUser = Environment.MachineName + "\\" + username;
            
string adsPath = String.Format("WinNT://{0}/{1}, user", Environment.MachineName, username);
            DirectoryEntry user 
= new DirectoryEntry(adsPath, machineAndUser, oldpass, AuthenticationTypes.Secure);
            
try
            {
                user.Invoke(
"ChangePassword"new object[] { oldpass, newpass });
                
return string.Format("更改密码成功");
            }
            
catch (Exception ex)
            {
                
string message = ex.Message;
                
while ((ex = ex.InnerException) != null)
                {
                    message 
+= ":: " + ex.Message;
                }
                
return message;
            }
            
finally
            {
                user.Dispose();
            }
        }
    }
}

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ChangePwd._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>修改密码</title>
    
<style type="text/css">
        body
{ font-family:Tahoma; font-size:14px;}
        .passwordbox
{ width:600px; text-align:left;}
        .passwordbox .text
{ width:120px; height:16px; border:1px solid #ccc;}
        .passwordbox .title
{ color:Blue;}
        .passwordbox p
{ text-indent:20px;}
        .red
{ color:Red;}
    
</style>
</head>
<body>
    
<form id="form1" runat="server">
    
<div class="passwordbox">
        
<class="title">
            
<b><asp:Label ID="lableUserName" Text="" runat="server"></asp:Label></b>,您可以在这里修改帐户密码
        
</p>
        
<p>
            
<lable>  旧密码:</lable><asp:TextBox CssClass="text" ID="textOldPwd" Text="" TextMode="Password" runat="server"></asp:TextBox>
            
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="textOldPwd" Text="*"></asp:RequiredFieldValidator>
        
</p>
        
<p>
            
<lable>  新密码:</lable><asp:TextBox CssClass="text" ID="textNewPwd" Text="" TextMode="Password" runat="server"></asp:TextBox>
            
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="textNewPwd" Text="*"></asp:RequiredFieldValidator>            
        
</p>
        
<p>
            
<lable>确认新密码:</lable><asp:TextBox CssClass="text" ID="textNewPwd2" Text="" TextMode="Password" runat="server"></asp:TextBox>
            
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="textNewPwd2" Text="*"></asp:RequiredFieldValidator>
            
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="CompareValidator" ControlToCompare="textNewPwd" ControlToValidate="textNewPwd2" Text="两次新密码不相同"></asp:CompareValidator>
        
</p>
        
<style=" text-align:left; padding-left:100px;"><asp:Button ID="btnChangePwd" runat="server" Width="80px" Text="修改" OnClick="btnChangePwd_Click" /></p>
        
<p><asp:Label ID="lableMSG" CssClass="red" Text="" runat="server"></asp:Label></p>
    
</div>
    
</form>
</body>
</html>