翻腾手指

Code Art

博客园 首页 新随笔 联系 订阅 管理

下面的代码是在平时工作中收集而来,贴在这里方便大家不时之需。


 1 /// <summary>
 2         /// 创建本地用户
 3         /// </summary>
 4         /// <param name="userName">用户名</param>
 5         /// <param name="userPassword">用户密码</param>
 6         /// <param name="msg">返回消息</param>
 7         /// <returns>成功与否</returns>
 8         public static bool CreateLocalUserAccount(string userName, string userPassword, out string returnMsg)
 9         {
10             bool bRet = false;
11             returnMsg = "";
12             DirectoryEntry oLocalMachine = null;
13             DirectoryEntry oNewUser = null;
14             try
15             {
16                 oLocalMachine = new DirectoryEntry("WinNT://" + Environment.MachineName);
17                 oNewUser = oLocalMachine.Children.Find(userName, "user");
18             }
19             catch
20             {
21 
22             }
23             try
24             {
25                 if (oNewUser == null)
26                 {
27                     oNewUser = oLocalMachine.Children.Add(userName, "user");
28                     oNewUser.CommitChanges();
29                     returnMsg = oNewUser.Guid.ToString();
30                     oNewUser.Invoke("SetPassword"new object[] { userPassword });
31                     oNewUser.CommitChanges();
32                     oNewUser.Invoke("Put""UserFlags", DONT_EXPIRE_PASSWORD);
33                     oNewUser.CommitChanges();
34                     oLocalMachine.Close();
35                     oNewUser.Close();
36                     bRet = true;
37                 }
38                 else
39                 {
40                     bRet = true;
41                     returnMsg = string.Format("用户[{0}]已存在,无法重复创建改该用户!", userName);
42                 }
43             }
44             catch (Exception ex)
45             {
46                 returnMsg = ex.Message;
47             }
48             finally
49             {
50                 if (oLocalMachine != null)
51                 {
52                     oLocalMachine.Close();
53                     oLocalMachine.Dispose();
54                     oLocalMachine = null;
55                 }
56                 if (oNewUser != null)
57                 {
58                     oNewUser.Close();
59                     oNewUser.Dispose();
60                     oNewUser = null;
61                 }
62             }
63             return bRet;
64         }
 1 /// <summary>
 2         /// 删除本地用户
 3         /// </summary>
 4         /// <param name="userName">用户名</param>
 5         /// <returns>成功与否</returns>
 6         public static bool DeleteLocalUserAccount(string userName, out string returnMsg)
 7         {
 8             bool bRet = true;
 9             returnMsg = "";
10             DirectoryEntry oLocalMachine = null;
11             DirectoryEntry oNewUser = null;
12             try
13             {
14                 oLocalMachine = new DirectoryEntry("WinNT://" + Environment.MachineName);
15                 oNewUser = oLocalMachine.Children.Find(userName, "user");
16             }
17             catch
18             {
19 
20             }
21             try
22             {
23                 if (oNewUser != null)
24                 {
25                     oLocalMachine.Children.Remove(oNewUser);
26                     oLocalMachine.Close();
27                 }
28             }
29             catch (Exception ex)
30             {
31                 returnMsg = ex.Message;
32                 bRet = false;
33             }
34             finally
35             {
36                 if (oLocalMachine != null)
37                 {
38                     oLocalMachine.Close();
39                     oLocalMachine.Dispose();
40                     oLocalMachine = null;
41                 }
42                 if (oNewUser != null)
43                 {
44                     oNewUser.Close();
45                     oNewUser.Dispose();
46                     oNewUser = null;
47                 }
48             }
49             return bRet;
50         }
 1 /// <summary>
 2         /// 修改用户密码
 3         /// </summary>
 4         /// <param name="userName">用户名</param>
 5         /// <returns>成功与否</returns>
 6         public static bool ChangePassword(string userName, string userPassword, out string returnMsg)
 7         {
 8             bool bRet = true;
 9             returnMsg = "";
10             DirectoryEntry oLocalMachine = null;
11             DirectoryEntry oNewUser = null;
12             try
13             {
14                 oLocalMachine = new DirectoryEntry("WinNT://" + Environment.MachineName);
15                 oNewUser = oLocalMachine.Children.Find(userName, "user");
16             }
17             catch
18             {
19 
20             }
21             try
22             {
23                 if (oNewUser != null)
24                 {
25                     oNewUser.Invoke("SetPassword"new object[] { userPassword });
26                     oNewUser.CommitChanges();
27                 }
28                 else
29                 {
30                     returnMsg = string.Format("用户[{0}]不存在,无法修改密码!", userName);
31                     bRet = false;
32                 }
33             }
34             catch (Exception ex)
35             {
36                 returnMsg = ex.Message;
37                 bRet = false;
38             }
39             finally
40             {
41                 if (oLocalMachine != null)
42                 {
43                     oLocalMachine.Close();
44                     oLocalMachine.Dispose();
45                     oLocalMachine = null;
46                 }
47                 if (oNewUser != null)
48                 {
49                     oNewUser.Close();
50                     oNewUser.Dispose();
51                     oNewUser = null;
52                 }
53             }
54             return bRet;
55         }
 1 /// <summary>
 2         /// 检查用户是否存在
 3         /// </summary>
 4         /// <param name="user"></param>
 5         /// <param name="returnMsg"></param>
 6         /// <returns></returns>
 7         public static bool IsUserExists(string userName)
 8         {
 9             bool bRet = false;
10             DirectoryEntry oLocalMachine = null;
11             DirectoryEntry oNewUser = null;
12             try
13             {
14                 oLocalMachine = new DirectoryEntry("WinNT://" + Environment.MachineName);
15                 oNewUser = oLocalMachine.Children.Find(userName, "user");
16                 if (oNewUser != null)
17                 {
18                     bRet = true;
19                 }
20             }
21             catch
22             {
23                 bRet = false;
24             }
25             return bRet;
26         }
 1 /// <summary>
 2         /// 获取本地所有用户
 3         /// </summary>
 4         /// <returns></returns>
 5         public static List<string> GetLocalUserAccount(out string returnMsg)
 6         {
 7             List<string> oRet = new List<string>();
 8             DirectoryEntry oLocalMachine = null;
 9             DirectoryEntry oEntry = null;
10             try
11             {
12                 returnMsg = null;
13                 oLocalMachine = new DirectoryEntry("WinNT://" + Environment.MachineName);
14                 IEnumerator oUserEnum = oLocalMachine.Children.GetEnumerator();
15                 while (oUserEnum.MoveNext())
16                 {
17                     oEntry = oUserEnum.Current as DirectoryEntry;
18                     if (oEntry != null)
19                     {
20                         if (oEntry.SchemaClassName.Equals("user", StringComparison.OrdinalIgnoreCase))
21                         {
22                             oRet.Add(oEntry.Name);
23                         }
24                         oEntry.Close();
25                         oEntry.Dispose();
26                     }
27                 }
28             }
29             catch (Exception ex)
30             {
31                 returnMsg = ex.Message;
32             }
33             finally
34             {
35                 if (oLocalMachine != null)
36                 {
37                     oLocalMachine.Close();
38                     oLocalMachine.Dispose();
39                     oLocalMachine = null;
40                 }
41             }
42             return oRet;
43         }
  1 /// <summary>
  2         /// 向用户组添加用户
  3         /// </summary>
  4         /// <param name="userName">用户名</param>
  5         /// <param name="groupName">用户组名</param>
  6         /// <param name="returnMsg">返回的错误消息</param>
  7         /// <returns></returns>
  8         public static bool AddUserToGroup(string userName, string groupName, out string returnMsg)
  9         {
 10             bool bRet = false;
 11             returnMsg = "";
 12             DirectoryEntry oLocalMachine = null;
 13             DirectoryEntry oGroup = null;
 14             DirectoryEntry oNewUser = null;
 15             try
 16             {
 17                 oLocalMachine = new DirectoryEntry("WinNT://" + Environment.MachineName);
 18                 oGroup = oLocalMachine.Children.Find(groupName, "group");
 19                 oNewUser = oLocalMachine.Children.Find(userName, "user");
 20             }
 21             catch
 22             { }
 23             try
 24             {
 25                 if (oGroup != null)
 26                 {
 27                     if (oNewUser != null)
 28                     {
 29                         if (!IsUserInGroups(oNewUser, groupName))
 30                         {
 31                             oGroup.Invoke("Add"new object[] { oNewUser.Path });
 32                             oGroup.CommitChanges();
 33                             bRet = true;
 34                         }
 35                         else
 36                         {
 37                             oGroup.Invoke("Remove"new object[] { oNewUser.Path });
 38                             oGroup.CommitChanges();
 39                             bRet = true;
 40                         }
 41                     }
 42                     else
 43                     {
 44                         returnMsg = string.Format("没有找到用户[{0}]", userName);
 45                     }
 46                 }
 47                 else
 48                 {
 49                     returnMsg = string.Format("没有找到用户组[{0}]", groupName);
 50                 }
 51             }
 52             catch (Exception ex)
 53             {
 54                 returnMsg = string.Format("往用户组[{0}]增加用户[{1}]时发生异常:\r\n{2}", groupName, userName, ex.Message);
 55             }
 56             finally
 57             {
 58                 if (oLocalMachine != null)
 59                 {
 60                     oLocalMachine.Close();
 61                     oLocalMachine.Dispose();
 62                     oLocalMachine = null;
 63                 }
 64                 if (oGroup != null)
 65                 {
 66                     oGroup.Close();
 67                     oGroup.Dispose();
 68                     oGroup = null;
 69                 }
 70                 if (oNewUser != null)
 71                 {
 72                     oNewUser.Close();
 73                     oNewUser.Dispose();
 74                     oNewUser = null;
 75                 }
 76             }
 77             return bRet;
 78         }
 79 
 80         /// <summary>
 81         /// 从用户组删除用户
 82         /// </summary>
 83         /// <param name="userName">用户名</param>
 84         /// <param name="groupName">用户组名</param>
 85         /// <param name="returnMsg">返回的错误消息</param>
 86         /// <returns></returns>
 87         public static bool RemoveUserFromGroup(string userName, string groupName, out string returnMsg)
 88         {
 89             bool bRet = false;
 90             returnMsg = "";
 91             DirectoryEntry oLocalMachine = null;
 92             DirectoryEntry oGroup = null;
 93             DirectoryEntry oNewUser = null;
 94             try
 95             {
 96                 oLocalMachine = new DirectoryEntry("WinNT://" + Environment.MachineName);
 97                 oGroup = oLocalMachine.Children.Find(groupName, "group");
 98                 oNewUser = oLocalMachine.Children.Find(userName, "user");
 99             }
100             catch
101             { }
102             try
103             {
104                 if (oGroup != null)
105                 {
106                     if (oNewUser != null)
107                     {
108                         if (IsUserInGroups(oNewUser, groupName))
109                         {
110                             oGroup.Invoke("Remove"new object[] { oNewUser.Path });
111                             oGroup.CommitChanges();
112                         }
113                         bRet = true;
114                     }
115                     else
116                     {
117                         returnMsg = string.Format("没有找到用户[{0}]", userName);
118                     }
119                 }
120                 else
121                 {
122                     returnMsg = string.Format("没有找到用户组[{0}]", groupName);
123                 }
124             }
125             catch (Exception ex)
126             {
127                 returnMsg = string.Format("从用户组[{0}]删除用户[{1}]时发生异常:\r\n{2}", groupName, userName, ex.Message);
128             }
129             finally
130             {
131                 if (oLocalMachine != null)
132                 {
133                     oLocalMachine.Close();
134                     oLocalMachine.Dispose();
135                     oLocalMachine = null;
136                 }
137                 if (oGroup != null)
138                 {
139                     oGroup.Close();
140                     oGroup.Dispose();
141                     oGroup = null;
142                 }
143                 if (oNewUser != null)
144                 {
145                     oNewUser.Close();
146                     oNewUser.Dispose();
147                     oNewUser = null;
148                 }
149             }
150             return bRet;
151         }
152 
153         /// <summary>
154         /// 判断用户是否已在用户组中
155         /// </summary>
156         /// <param name="userObj"></param>
157         /// <param name="groupName"></param>
158         /// <returns></returns>
159         private static bool IsUserInGroups(DirectoryEntry userObj, string groupName)
160         {
161             bool bRet = false;
162             if (userObj != null)
163             {
164                 object oGroups = userObj.Invoke("groups"null);
165                 DirectoryEntry oGroup = null;
166                 try
167                 {
168                     foreach (object group in (IEnumerable)oGroups)
169                     {
170                         oGroup = new DirectoryEntry(group);
171                         if (oGroup.Name.Equals(groupName, StringComparison.OrdinalIgnoreCase))
172                         {
173                             bRet = true;
174                             break;
175                         }
176                     }
177                 }
178                 catch { }
179             }
180             return bRet;
181         }
posted on 2011-02-28 14:35  nerocool  阅读(1894)  评论(1编辑  收藏  举报