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

zhiye_wang

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

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  31 隨筆 :: 1 文章 :: 2 評論 :: 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("錯誤"),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("錯誤"),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("錯誤"),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; // 域名 != 計算機名, 在域中
152        }

153        
154    }
 while (0);
155        
156    return FALSE; // 域名 == 計算機名, 不在域中
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:  傳入參數(shù), 域名, 不帶雙反斜杠
167 *         lpUserName:  傳入參數(shù), 用戶, 以杠零結束的字符串
168 *          lpUserPwd:  傳入參數(shù), 密碼, 以杠零結束的字符串
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本機所屬域名
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()) // 本地計算機名 == 本機所屬域名
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("錯誤"),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("網絡路徑不可用"),_T("錯誤"),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("無效的級別"),_T("錯誤"),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("錯誤"),MB_OK|MB_ICONERROR);
249            cRes = e_CREATE_InvalidComputer;
250            break ;
251        }

252        else if (NERR_Success == nStatus) // 已存在
253        {
254            
255            MessageBox(NULL,_T("用戶名已存在,請重新輸入用戶名"),_T("錯誤"),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("錯誤"),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("錯誤"),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("錯誤"),MB_OK|MB_ICONERROR);
290                    cRes = e_CREATE_GroupExists;
291                }

292                else if (NERR_NotPrimary == nStatus)
293                {
294                    MessageBox(NULL,_T("NotPrimary"),_T("錯誤"),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("錯誤"),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("錯誤"),MB_OK|MB_ICONERROR);
307                    cRes = e_CREATE_ACCESS_DENIED;
308                    break ;
309                }

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

316            }
 // endif
317            else if (NERR_Success == nStatus)// 創(chuàng)建成功,移入User和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 閱讀(496) 評論(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>
            亚洲精品美女久久久久| 欧美怡红院视频一区二区三区| 欧美与欧洲交xxxx免费观看| 一区二区三区www| 一区二区免费在线观看| 99国产一区| 亚洲欧美日韩第一区| 欧美在线一二三四区| 欧美在线影院| 麻豆成人综合网| 欧美激情bt| 欧美视频在线一区| 国产农村妇女精品| 亚洲激情av| 亚洲欧美日本另类| 久久九九精品| 亚洲欧洲一区| 亚洲一区二区三区乱码aⅴ| 欧美在线看片| 欧美精品一区二| 国产精品一二一区| 亚洲精品激情| 久久久久91| 日韩视频精品在线| 久久精品一区二区三区中文字幕| 欧美va亚洲va香蕉在线| 国产精品有限公司| 亚洲美女电影在线| 久久久久天天天天| 亚洲午夜精品福利| 欧美精品一区二区三区在线播放 | 国产精品你懂的在线| 精品91在线| 亚洲欧美www| 亚洲黄色在线| 久久精品人人做人人爽电影蜜月| 久久美女艺术照精彩视频福利播放| 欧美日韩国产在线播放| 国外视频精品毛片| 中文精品视频一区二区在线观看| 久久午夜激情| 中文一区二区| 欧美成人有码| 亚洲第一区中文99精品| 久久爱另类一区二区小说| 亚洲精品在线观| 开心色5月久久精品| 国产亚洲精品成人av久久ww| 国产亚洲女人久久久久毛片| av成人免费| 欧美大成色www永久网站婷| 亚洲永久免费精品| 欧美日韩裸体免费视频| 在线免费不卡视频| 久久人人97超碰国产公开结果| 日韩一区二区精品| 欧美欧美午夜aⅴ在线观看| 亚洲国产成人在线| 狂野欧美性猛交xxxx巴西| 亚洲欧美日韩国产成人| 国产精品狼人久久影院观看方式| 一区二区三区视频免费在线观看| 亚洲国产日韩在线| 欧美激情第3页| 亚洲免费观看高清在线观看 | 91久久久久久久久| 欧美成人tv| 免费观看亚洲视频大全| 亚洲福利视频二区| 欧美阿v一级看视频| 久久伊人精品天天| 91久久黄色| 亚洲精品欧美精品| 国产精品二区影院| 午夜精品福利一区二区蜜股av| 一区二区电影免费观看| 国产精品一级| 久久综合九色九九| 免费欧美电影| 亚洲午夜性刺激影院| 午夜精品视频在线观看| 国产欧美一区二区视频| 老色鬼久久亚洲一区二区| 久久婷婷蜜乳一本欲蜜臀| 亚洲激情国产精品| 日韩视频永久免费观看| 国产美女精品免费电影| 巨乳诱惑日韩免费av| 欧美黄色一区二区| 欧美在线视频播放| 久久五月激情| 亚洲一区二区黄色| 欧美一区二区三区视频在线| 亚洲国产精品一区二区第一页| 亚洲欧洲日本在线| 国产精品人成在线观看免费| 久久一日本道色综合久久| 免费在线欧美黄色| 亚洲欧美中文另类| 欧美国产精品劲爆| 久久婷婷丁香| 国产精品二区在线| 尤物yw午夜国产精品视频明星 | 在线不卡亚洲| 在线亚洲成人| 亚洲日本中文字幕免费在线不卡| 亚洲精品日韩在线观看| 国内精品视频在线观看| 亚洲人精品午夜| 精品1区2区3区4区| 香蕉久久一区二区不卡无毒影院| 亚洲日本va在线观看| 亚洲尤物视频在线| 一二三区精品| 欧美大胆人体视频| 免费成人av在线看| 国产视频综合在线| 亚洲一级特黄| 亚洲图片欧美一区| 欧美精品久久天天躁| 免费人成网站在线观看欧美高清| 欧美天堂亚洲电影院在线观看| 欧美黄色一区二区| 尤妮丝一区二区裸体视频| 性欧美18~19sex高清播放| 亚洲一区日韩在线| 欧美午夜理伦三级在线观看| 亚洲国产va精品久久久不卡综合| 国内精品嫩模av私拍在线观看 | 亚洲高清电影| 国产日本欧美一区二区三区| 亚洲区一区二| 亚洲美女中出| 欧美成年网站| 亚洲国产精品一区制服丝袜| 在线免费不卡视频| 免费看亚洲片| 最新日韩精品| 一区二区三区国产在线观看| 欧美华人在线视频| 亚洲精选视频在线| 亚洲尤物视频网| 国产精品久久久久婷婷| 亚洲一级二级| 久久精品国产999大香线蕉| 国产亚洲精品aa午夜观看| 久久九九免费| 亚洲高清av在线| 亚洲一区二区三区精品在线| 国产精品久久久久久户外露出| 一区二区国产日产| 亚洲欧美变态国产另类| 国产精品系列在线播放| 欧美一区二区三区精品| 久久国产一区| 亚洲电影免费在线 | 亚洲欧美日韩国产一区| 欧美亚洲不卡| 性xx色xx综合久久久xx| 久久人人97超碰精品888| 国产欧美在线看| 欧美在线在线| 美日韩精品免费观看视频| 亚洲精品网站在线播放gif| 夜夜嗨av一区二区三区网页| 亚洲女优在线| 亚洲国产日日夜夜| 欧美日韩裸体免费视频| 欧美一区二区三区婷婷月色| 免费在线观看日韩欧美| 中文一区字幕| 激情欧美一区二区三区| 欧美日本一区二区三区| 亚洲欧美春色| 浪潮色综合久久天堂| 99亚洲一区二区| 国内激情久久| 欧美午夜精品久久久久久超碰| 亚洲欧美综合一区| 亚洲高清精品中出| 香蕉成人啪国产精品视频综合网| 国产精品一区二区三区观看| 久久中文字幕一区| 亚洲精品午夜| 美女网站在线免费欧美精品| 亚洲免费成人av电影| 国产精品国产三级国产专播精品人| 午夜亚洲性色视频| 亚洲国产成人在线视频| 欧美一区二区三区免费看| 日韩一级大片| 韩国精品主播一区二区在线观看| 欧美视频你懂的| 蜜月aⅴ免费一区二区三区| 香蕉久久精品日日躁夜夜躁| 亚洲肉体裸体xxxx137| 葵司免费一区二区三区四区五区| 一区二区三区四区国产精品| 国产一区再线| 国产精品视频网址|