C#管理Windows本地用户组

上一篇 / 下一篇  2009-04-20 23:39:59 / 个人分类:.NET

 

51Testing软件测试网o b _azzf

using System;51Testing软件测试网BB!E ^J,K%M M-T;k
using System.Collections.Generic;
kq;J,f O0r4z+r:C?0using System.Text;
(d+x,A'q$A8K0using System.Runtime.InteropServices;51Testing软件测试网Fd8z$Ix+V9g
using System.Text.RegularExpressions;51Testing软件测试网E:eh7b x @ Tz
using DevSDK.WinNT;51Testing软件测试网c eZk$yODa K7M,?
using DevSDK;

zvCpwk0 51Testing软件测试网6Eg1H%W;O?|tG$^.e

namespace DevSDK.WinNT51Testing软件测试网 rR#@&P+}g1P7F[
{
;l!o3m.uaE?(o4`0    public class LocalGroup
arC EW&zjet0@0    {
g4t&h4H&Yd0        //创建本地用户组51Testing软件测试网7`AS,Q'J%m
        [DllImport("Netapi32.dll")]
M`!P~4MBw0        extern static int NetLocalGroupAdd([MarshalAs(UnmanagedType.LPWStr)] string sName, int Level, ref LOCALGROUP_INFO_1 buf, int parm_err);
2Zw1{|-D[zbkj0        //删除本地组
5}2YP8xQw8x,C0        [DllImport("Netapi32.dll")]
*T M'Pm6G.yeu _8p0        extern static int NetLocalGroupDel([MarshalAs(UnmanagedType.LPWStr)] string sName, [MarshalAs(UnmanagedType.LPWStr)] string GroupName);
]rA@} c9e#UP p6Z0        //获取本地组信息
%z{*a*Z%XMn-BWs o$d0        [DllImport("Netapi32.dll")]
_ nwl:R!LV$_:G0        extern static int NetLocalGroupGetInfo([MarshalAs(UnmanagedType.LPWStr)] string sName, [MarshalAs(UnmanagedType.LPWStr)] string GroupName, int Level, out IntPtr bufptr);51Testing软件测试网ae`3F#}#z'vfT
        //更改本地组信息
Xb#UcxO}'Z0        [DllImport("Netapi32.dll")]
"[ l'K R)DM$i0        extern static int NetLocalGroupSetInfo([MarshalAs(UnmanagedType.LPWStr)] string sName, [MarshalAs(UnmanagedType.LPWStr)] string GroupName, int Level, ref LOCALGROUP_INFO_1 buf, int parm_err);51Testing软件测试网K)`%L |1m
        //枚举全部本地用户组51Testing软件测试网'U*h g0b!S
        [DllImport("Netapi32.dll")]
(~)I8e(W*EM ^\0        extern static int NetLocalGroupEnum([MarshalAs(UnmanagedType.LPWStr)] string sName, int Level, out IntPtr bufPtr, int prefmaxlen, out int entriesread, out int totalentries, out int resume_handle);
X%e3n:Eb#r K0        //添加用户到组
\0L1s8T S|;f N5Y4pV0        [DllImport("Netapi32.dll")]51Testing软件测试网)ix P p+_@+n
        extern static int NetLocalGroupAddMembers([MarshalAs(UnmanagedType.LPWStr)] string sName,[MarshalAs(UnmanagedType.LPWStr)] string GroupName,int Level,ref LOCALGROUP_MEMBERS_INFO_3 buf, int totalentries);
5fLU{q-N}h0        [DllImport("Netapi32.dll")]
N#}Q;Y1Z:pD0        extern static int NetLocalGroupDelMembers([MarshalAs(UnmanagedType.LPWStr)] string sName, [MarshalAs(UnmanagedType.LPWStr)] string GroupName, int Level, ref LOCALGROUP_MEMBERS_INFO_3 bufPtr, int totalentries);51Testing软件测试网/]-] |;WV
        //释放API51Testing软件测试网"N:r&p F d&mP
        [DllImport("Netapi32.dll")]
N(^VOb&Sw0        extern static int NetApiBufferFree(IntPtr Buffer);51Testing软件测试网 i ] gz._ VNW`4l4}
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]51Testing软件测试网c"zD0IO!L1uZ"d2]
        public struct LOCALGROUP_INFO_051Testing软件测试网:N'GAZpU0l
        {
lz0HU(i jlk"K@0            public string LocalGroup_Name_0;
s@Lm4nM0        }

}$NDBx5ZTrG0

j%v;AX7m*i+g0f0        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]51Testing软件测试网~[]&II h
        public struct LOCALGROUP_INFO_1
f6T3McX7oNhc$C'U0        {
ZzHE4U6^m"[h.DA0            public string LocalGroup_Name_1;
w$G c"C)r$d0            public string LocalGroup_Comment_1;
/? s-hUA/H [0        }51Testing软件测试网L_ J+z5u@u
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]51Testing软件测试网t,N{%o\%x1t#y K
        public struct LOCALGROUP_MEMBERS_INFO_3
Y)W`3a g(p0        {51Testing软件测试网!O2`~:w g:{(X!? {b
            public string DomainName;
#O#`Y)c4J`'DIzC(_0        }51Testing软件测试网 cF S"l8U YH V%V
        //从本地用户组中删除指定用户51Testing软件测试网t0Q T*qY8ks3@
        public bool LocalGroupDelMembers(string GroupName, string UserName)51Testing软件测试网BU*]thz:y#S
        {
Rj,n^UP%?@0            LOCALGROUP_MEMBERS_INFO_3 Members = new LOCALGROUP_MEMBERS_INFO_3();51Testing软件测试网!V N#g|1F0tn3[)Ld!b
            Members.DomainName = UserName.ToString();51Testing软件测试网|+XC:i8RB[HX
            if (NetLocalGroupDelMembers(null, GroupName.ToString(), 3, ref Members, 1) != 0)
_ |y2}]W0            {51Testing软件测试网 h%M ~.z0L7E?Y
                throw (new Exception("从本地用户组删除指定用户时出现错误"));51Testing软件测试网3Gp2}f PO @
            }
xk$}&i g0            else
Gc ]wxI|H0            {
#z1E)N.NX.H7j0                return true;
Vag8YF?9G Y{0            }
}^L^^ ?0        }
}AhXE*MFH0        //把用户添加至本地用户组51Testing软件测试网!z |Mb]d w3c
        public bool LocalGroupAddMembers(string GroupName,string UserName)51Testing软件测试网I.J%_g9\v
        {
Qk;BHpP.P,S4tC}8|0            LOCALGROUP_MEMBERS_INFO_3 Members = new LOCALGROUP_MEMBERS_INFO_3();
/e&\{E9}7u-VV0            Members.DomainName = UserName.ToString();51Testing软件测试网 p+\%P9DX$Nx,N0b!y5W|'I
            if(NetLocalGroupAddMembers(null,GroupName.ToString(),3,ref Members,1) !=0)
K.v|2F7a-x2o0            {51Testing软件测试网9Z$[m(V9D%A
                throw (new Exception("把用户添加至本地用户组时出现错误"));51Testing软件测试网i!n8n0a~ab
            }51Testing软件测试网XYO`j7a
            else
-QL6jk_Zo$g0            {
g{KQi4@0                return true;
2t,P*Q F[4y!\0            }51Testing软件测试网E1xaK5[`0@
        }51Testing软件测试网0K8F4v k5aWPZ
        //枚举全部本地用户组信息51Testing软件测试网o.PkJ A0z3F6l
        public string LocalGroupEnum()
+c,E$t`4h)p#Z0        {
?D?kl8\0            string tempStr = "";
#Iwqxm0            int entriesread;
;_/t3ppj1`(d$Jc0            int totalentries;
,L0mAA]l0Vj0            int resume_handle;
I+g+c:ZJuYJX0            IntPtr bufPtr;

%bAb$o {[d`R0

qn1}\p"NCa?0            NetLocalGroupEnum(null, 1, out bufPtr, -1, out entriesread, out totalentries, out resume_handle);51Testing软件测试网 F2T'tp6z8d

A*~?cOEe f0            if (entriesread > 0)51Testing软件测试网B)`t!^(^v$~a
            {51Testing软件测试网D$i(tt)b @.mwJ
                LOCALGROUP_INFO_1[] GroupInfo = new LOCALGROUP_INFO_1[entriesread];51Testing软件测试网 N;Oa~3Yj#b
                IntPtr iter = bufPtr;51Testing软件测试网yvR/pT1f,n
                tempStr = "<?xml version=\"1.0\" encoding=\"gb2312\" ?>\r\n";
)~n0y)u[3dVJ0                tempStr += "<INFO>\r\n";
3YYfs ?{V^!Wu ?g0                for (int i = 0; i < entriesread; i++)
)Q0U]R[;]0                {51Testing软件测试网 c,i d;ym,kC:TH oB
                    GroupInfo[i] = (LOCALGROUP_INFO_1)Marshal.PtrToStructure(iter, typeof(LOCALGROUP_INFO_1));
X%Z(?M s ^,~7N"]E0                    iter = (IntPtr)((int)iter + Marshal.SizeOf(typeof(LOCALGROUP_INFO_1)));51Testing软件测试网-w;o'KEM%k6V
                    tempStr += "<ITEM value=\"" + GroupInfo[i].LocalGroup_Comment_1 + "\">" + GroupInfo[i].LocalGroup_Name_1 + "</ITEM>\r\n";
"M/K&FlT#E?0                }51Testing软件测试网7o8_T;^U!io
                tempStr += "</INFO>";51Testing软件测试网\vY9DS
            }
y)CnQ8p"v@!fs0            return tempStr;51Testing软件测试网&qA ^!KJ W
        }
"pHk.fB9y JQ0        //修改本地用户组信息51Testing软件测试网U&GBB(~Wr2E
        public bool LocalGroupSetInfo(string GroupName, string GroupDescription)51Testing软件测试网0\7]0K3x{L3b
        {51Testing软件测试网\:CO#Dh,l f
            LOCALGROUP_INFO_1 GroupInfo = new LOCALGROUP_INFO_1();
tr~(p9E3X0            GroupInfo.LocalGroup_Name_1 = GroupName.ToString();51Testing软件测试网$d,s[mg6eyl
            GroupInfo.LocalGroup_Comment_1 = GroupDescription.ToString();51Testing软件测试网(X;ps7Q*e y7W0f
            if (NetLocalGroupSetInfo(null, GroupName.ToString(), 1, ref GroupInfo, 0) != 0)51Testing软件测试网 S6f*] GDJ~
            {51Testing软件测试网N-Rl,Q*F GN;B
                throw (new Exception("修改用户组信息时出现错误"));
] r;hc:Rxj%P0            }51Testing软件测试网4l7[ Nbs5M4c V#T
            else
LK2pQ,qr w)j2n0            {
#j/x&W'r'~(r+R9^0                return true;
!Y-L6F-H+M+b0            }51Testing软件测试网Qe![dI~d#PI
        }
@}.qfY0        //读取本地用户组信息51Testing软件测试网 V;t8uF(`2?5_
        public string LocalGroupGetInfo(string GroupName)51Testing软件测试网NS!s$eu
        {
~H!z'|]X4n7H3j1R0            IntPtr bufptr;
9CGVFY u2T0            LOCALGROUP_INFO_1 GroupInfo = new LOCALGROUP_INFO_1();51Testing软件测试网{;TM ri*n5\
            if (NetLocalGroupGetInfo(null, GroupName.ToString(), 1,out bufptr) != 0)51Testing软件测试网N!tP;H(fH4^
            {51Testing软件测试网?g!s(Alu \L)fF
                throw (new Exception("读取用户组信息时出现错误"));51Testing软件测试网+_c6R'I"M
            }
+Yr.`u7L(] IH0            else
xb5I Uy0            {51Testing软件测试网 HC6WiSN'X
                GroupInfo = (LOCALGROUP_INFO_1)Marshal.PtrToStructure(bufptr, typeof(LOCALGROUP_INFO_1));
B5A(FeA-w9sm0                string tempStr = "<?xml version=\"1.0\" encoding=\"gb2312\" ?>\r\n";
A4gNp xV0                tempStr += "<INFO>\r\n";
5_ r-H%b7?)H0                tempStr += "<NAME>" + GroupInfo.LocalGroup_Name_1 + "</NAME>\r\n";51Testing软件测试网:j5]i A4dDf1Q;z
                tempStr += "<DESCRIPTION>" + GroupInfo.LocalGroup_Comment_1 + "</DESCRIPTION>\r\n";
%gU1je ]-^ [ b;r0                tempStr += "</INFO>\r\n";
I9DX|iX)q#t3V1\0                NetApiBufferFree(bufptr);51Testing软件测试网7d,U6j.] Z X1\)K0Gh
                return tempStr;51Testing软件测试网(ZmE wb t"\9Q
            }
aJ+Bo*vxjC7@v0        }

T#CY)li-r{2K E7b R0 51Testing软件测试网#~D_I$X2U;S1]

        //删除本地用户组51Testing软件测试网#jA8C7Z{6C4C
        public bool LocalGroupDel(string GroupName)
9~fqC:z{Q0        {
2Qvf1p(s }0            if (NetLocalGroupDel(null, GroupName) != 0)51Testing软件测试网 ZI6g HavH_o
            {51Testing软件测试网i|$Z5]1xL0x PH
                throw (new Exception("删除用户组时出现错误"));51Testing软件测试网;^_Fl#O/W
            }
M$L8Qh x!V`:_0            else51Testing软件测试网&e`H9o {t7]1}$z-h.\
            {
:C6yoB W.p;}J3X'E0                return true;
1to7p {/Ky0            }51Testing软件测试网LH1NGp;[5E
        }

a_Vp,K2p0 51Testing软件测试网@3xL.[R

        //添加本地用户组51Testing软件测试网n#HPa;z#D4P]&b]
        public bool LocalGroupAdd(string GroupName, string GroupDescription)51Testing软件测试网X7SV'k@!_5o KD;l
        {51Testing软件测试网a$ZR,[']-v
            LOCALGROUP_INFO_1 NewLocalGroup = new LOCALGROUP_INFO_1();

/y(U9M'[$E0

O2ar [z @_0            NewLocalGroup.LocalGroup_Name_1 = GroupName.ToString();

-t5sS}'?M0 51Testing软件测试网0O)uH!HO#Q ~,z_

            NewLocalGroup.LocalGroup_Comment_1 = GroupDescription.ToString();51Testing软件测试网1]Y.pq;B8d

51Testing软件测试网,C%t%NixE

            if (NetLocalGroupAdd(null, 1, ref NewLocalGroup, 0) != 0)
4g*jOP:d/Rqw0            {51Testing软件测试网 ut6gG,gc+d+? T
                throw (new Exception("创建用户组时出现错误"));
4QSPc S$v;~0            }51Testing软件测试网7?X{-P!d ^
            else
8eX"d H1B;Uui0            {51Testing软件测试网8_3Tc#r$qb4bmw
                return true;
6E"VB2A]nA]Vb y0            }51Testing软件测试网SR0Lk4c?&d9tER
        }
'LRHHK#[0e0    }51Testing软件测试网'b,v)m?j9i
}51Testing软件测试网zS*Ca$UD@O&w l


TAG:

 

评分:0

我来说两句

Open Toolbar