青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

zhiye_wang

向星空仰望的越深,越發(fā)現(xiàn)自己的渺小

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  31 隨筆 :: 1 文章 :: 2 評(píng)論 :: 0 Trackbacks
 1/* 
 2 * =====================================================================================
 3 *       Filename:  userGroup.h 
 4 * =====================================================================================
 5 */

 6 
 7#ifndef USER_GROUP_H
 8#define USER_GROUP_H
 9#pragma once
10#include <windows.h>
11#include <stdio.h>
12#include <tchar.h>
13#include <string>
14using namespace std;
15#include <Aclapi.h>
16#pragma comment(lib,"Advapi32.lib")
17#include <LM.h>
18#pragma comment(lib,"Netapi32.lib")
19#include <Winnetwk.h>
20#pragma comment(lib,"Mpr.lib")
21#include <Wtsapi32.h>
22#pragma comment(lib,"Wtsapi32.lib")
23typedef enum
24{
25    e_CREATE_SUCCESS,
26    e_CREATE_FAILED,
27    e_CREATE_STOP,
28    e_CREATE_USER_EXIST,
29    e_CREATE_PasswordTooShort,
30    e_CREATE_ACCESS_DENIED,
31    e_CREATE_BAD_NETPATH,
32    e_CREATE_INVALID_LEVEL,
33    e_CREATE_InvalidComputer,
34    e_CREATE_NotPrimary,
35    e_CREATE_GroupExists,
36}
CREATE_RETURN_RES;
37CREATE_RETURN_RES createNewUser(LPTSTR lpServerName,LPTSTR lpUserName, LPTSTR lpUserPwd);
38#
  1/* 
  2 * =====================================================================================
  3 *       Filename:  userGroup.cpp 
  4 * =====================================================================================
  5 */

  6 
  7#include "stdafx.h"
  8#include "userGroup.h"
  9#include <intsafe.h>
 10BOOL TakeOwnshipOfDiretory(wchar_t *pwDir,wchar_t *pwUserName,wchar_t *pwServerName)
 11{
 12    USER_INFO_4 *pUserInfo4 = NULL;
 13    DWORD nStatus;
 14    BOOL bRet = FALSE;
 15    PSID pSIDAdmin = NULL;
 16    SID_IDENTIFIER_AUTHORITY SIDAuthNT = SECURITY_NT_AUTHORITY;
 17    EXPLICIT_ACCESS ea[2= {0};
 18    PACL pACL = NULL;
 19    PSECURITY_DESCRIPTOR pSD = NULL;
 20    do 
 21    {
 22        nStatus = NetUserGetInfo(pwServerName, pwUserName, 4, (LPBYTE *)&pUserInfo4);
 23        if(NERR_Success != nStatus)
 24        {
 25            printf("NetUserGetInfo failed\n");
 26            break;
 27        }

 28        nStatus = GetNamedSecurityInfoW(pwDir, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION, NULL, NULL, NULL, NULL, &pSD);
 29        if(NERR_Success != nStatus)
 30        {
 31            printf("GetNamedSecurityInfo Failed\n"); 
 32            break;
 33        }

 34        if(FALSE == SetSecurityDescriptorControl(pSD, SE_DACL_PROTECTED, SE_DACL_PROTECTED))
 35        {
 36            printf("SetSecurityDescriptorControl failed\n");
 37            break;
 38        }

 39        if(FALSE == SetFileSecurityW(pwDir, DACL_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION, pSD))
 40        {
 41            printf("SetFileSecurity failed\n");
 42            break;
 43        }

 44        if(FALSE == AllocateAndInitializeSid(&SIDAuthNT, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 000000&pSIDAdmin))
 45        {
 46            printf("AllocataAndInitializeSid failed\n");
 47            break;
 48        }

 49        ea[0].grfAccessPermissions = SPECIFIC_RIGHTS_ALL|STANDARD_RIGHTS_ALL;
 50        ea[0].grfAccessMode = GRANT_ACCESS;
 51        ea[0].grfInheritance = SUB_CONTAINERS_AND_OBJECTS_INHERIT;
 52        ea[0].Trustee.TrusteeForm = TRUSTEE_IS_SID;
 53        ea[0].Trustee.TrusteeType = TRUSTEE_IS_USER;
 54        ea[0].Trustee.ptstrName = (LPTSTR)pUserInfo4->usri4_user_sid;
 55        // Set full control for Administrators.
 56        ea[1].grfAccessPermissions = SPECIFIC_RIGHTS_ALL|STANDARD_RIGHTS_ALL;
 57        ea[1].grfAccessMode = GRANT_ACCESS;
 58        ea[1].grfInheritance = SUB_CONTAINERS_AND_OBJECTS_INHERIT;
 59        ea[1].Trustee.TrusteeForm = TRUSTEE_IS_SID;
 60        ea[1].Trustee.TrusteeType = TRUSTEE_IS_GROUP;
 61        ea[1].Trustee.ptstrName = (LPTSTR)pSIDAdmin;
 62        if(NERR_Success != SetEntriesInAcl(2, ea, NULL, &pACL))
 63        {
 64            printf("set entriesInAcl failed\n");
 65            break;
 66        }

 67        if(NERR_Success != SetNamedSecurityInfoW(pwDir,SE_FILE_OBJECT,DACL_SECURITY_INFORMATION|GROUP_SECURITY_INFORMATION, NULL, pSIDAdmin,pACL,NULL))
 68        {
 69            printf("SetNamedSecurityInfo FAILED\n");
 70            break;
 71        }

 72        bRet =TRUE;
 73    }
 while (0);
 74    if(NULL != pUserInfo4)
 75    {
 76        NetApiBufferFree(pUserInfo4);
 77    }

 78    if(NULL != pSD)
 79    {
 80        LocalFree(pSD);
 81    }

 82    if(NULL == pSIDAdmin)
 83    {
 84        FreeSid(pSIDAdmin);
 85    }

 86    if(NULL != pACL)
 87    {
 88        LocalFree(pACL);
 89    }

 90    return bRet;
 91}

 92 
 93// lpServerName 是帶雙斜杠的域名
 94BOOL SetUserToUserGroup(LPTSTR lpServerName,LPTSTR lpUserName)
 95{
 96    NET_API_STATUS netStatus;
 97    BOOL bOK = FALSE;
 98    do 
 99    {
100        LOCALGROUP_MEMBERS_INFO_3 LGMInfo;
101        LGMInfo.lgrmi3_domainandname = lpUserName;
102        netStatus = NetLocalGroupAddMembers(lpServerName, _T("Users"), 3,(LPBYTE)&LGMInfo, 1);
103        if (NERR_Success != netStatus && ERROR_MEMBER_IN_ALIAS != netStatus)
104        {
105            TCHAR chErr[32= {0};
106            wsprintf(chErr,_T("%susers%s,%d"),_T("加入"), _T("失敗"),GetLastError());
107            MessageBox(NULL,chErr,_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
108            break;
109        }

110        netStatus = NetLocalGroupAddMembers(lpServerName,_T("Remote Desktop Users"), 3, (LPBYTE)&LGMInfo, 1);
111        if (NERR_Success != netStatus && ERROR_MEMBER_IN_ALIAS != netStatus)
112        {
113            TCHAR chErr[32= {0};
114            wsprintf(chErr,_T("%susers%s,%d"),_T("加入"), _T("失敗"),GetLastError());
115            MessageBox(NULL,chErr,_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
116            break;
117        }

118        
119        netStatus = NetLocalGroupAddMembers(NULL,L"Remote Desktop Users",3,(LPBYTE)&LGMInfo,1);
120        if (NERR_Success != netStatus && ERROR_MEMBER_IN_ALIAS != netStatus)
121        {
122            TCHAR chErr[32= {0};
123            wsprintf(chErr,_T("%susers%s,%d"),_T("加入"), _T("失敗"),GetLastError());
124            MessageBox(NULL,chErr,_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
125            break;
126        }

127        bOK = TRUE;
128    }
 while (0);
129    return bOK;
130}

131BOOL IsDomainUser()
132{
133    TCHAR *pDomainName = NULL;
134    DWORD dwDomainNameSize = 0;
135    TCHAR compName[128= {0};
136    DWORD dwCompNameLen = 128;
137    do 
138    {
139        //Minimum supported client: Windows Vista 
140        //Minimum supported server: Windows Server 2003 
141        BOOL bRes = WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE,WTS_CURRENT_SESSION,WTSDomainName,&pDomainName,&dwDomainNameSize);
142        if (bRes == FALSE)
143        {
144            return FALSE;
145        }

146        GetComputerName(compName, &dwCompNameLen);
147        int ret = lstrcmpi(pDomainName,compName);
148        WTSFreeMemory(pDomainName);
149        if (0 != ret)
150        {
151            return TRUE; // 域名 != 計(jì)算機(jī)名, 在域中
152        }

153        
154    }
 while (0);
155        
156    return FALSE; // 域名 == 計(jì)算機(jī)名, 不在域中
157}

158 
159 /* 
160 * =====================================================================================
161 *           Filename:  userGroup.cpp 
162 *        Description:  add user 
163 *            Created:  2014年11月22日15:27:18
164 *             Author:  wzy
165 *
166 *       lpServerName:  傳入?yún)?shù), 域名, 不帶雙反斜杠
167 *         lpUserName:  傳入?yún)?shù), 用戶, 以杠零結(jié)束的字符串
168 *          lpUserPwd:  傳入?yún)?shù), 密碼, 以杠零結(jié)束的字符串
169 *                other:  
170 * =====================================================================================
171 */
 
172CREATE_RETURN_RES createNewUser(LPTSTR lpServerName, LPTSTR lpUserName, LPTSTR lpUserPwd)
173{
174    USER_INFO_4 ui      = {0};
175    DWORD dwLevel       = 4;
176    DWORD dwError       = 0;
177    LPBYTE lpBuf        = NULL;
178    LPTSTR pwServerName = NULL;
179    NET_API_STATUS      nStatus;
180    
181    CREATE_RETURN_RES cRes = e_CREATE_FAILED;
182    
183    do 
184    {
185        
186        if (NULL == lpUserName)
187        {
188            break ;
189        }

190        DWORD dwLen = _tcslen(lpServerName);
191        
192        
193        TCHAR buffer[256= {0};
194        DWORD dwSize = sizeof(buffer);
195        GetComputerNameEx(ComputerNameDnsDomain, buffer, &dwSize);// buffer本機(jī)所屬域名
196        
197        CString str;
198        str.SetString(buffer);
199        
200        TCHAR chServerName[512= _T("\\\\");
201        pwServerName = lstrcat(chServerName, str.GetBuffer());
202        
203        /*
204        TCHAR chServerName[512] = _T("\\\\");
205        pwServerName = lstrcat(chServerName, (LPCWSTR)lpServerName);
206        */

207        if (0 == _tcscmp(lpServerName, _T("")) || (NULL == lpServerName))
208        {
209            pwServerName = NULL;
210        }

211        
212        //if (0 == IsDomainUser()) // 本地計(jì)算機(jī)名 == 本機(jī)所屬域名
213        //{
214        //    pwServerName = NULL;
215        //}
216        ui.usri4_name = lpUserName;
217        ui.usri4_password = lpUserPwd;
218        ui.usri4_priv = USER_PRIV_USER;
219        ui.usri4_home_dir = NULL;
220        ui.usri4_comment = NULL;
221        ui.usri4_full_name = lpUserName;
222        ui.usri4_flags = UF_SCRIPT;
223        ui.usri4_profile = NULL;
224        
225        nStatus = NetUserGetInfo(pwServerName, ui.usri4_name, 4, (LPBYTE *)&lpBuf);
226        DWORD asdf = nStatus;
227        
228        if (ERROR_ACCESS_DENIED == nStatus)
229        {
230            MessageBox(NULL,_T("訪問拒絕"),_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
231            cRes = e_CREATE_ACCESS_DENIED;
232            break ;
233        }

234        else if (ERROR_BAD_NETPATH == nStatus)
235        {
236            MessageBox(NULL,_T("網(wǎng)絡(luò)路徑不可用"),_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
237            cRes = e_CREATE_BAD_NETPATH;
238            break ;
239        }

240        else if (ERROR_INVALID_LEVEL == nStatus)
241        {
242            MessageBox(NULL,_T("無效的級(jí)別"),_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
243            cRes = e_CREATE_INVALID_LEVEL;           
244            break ;
245        }

246        else if (NERR_InvalidComputer == nStatus)
247        {
248            MessageBox(NULL,_T("無效的電腦"),_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
249            cRes = e_CREATE_InvalidComputer;
250            break ;
251        }

252        else if (NERR_Success == nStatus) // 已存在
253        {
254            
255            MessageBox(NULL,_T("用戶名已存在,請(qǐng)重新輸入用戶名"),_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
256            cRes = e_CREATE_USER_EXIST;
257            break ;
258        }

259        else if (NERR_UserNotFound == nStatus) // 不存在,創(chuàng)建 
260        {
261           // ui.usri4_primary_group_id = DOMAIN_GROUP_RID_USERS;
262            ui.usri4_flags = UF_DONT_EXPIRE_PASSWD;
263            ui.usri4_acct_expires = TIMEQ_FOREVER;
264            ui.usri4_priv = USER_PRIV_USER;
265            ui.usri4_logon_hours = NULL;    
266            ui.usri4_script_path = NULL;
267            
268            nStatus = NetUserAdd(pwServerName, dwLevel, (LPBYTE)&ui, &dwError);
269            TakeOwnshipOfDiretory(ui.usri4_home_dir, ui.usri4_name, pwServerName);
270            
271            if (NERR_Success != nStatus) // 創(chuàng)建失敗
272            {
273                
274                if(NERR_PasswordTooShort == nStatus)
275                {
276                    MessageBox(NULL,_T("PasswordTooShort"),_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
277                    cRes = e_CREATE_PasswordTooShort;
278                    break ;
279                }

280                else if (NERR_UserExists == nStatus)
281                {
282                    MessageBox(NULL,_T("UserExists"),_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
283                    cRes = e_CREATE_USER_EXIST;
284                    break ;
285                }

286                
287                else if(NERR_GroupExists == nStatus)
288                {
289                    MessageBox(NULL,_T("GroupExists"),_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
290                    cRes = e_CREATE_GroupExists;
291                }

292                else if (NERR_NotPrimary == nStatus)
293                {
294                    MessageBox(NULL,_T("NotPrimary"),_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
295                    cRes = e_CREATE_NotPrimary;
296                    break ;
297                }

298                else if (NERR_InvalidComputer == nStatus)
299                {
300                    MessageBox(NULL,_T("InvalidComputer"),_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
301                    cRes = e_CREATE_InvalidComputer;
302                    break ;
303                }

304                else if (ERROR_ACCESS_DENIED == nStatus)
305                {
306                    MessageBox(NULL,_T("ACCESS_DENIED"),_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
307                    cRes = e_CREATE_ACCESS_DENIED;
308                    break ;
309                }

310                else
311                {
312                    MessageBox(NULL,_T("創(chuàng)建用戶失敗"),_T("錯(cuò)誤"),MB_OK|MB_ICONERROR);
313                    cRes = e_CREATE_FAILED;
314                    break ;
315                }

316            }
 // endif
317            else if (NERR_Success == nStatus)// 創(chuàng)建成功,移入U(xiǎn)ser和Remote Desktop Users組
318            {
319                 cRes = e_CREATE_SUCCESS;
320                 
321                 if (!SetUserToUserGroup(pwServerName, ui.usri4_name))
322                 {
323                     ui.usri4_flags |= UF_DONT_EXPIRE_PASSWD;
324                     break;
325                 }

326            }

327            
328        }

329        else
330        {
331            break ;
332        }

333        
334    }
 while (0);
335    
336    if (NULL != ui.usri4_name)
337    {
338        ui.usri4_name = NULL;
339    }

340    if (NULL != ui.usri4_password)
341    {
342        ui.usri4_password = NULL;
343    }
 
344    if (NULL != ui.usri4_home_dir)
345    {
346        ui.usri4_home_dir = NULL;
347    }

348    if(NULL != ui.usri4_comment)
349    {
350        ui.usri4_comment = NULL;
351    }

352    if (NULL != ui.usri4_full_name)
353    {
354        ui.usri4_full_name = NULL;
355    }

356    if (NULL != ui.usri4_profile)
357    {
358        ui.usri4_profile = NULL;
359    }

360    if (NULL != ui.usri4_script_path)
361    {
362        ui.usri4_script_path = NULL;
363    }

364    
365    return cRes;
366}
endif
 //USER_GROUP_H

UserGroup.cpp

asdfa



posted on 2014-12-23 17:47 zhiye_wang 閱讀(493) 評(píng)論(0)  編輯 收藏 引用 所屬分類: windows
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲黄色在线看| 久久九九热re6这里有精品| 亚洲卡通欧美制服中文| 欧美制服丝袜第一页| 日韩午夜av| 欧美精品成人在线| 亚洲第一网站| 久久综合中文| 久久精品2019中文字幕| 国产视频久久| 欧美资源在线观看| 亚洲欧美视频一区| 国产伦精品一区二区三区免费| 亚洲一区二区免费在线| 在线午夜精品| 国产麻豆精品久久一二三| 午夜精品影院| 亚洲欧美一区二区视频| 国产视频综合在线| 久久久久久夜| 美腿丝袜亚洲色图| 99视频国产精品免费观看| 日韩一级视频免费观看在线| 欧美日韩亚洲不卡| 性欧美xxxx视频在线观看| 午夜在线观看免费一区| 尤物九九久久国产精品的分类| 男人的天堂亚洲在线| 免费成人毛片| 亚洲婷婷综合色高清在线 | 亚洲欧美色一区| 国产免费成人| 蜜臀av国产精品久久久久| 久久超碰97人人做人人爱| 一色屋精品亚洲香蕉网站| 欧美国产一区二区在线观看| 欧美裸体一区二区三区| 午夜精品国产更新| 久久手机精品视频| 一区二区日韩欧美| 欧美一区二区观看视频| 亚洲区免费影片| 亚洲午夜在线观看视频在线| 激情婷婷久久| 99国产精品视频免费观看| 国产日产欧美a一级在线| 美女脱光内衣内裤视频久久影院| 欧美紧缚bdsm在线视频| 欧美在线观看网站| 免费欧美在线| 久久成人羞羞网站| 欧美日韩国产不卡在线看| 久久久成人精品| 欧美日韩午夜| 欧美大片网址| 国产亚洲精品v| 亚洲乱码一区二区| 影音先锋中文字幕一区| 亚洲愉拍自拍另类高清精品| 亚洲激情第一页| 亚洲自拍偷拍视频| 久久综合九色九九| 国产免费观看久久| 最新日韩欧美| 在线电影一区| 午夜视频精品| 亚洲一区二区影院| 欧美国产欧美亚洲国产日韩mv天天看完整| 先锋影音久久| 欧美日韩精品是欧美日韩精品| 久久久亚洲影院你懂的| 国产精品av一区二区| 亚洲国产成人午夜在线一区| 国产在线一区二区三区四区| 午夜精品一区二区三区电影天堂| 91久久久久久| 欧美日韩中文字幕精品| 欧美在线观看www| 免费欧美日韩国产三级电影| 欧美在线视频一区二区| 欧美日韩亚洲网| 欧美激情一区二区三区在线视频 | 伊人狠狠色丁香综合尤物| 9色porny自拍视频一区二区| 亚洲电影一级黄| 久久成人免费日本黄色| 久久激情综合| 国产午夜精品理论片a级大结局| 一区二区三区黄色| 男女精品视频| 欧美高清在线播放| 伊人成人在线| 久久一区视频| 欧美风情在线观看| 亚洲人成在线观看网站高清| 免费一级欧美在线大片| 亚洲国产精品一区二区第四页av | 亚洲女女女同性video| 在线亚洲电影| 欧美深夜福利| 亚洲一级一区| 久久久久国色av免费看影院| 国产午夜精品一区二区三区欧美| 午夜精品久久久久影视| 久久久av水蜜桃| 韩国女主播一区| 久久精品在线观看| 欧美国产丝袜视频| 亚洲精品在线电影| 欧美日韩精品是欧美日韩精品| 日韩一区二区精品| 午夜一级在线看亚洲| 国产一区二区三区观看| 久久亚洲综合色| 亚洲欧洲日韩在线| 午夜在线成人av| 悠悠资源网久久精品| 欧美激情精品久久久久久黑人| 亚洲免费成人av| 久久久精品国产99久久精品芒果| 亚洲第一精品在线| 久久九九热re6这里有精品| 国产精品久线观看视频| 99国产精品国产精品久久| 亚洲欧美激情诱惑| 韩日精品中文字幕| 欧美激情一区在线| 午夜精品福利一区二区蜜股av| 久热精品在线| 一区二区三区四区蜜桃| 国产香蕉97碰碰久久人人| 欧美国产丝袜视频| 亚洲欧美国产三级| 亚洲国产第一页| 久久精品人人做人人爽| 亚洲人成免费| 韩国美女久久| 国产精品女同互慰在线看| 久久在线播放| 午夜精品福利视频| 亚洲最黄网站| 亚洲国产高清在线| 久久久久久久久蜜桃| 亚洲一区二区毛片| 亚洲精品中文字幕在线| 激情视频一区二区| 国产欧美精品一区aⅴ影院| 欧美日本高清视频| 久久亚洲捆绑美女| 久久精彩视频| 香蕉免费一区二区三区在线观看| 亚洲精品永久免费| 欧美高清视频www夜色资源网| 欧美一二三视频| 亚洲午夜免费视频| 99精品热视频| 最近看过的日韩成人| 国产视频在线观看一区| 国产精品视频成人| 国产精品成人播放| 欧美日韩亚洲成人| 欧美日韩精品二区| 欧美激情综合亚洲一二区| 久久亚洲私人国产精品va| 久久精品中文字幕一区| 欧美一区亚洲二区| 午夜久久福利| 午夜视频一区二区| 亚洲女人天堂成人av在线| 亚洲一级黄色av| 亚洲字幕一区二区| 羞羞漫画18久久大片| 欧美亚洲在线视频| 久久国产精品99久久久久久老狼| 欧美一区二区三区男人的天堂 | 在线亚洲免费| 99精品欧美| 一区二区三区国产精华| 99re这里只有精品6| 亚洲精品久久嫩草网站秘色| 亚洲黄色视屏| 亚洲日本理论电影| 日韩视频―中文字幕| 日韩午夜中文字幕| 中文一区二区| 午夜精品成人在线| 久久精品国产在热久久 | 国产欧美日韩在线播放| 国产日韩精品一区二区三区| 国产欧美精品日韩精品| 国产一区二区三区奇米久涩| 韩日精品中文字幕| 亚洲国内精品在线| 日韩亚洲一区二区| 亚洲一区国产| 久久精品天堂| 久久精品国产亚洲aⅴ| 在线免费日韩片| 亚洲乱码精品一二三四区日韩在线| 99精品99|