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

zhiye_wang

向星空仰望的越深,越發現自己的渺小

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  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:  傳入參數, 域名, 不帶雙反斜杠
167 *         lpUserName:  傳入參數, 用戶, 以杠零結束的字符串
168 *          lpUserPwd:  傳入參數, 密碼, 以杠零結束的字符串
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) // 不存在,創建 
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) // 創建失敗
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("創建用戶失敗"),_T("錯誤"),MB_OK|MB_ICONERROR);
313                    cRes = e_CREATE_FAILED;
314                    break ;
315                }

316            }
 // endif
317            else if (NERR_Success == nStatus)// 創建成功,移入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 閱讀(493) 評論(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>
            欧美理论片在线观看| 国产一区二区在线观看免费播放| 亚洲网友自拍| 欧美日韩一级黄| 在线视频一区观看| 午夜一区在线| 国产女优一区| 久久亚洲高清| 亚洲精品1区2区| 一区二区三区蜜桃网| 欧美午夜一区二区福利视频| 亚洲一区二区少妇| 免费成人黄色| 亚洲男人影院| 伊人久久男人天堂| 欧美日韩免费精品| 久久成人一区二区| 亚洲国产日韩在线| 亚洲欧美一区二区三区久久| 国产一区二区三区免费在线观看| 久久久久免费观看| 一区二区免费在线观看| 久久精品夜夜夜夜久久| 亚洲精品乱码久久久久久久久| 欧美日韩国产精品一卡| 欧美一区二区三区精品| 亚洲黄色免费| 久久免费午夜影院| 一区二区三区.www| 永久免费精品影视网站| 国产精品国产三级国产专区53| 久久久久国产精品厨房| 亚洲一区二区免费| 最新69国产成人精品视频免费| 午夜综合激情| 一区二区三区www| 激情欧美一区| 国产免费成人| 欧美日韩视频一区二区| 免费亚洲电影在线观看| 翔田千里一区二区| 这里只有视频精品| 一二三区精品福利视频| 亚洲国产精品小视频| 狂野欧美一区| 久久婷婷影院| 欧美在线视屏 | 国产女人水真多18毛片18精品视频| 麻豆久久婷婷| 国产精品视频成人| 欧美1区视频| 久久国产手机看片| 亚洲一区欧美二区| 夜色激情一区二区| 日韩手机在线导航| 亚洲经典在线看| 91久久黄色| 亚洲激情综合| 亚洲人成绝费网站色www| 亚洲国产成人精品女人久久久 | 夜夜精品视频| 日韩视频在线播放| 亚洲国产精品久久| 亚洲人成在线观看| 99riav久久精品riav| 亚洲精品乱码久久久久| 亚洲免费观看在线视频| 亚洲美女福利视频网站| 中日韩美女免费视频网址在线观看| 一区二区三区四区五区精品视频 | 欧美伊久线香蕉线新在线| 欧美一区二区三区日韩| 久久精品理论片| 另类图片国产| 91久久国产综合久久| 日韩午夜电影| 亚洲男人的天堂在线aⅴ视频| 亚洲午夜成aⅴ人片| 欧美在线91| 欧美高清在线精品一区| 欧美日韩亚洲一区| 国产日韩精品一区二区浪潮av| 国产亚洲综合精品| 亚洲精品免费在线| 亚洲小说欧美另类社区| 久久久91精品国产一区二区三区| 久久夜色撩人精品| 亚洲老板91色精品久久| 欧美一区免费| 欧美剧在线免费观看网站| 国产精品爱久久久久久久| 国产在线日韩| 一区二区三区视频在线看| 久久久7777| 日韩一区二区精品| 久久久久久久尹人综合网亚洲| 欧美日本三级| 狠狠久久五月精品中文字幕| 免费在线欧美黄色| 欧美插天视频在线播放| 日韩视频一区二区三区在线播放免费观看| 亚洲一区二区三区涩| 久久视频免费观看| 国产精品成人久久久久| 影音先锋中文字幕一区| 午夜精品久久久久久久99樱桃 | 亚洲一区高清| 欧美激情导航| 狠狠色2019综合网| 亚洲欧美在线一区二区| 亚洲国内欧美| 久久久亚洲精品一区二区三区 | 欧美一区二区视频在线观看2020| 欧美国产一区视频在线观看 | 国产欧美日韩综合一区在线播放| 亚洲伦理网站| 蜜桃av一区二区| 欧美一级午夜免费电影| 欧美日韩亚洲精品内裤| 亚洲精品一区二区三| 久久亚洲春色中文字幕| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美福利网址| 亚洲高清久久久| 美女主播一区| 久久久精彩视频| 国产精品专区第二| 欧美一区二区成人6969| 亚洲一区二区视频在线观看| 欧美激情va永久在线播放| 亚洲激情六月丁香| 欧美成人高清视频| 久久青青草综合| 在线成人小视频| 久热爱精品视频线路一| 欧美一级大片在线观看| 国产欧美在线| 久久精品欧美日韩精品| 欧美影院在线| 1204国产成人精品视频| 欧美日韩综合一区| 99精品热6080yy久久| 亚洲免费高清视频| 国产精品电影在线观看| 亚洲永久免费观看| 亚洲影院污污.| 国产一区香蕉久久| 裸体歌舞表演一区二区| 你懂的国产精品永久在线| 性欧美办公室18xxxxhd| 欧美大片va欧美在线播放| 亚洲国产精品一区制服丝袜| 欧美va天堂| 欧美大成色www永久网站婷| 亚洲最新在线视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精一区二区三区| 久久这里只有精品视频首页| 久久亚洲精品一区二区| 夜夜嗨一区二区三区| 亚洲欧美日韩在线不卡| 在线观看亚洲视频| 欧美国产在线电影| 欧美人妖在线观看| 久久99在线观看| 麻豆精品精华液| 一区二区三区日韩精品视频| 亚久久调教视频| 亚洲精品欧美精品| 亚洲欧美影音先锋| 亚洲激情成人在线| 亚洲欧美另类综合偷拍| 亚洲激情另类| 亚洲男人av电影| 一本色道久久综合亚洲精品不 | 美女亚洲精品| 国产精品一二三| 欧美高清视频免费观看| 国产精品对白刺激久久久| 男人的天堂亚洲| 国产精品网站在线观看| 欧美激情视频一区二区三区免费| 欧美日韩视频在线一区二区 | 国产一区二区久久| 99国产精品99久久久久久| 国产一区二区在线观看免费| 一区二区三区你懂的| 亚洲高清不卡一区| 午夜影视日本亚洲欧洲精品| 一本色道久久综合亚洲精品婷婷 | 亚洲一区三区视频在线观看| 亚洲激情一区二区| 欧美有码在线视频| 久久精品国产免费看久久精品 | 悠悠资源网亚洲青| 亚洲免费网址| 亚洲专区免费| 欧美日韩一区二区免费在线观看| 久久婷婷久久一区二区三区| 久久亚洲影院|