C#管理Windows本地用户
上一篇 / 下一篇 2009-04-20 23:43:38 / 个人分类:.NET
using System;
+z%F$e5D;h3e]!P/^8@0using System.Collections.Generic;
zi eW}x'I0using System.Text;51Testing软件测试网.{rR,c&OG
\%S!C:v
using System.Runtime.InteropServices;51Testing软件测试网n
~ w(Wn-m(JW
using System.Text.RegularExpressions;
gvk)T(C,c.ysG0using DevSDK.WinNT;
wx,g7J6X `0using DevSDK;51Testing软件测试网5J C)y,E"J,_
EWWc2^0namespace DevSDK.WinNT
5ptm!c/pC#\0{
4l)N6j D!a:zc,GL(N@0 public class NetUser:Common51Testing软件测试网B5P J vC/zP#gn
{51Testing软件测试网1x'o\X+q l;g*s
//创建用户
-s5yW6O'rCA4o/V0 [DllImport("Netapi32.dll")]
nK6_ Csm0 extern static int NetUserAdd([MarshalAs(UnmanagedType.LPWStr)] string sName, int Level, ref USER_INFO_1 buf, int parm_err);51Testing软件测试网K"H1MX#bD m;w
//修改用户密码
9Wfgh
^!d;x:U0 [DllImport("Netapi32.dll")]
1|7k8} h/^
Z0 extern static int NetUserChangePassword([MarshalAs(UnmanagedType.LPWStr)] string sName,[MarshalAs(UnmanagedType.LPWStr)] string UserName,[MarshalAs(UnmanagedType.LPWStr)] string OldPassword,[MarshalAs(UnmanagedType.LPWStr)] string NewPassword);
S!GMJQvD"X w_!E0 //删除用户
c!k q'B!bjH0 [DllImport("Netapi32.dll")]51Testing软件测试网jx+V,^Na9g
extern static int NetUserDel([MarshalAs(UnmanagedType.LPWStr)] string sName,[MarshalAs(UnmanagedType.LPWStr)] string UserName);
8m9Y)k/c.Mw"dw0 //枚举全部用户
Oqt;v|\%b!r4X0 [DllImport("Netapi32.dll")]51Testing软件测试网 s'Yh-? c4M*MQ4E bj
extern static int NetUserEnum([MarshalAs(UnmanagedType.LPWStr)] string sName,int Level,int filter,out IntPtr bufPtr,int Prefmaxlen,out int Entriesread,out int Totalentries,out int Resume_Handle);
S'k)I!x'za0E}&Ug@0 //获取用户信息
h[J!fRX-kr0 [DllImport("Netapi32.dll")]
R$R3x!R7n;i Nn0 extern static int NetUserGetInfo([MarshalAs(UnmanagedType.LPWStr)] string sName,[MarshalAs(UnmanagedType.LPWStr)] string UserName,int Level,out IntPtr intptr);51Testing软件测试网V[^&yMF
[
l
//获取用户所在本地组51Testing软件测试网rBHA7N^;U
[DllImport("Netapi32.dll")]51Testing软件测试网&H5C8g)e0h@vZs
extern static int NetUserGetLocalGroups([MarshalAs(UnmanagedType.LPWStr)] string sName,[MarshalAs(UnmanagedType.LPWStr)] string UserName,int Level,int Flags,out IntPtr intptr,int Prefmaxlen,out int Entriesread,out int Totalentries);
\$|$O0i4jrU;A0 //修改用户信息
m k/w"T ]}0 [DllImport("Netapi32.dll")]51Testing软件测试网de@ b9E
I
extern static int NetUserSetInfo([MarshalAs(UnmanagedType.LPWStr)] string sName, [MarshalAs(UnmanagedType.LPWStr)] string UserName, int Level, ref USER_INFO_1 bufptr, int parm_err);51Testing软件测试网!q-r6N,T1a|i"z
//释放API
+x7CG0f#ZT0 [DllImport("Netapi32.dll")]
+zhT`I0 extern static int NetApiBufferFree(IntPtr Buffer);
+Mrx*\ pqZ6Sg}Q0 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]51Testing软件测试网(oSr+sw(M:u
public struct LOCALGROUP_USERS_INFO_051Testing软件测试网!J8sSYbYAB
{
4e%t'zKut$|N0 public string GroupName;
P
@DM'@.UR$I*Qp0 }
a L3v/j9PP:I0S:o0 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
,{+XCEr#l2N
u0 public struct USER_INFO_151Testing软件测试网,InKu*Xp-P
{51Testing软件测试网^F-C.gc
h
public string sName; //用户名51Testing软件测试网)i(Yq+kw6r` g
public string sPass; //用户密码51Testing软件测试网$YqS;X c
eu`
public int PasswordAge; //密码级别51Testing软件测试网1z?!K6c+~wV!r z{
public int sPriv; //帐户类型 151Testing软件测试网n0Ls7\"c
public string sHomeDir; //用户主目录 null
'\Hp
b3Dw1y2OM0 public string sComment; //用户描述51Testing软件测试网u3?~_Q4@`'U t
public int sFlags; //用户权限51Testing软件测试网1X
y5j-j~4G
public string sScriptPath; //登陆脚本路径 null
'Dt3X\E:]0 }
2XE&i*x m0 //枚举全部用户
dFo6b5L&v0 public string UserEnum()
;P^2C\ bzB8h M2VF0 {51Testing软件测试网t6Id]c
string tempStr = "<?xml version=\"1.0\" encoding=\"gb2312\" ?>\r\n";
4w+T:E*gn0 tempStr += "<INFO>\r\n";51Testing软件测试网4p8U2B3] vd-q7[
int Entriesread;
k.X3ir^+m&FO)om S0 int TotalEntries;
3[l EH
l)`k0 int Resume_Handle;51Testing软件测试网d.c2b"T'Dy)Q(O\V
IntPtr bufPtr;
%x CCWlFd6B0 if (NetUserEnum(null, 1, 0, out bufPtr, -1, out Entriesread, out TotalEntries, out Resume_Handle) != 0)
Xa%V#vc5q|3k(H0 {51Testing软件测试网$RI0Xw4~`
throw (new Exception("枚举全部用户失败"));51Testing软件测试网B@o] kg2R*X&X#m
}51Testing软件测试网a^#_q#B3B\'^6q H
if (Entriesread > 0)51Testing软件测试网 n})[$ai"@UM6ePkzn
{
;| G ]G5|#Q0 USER_INFO_1[] UserInfo = new USER_INFO_1[Entriesread];51Testing软件测试网k3p2B4K1y&MS\
IntPtr iter = bufPtr;
[$O#\1Ck
f;mW0 for (int i = 0; i < Entriesread; i++)51Testing软件测试网
P*~I"f2l{
{
'Vb_4I
?%B A0 UserInfo[i] = (USER_INFO_1)Marshal.PtrToStructure(iter, typeof(USER_INFO_1));
Z0[d*}UG)Bt0 iter = (IntPtr)((int)iter + Marshal.SizeOf(typeof(USER_INFO_1)));51Testing软件测试网4c&h YF1pTIU+s
tempStr += "<ITEM value=\"" + UserInfo[i].sComment + "\">" + UserInfo[i].sName + "</ITEM>\r\n";51Testing软件测试网%tL0V
J9`u\l9B
}51Testing软件测试网3|.yoq:T
tempStr += "</INFO>";
N'J!I:U$dY(Y0 }51Testing软件测试网k A%D7J.}
NetApiBufferFree(bufPtr);51Testing软件测试网` fl's{*v)X[
return tempStr;51Testing软件测试网/X2a4c
[:L#q
e
}
7@&g} q!W5D.X0 //读取用户信息
#E(IR2vmA3Es6\;Xp^0 public string UserGetInfo(string UserName)51Testing软件测试网-o
H8L1o-Ta%Td4b$]}
{51Testing软件测试网!QXMx:w9I2S)e1uW
string tmpStr = "<?xml version=\"1.0\" encoding=\"gb2312\" ?>\r\n";51Testing软件测试网([ O
BC%y?+CH
tmpStr += "<INFO>\r\n";
1uK-T7[:wC0 IntPtr bufPtr;
w(as~ C0 USER_INFO_1 UserInfo = new USER_INFO_1();51Testing软件测试网1bnfpxI
if (NetUserGetInfo(null, UserName.ToString(), 1, out bufPtr) != 0)
7j4Y6M7Y,DT(|$~0 {51Testing软件测试网#vvVL4s2af
throw (new Exception("读取用户信息失败"));
PS r\P%t5K;F
H I#D0 }
|Ln#Iv2j B0 else
| [x5bjs8ve0 {
6F}^:zIh0 UserInfo = (USER_INFO_1)Marshal.PtrToStructure(bufPtr, typeof(USER_INFO_1));
;x
lYQn8UG0Y|0 tmpStr += "<NAME>" + UserInfo.sName + "</NAME>\r\n";51Testing软件测试网 }Y-H(fa@@ g
tmpStr += "<PASS>" + UserInfo.sPass + "</PASS>\r\n";
h-t2Ng c l4r!WK0 tmpStr += "<DESC>" + UserInfo.sComment + "</DESC>\r\n";
"by-Qn
TFzvD(Qa0 tmpStr += "</INFO>";
5Qw:S2]$GOyD"S0 NetApiBufferFree(bufPtr);
`H6Lp'Oj?0 return tmpStr;
whs.BA0 }
4J`@Yp0 }
2}a)YB^*g_ \0 //删除用户51Testing软件测试网Z|AM%NPm7o
e;qZ
public bool UserDelete(string UserName)51Testing软件测试网dW"hQ~;Y
{
CU4j3~4e X:?;?[$]%fes0 if (NetUserDel(null, UserName.ToString()) != 0)
;[
I6t|l+a5K+X0`dga0 {51Testing软件测试网O!I0vs6{?r%E
throw (new Exception("删除用户失败"));
|2f)J*xUuSOf`c0 }
/k4H4k/J6v8a0 else51Testing软件测试网L*Jq*dpNC
{
g b!w~d J5p0 return true;
jW)a/[)m;h,Zb*l0 }
G']!lBo;m6z0 }51Testing软件测试网D;Js N!KU4b:DE7b*t P
//修改用户信息
;sH|Hx`5@KG9~0 public bool UserSetInfo(string UserName,string NewUserName, string UserPass, string sDescription)51Testing软件测试网9XR@
E]7J#L1Q){
{51Testing软件测试网 vC~\5U
s)@l,V
USER_INFO_1 UserInfo = new USER_INFO_1();51Testing软件测试网V`gX1IXOg
UserInfo.sName = NewUserName.ToString();51Testing软件测试网6f"nK'R3}R
UserInfo.sPass = UserPass.ToString();51Testing软件测试网
Z!wP7F$Gv+y
UserInfo.PasswordAge = 0;
7DF5D['w#i;oj0 UserInfo.sPriv = 1;
keO*f5bS'x_9v0 UserInfo.sHomeDir = null;
6fh|,S]wFTJ-l0 UserInfo.sComment = sDescription.ToString();
;GHQd6pE0 UserInfo.sFlags = 0x10040;
t*o)\!I(t8N8j.K{m
K0 UserInfo.sScriptPath = null;
D0X_Q P l0 if (NetUserSetInfo(null, UserName.ToString(), 1, ref UserInfo, 0) != 0)51Testing软件测试网9x-Q&WkHy$L
{
3B;d!\Z D(d
@U0 throw (new Exception("用户信息修改失败"));
,i
[$_CC }B:V0 }51Testing软件测试网f_\6@1i'|q M
else51Testing软件测试网1A.C*E4ul@R_'X0L c
{
`V
Tj8z2Upv0 return true;51Testing软件测试网Q5G`/Q+L LmyW
}51Testing软件测试网 z'f9q!Fe7jy?
}51Testing软件测试网*{i,@;~O/A {3k9I
?1v0eVc]8|+E0 //创建系统用户
1f2ul5ABx T4a8S0 public bool UserAdd(string UserName, string UserPass,string sDescription)51Testing软件测试网W#F;Q6d?#^8S1R
{51Testing软件测试网nHh4S xOx` HR
USER_INFO_1 UserInfo = new USER_INFO_1();51Testing软件测试网%Pzx Ug9W}
G(C4c
UserInfo.sName = UserName.ToString();51Testing软件测试网@7hqu^\6G2|d7h5H
UserInfo.sPass = UserPass.ToString();51Testing软件测试网0x+?ES8V{
UserInfo.PasswordAge = 0;
t{
Rv1RV0 UserInfo.sPriv = 1;
3B4E
B^4r0 UserInfo.sHomeDir = null;51Testing软件测试网K7E%\%JK
UserInfo.sComment = sDescription.ToString();51Testing软件测试网q @yZ;H{bP;l
//UserInfo.sFlags = 0x0040;
O"c_|5p;\7|,I0 UserInfo.sFlags = 0x10040;
-t0p&](J0Fm|0 UserInfo.sScriptPath = null;51Testing软件测试网NEY[-AO
if (NetUserAdd(null, 1, ref UserInfo, 0) != 0)
c*a%r5RN0 {51Testing软件测试网1Q$]$QZ-Uh+{F@
throw (new Exception("创建系统用户失败"));51Testing软件测试网
E&D5_~:nN+rH
}
yC
e%mKl:l$n0 else
E3SK|zx~6zN0 {51Testing软件测试网;z$kqh G
return true;
fqq_D$k#zsJ0 }51Testing软件测试网0O,ipG$y;m
n:|P4s!v:?
}51Testing软件测试网&~#fmQ ^
8eH E`c}DKkdQ0 //修改用户密码51Testing软件测试网
Fn/^ N-}
public bool UserChangePassword(string UserName, string OldPassword, string NewPassword)51Testing软件测试网*xv ?-V#~:vV*@e2ZdR
{
lm[pt,I5bj-v0 if (NetUserChangePassword(null, UserName.ToString(), OldPassword.ToString(), NewPassword.ToString()) != 0)51Testing软件测试网2xF"K PfC
{51Testing软件测试网:f&R?R(Eq
throw (new Exception("修改系统用户密码失败"));51Testing软件测试网(YRE T y/cX3W"u
}51Testing软件测试网"EY&tQ-J:}
` H?
else
6x5mx"[DIT0 {51Testing软件测试网-Jy`
P#Tu
return true;51Testing软件测试网u/m&X'[2c/S,vV}8h
}51Testing软件测试网 {{S1H
v|tZl
}51Testing软件测试网pkmT zeq'|
//获取用户全部所在本地组51Testing软件测试网(zY+H7}:`
public string UserGetLocalGroups(string UserName)51Testing软件测试网M`_,{ec7Mnh
{51Testing软件测试网g*Ib0v }B
int EntriesRead;51Testing软件测试网/O[ j:]v!M}
int TotalEntries;51Testing软件测试网"r3te
a x2G
IntPtr bufPtr;51Testing软件测试网fY;g8{%E Ce
string tempStr = "<?xml version=\"1.0\" encoding=\"gb2312\" ?>\r\n";
rkp9GTb6_~c8h0 tempStr += "<INFO>\r\n";
+z7xGL2h)QK7S:O0 if (NetUserGetLocalGroups(null, UserName.ToString(), 0, 0, out bufPtr, 1024, out EntriesRead, out TotalEntries) != 0)51Testing软件测试网/rw1T!~@#lNM$Jz
{51Testing软件测试网5Z
U
pNK
throw (new Exception("读取用户所在本地组失败"));
c)a/U'}
{.X wF0 }51Testing软件测试网*Dz7kWb2gSP
if (EntriesRead > 0)51Testing软件测试网H3~2^_X5LVM
{51Testing软件测试网!_,g*D/edV
LOCALGROUP_USERS_INFO_0[] GroupInfo = new LOCALGROUP_USERS_INFO_0[EntriesRead];
N,`C|vDC%c0 IntPtr iter = bufPtr;
^.cH/K._ p6Yn0 for (int i = 0; i < EntriesRead; i++)
PzOp~G&q:~e0 {51Testing软件测试网4b(X [{!BD#_M0rn,o
GroupInfo[i] = (LOCALGROUP_USERS_INFO_0)Marshal.PtrToStructure(iter, typeof(LOCALGROUP_USERS_INFO_0));
D/| {}m
F2zVci4S0 iter = (IntPtr)((int)iter + Marshal.SizeOf(typeof(LOCALGROUP_USERS_INFO_0)));
~ y _&bdi*h5|z0a0 tempStr += "<GROUP>" + GroupInfo[i].GroupName + "</GROUP>\r\n";51Testing软件测试网Pe4R7fxBW
}
+d6l-D2H*r#K%q[0 tempStr += "</INFO>";
m-P6RwXU0 NetApiBufferFree(bufPtr);51Testing软件测试网
Li i1~&bD
T6_!D
}51Testing软件测试网S)C^p{,c:c^
return tempStr;51Testing软件测试网{D`7E0H.dbVP
}
u7g9j9A]j0 }51Testing软件测试网9~)o*r$eb,@ ?\
}51Testing软件测试网2L)}Wn
K`["^K!@
51Testing软件测试网4hK+s'V J;WIn'^!l
TAG:
标题搜索
日历
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
1 | 2 | 3 | 4 | 5 | 6 | ||||
7 | 8 | 9 | 10 | 11 | 12 | 13 | |||
14 | 15 | 16 | 17 | 18 | 19 | 20 | |||
21 | 22 | 23 | 24 | 25 | 26 | 27 | |||
28 | 29 | 30 |
我的存档
数据统计
- 访问量: 32522
- 日志数: 39
- 图片数: 2
- 建立时间: 2008-04-03
- 更新时间: 2012-02-03