jwalmaccess.pas 89 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841
  1. {******************************************************************************}
  2. { }
  3. { Lan Manager Access API interface Unit for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: lmaccess.h, released November 2001. The original Pascal}
  9. { code is: LmAccess.pas, released Februari 2002. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  16. { }
  17. { You may retrieve the latest version of this file at the Project JEDI }
  18. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. // $Id: JwaLmAccess.pas,v 1.11 2005/09/07 09:54:53 marquardt Exp $
  43. {$IFNDEF JWA_INCLUDEMODE}
  44. unit JwaLmAccess;
  45. {$WEAKPACKAGEUNIT}
  46. {$I jediapilib.inc}
  47. interface
  48. uses
  49. JwaWindows, JwaLmCons;
  50. {$ENDIF !JWA_INCLUDEMODE}
  51. {$IFDEF JWA_INTERFACESECTION}
  52. {$HPPEMIT ''}
  53. {$HPPEMIT '#include "lmaccess.h"'}
  54. {$HPPEMIT ''}
  55. //
  56. // Function Prototypes - User
  57. //
  58. function NetUserAdd(servername: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
  59. {$EXTERNALSYM NetUserAdd}
  60. function NetUserEnum(servername: LPCWSTR; level, filter: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries, resume_handle: LPDWORD): NET_API_STATUS; stdcall;
  61. {$EXTERNALSYM NetUserEnum}
  62. function NetUserGetInfo(servername, username: LPCWSTR; level: DWORD; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
  63. {$EXTERNALSYM NetUserGetInfo}
  64. function NetUserSetInfo(servername, username: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
  65. {$EXTERNALSYM NetUserSetInfo}
  66. function NetUserDel(servername: LPCWSTR; username: LPCWSTR): NET_API_STATUS; stdcall;
  67. {$EXTERNALSYM NetUserDel}
  68. function NetUserGetGroups(servername, username: LPCWSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD): NET_API_STATUS; stdcall;
  69. {$EXTERNALSYM NetUserGetGroups}
  70. function NetUserSetGroups(servername, username: LPCWSTR; level: DWORD; buf: LPBYTE; num_entries: DWORD): NET_API_STATUS; stdcall;
  71. {$EXTERNALSYM NetUserSetGroups}
  72. function NetUserGetLocalGroups(servername, username: LPCWSTR; level, flags: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD): NET_API_STATUS; stdcall;
  73. {$EXTERNALSYM NetUserGetLocalGroups}
  74. function NetUserModalsGet(servername: LPCWSTR; level: DWORD; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
  75. {$EXTERNALSYM NetUserModalsGet}
  76. function NetUserModalsSet(servername: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
  77. {$EXTERNALSYM NetUserModalsSet}
  78. function NetUserChangePassword(domainname, username, oldpassword, newpassword: LPCWSTR): NET_API_STATUS; stdcall;
  79. {$EXTERNALSYM NetUserChangePassword}
  80. //
  81. // Data Structures - User
  82. //
  83. type
  84. LPUSER_INFO_0 = ^USER_INFO_0;
  85. {$EXTERNALSYM LPUSER_INFO_0}
  86. PUSER_INFO_0 = ^USER_INFO_0;
  87. {$EXTERNALSYM PUSER_INFO_0}
  88. _USER_INFO_0 = record
  89. usri0_name: LPWSTR;
  90. end;
  91. {$EXTERNALSYM _USER_INFO_0}
  92. USER_INFO_0 = _USER_INFO_0;
  93. {$EXTERNALSYM USER_INFO_0}
  94. TUserInfo0 = USER_INFO_0;
  95. PUserInfo0 = PUSER_INFO_0;
  96. LPUSER_INFO_1 = ^USER_INFO_1;
  97. {$EXTERNALSYM LPUSER_INFO_1}
  98. PUSER_INFO_1 = ^USER_INFO_1;
  99. {$EXTERNALSYM PUSER_INFO_1}
  100. _USER_INFO_1 = record
  101. usri1_name: LPWSTR;
  102. usri1_password: LPWSTR;
  103. usri1_password_age: DWORD;
  104. usri1_priv: DWORD;
  105. usri1_home_dir: LPWSTR;
  106. usri1_comment: LPWSTR;
  107. usri1_flags: DWORD;
  108. usri1_script_path: LPWSTR;
  109. end;
  110. {$EXTERNALSYM _USER_INFO_1}
  111. USER_INFO_1 = _USER_INFO_1;
  112. {$EXTERNALSYM USER_INFO_1}
  113. TUserInfo1 = USER_INFO_1;
  114. PUserInfo1 = PUSER_INFO_1;
  115. LPUSER_INFO_2 = ^USER_INFO_2;
  116. {$EXTERNALSYM LPUSER_INFO_2}
  117. PUSER_INFO_2 = ^USER_INFO_2;
  118. {$EXTERNALSYM PUSER_INFO_2}
  119. _USER_INFO_2 = record
  120. usri2_name: LPWSTR;
  121. usri2_password: LPWSTR;
  122. usri2_password_age: DWORD;
  123. usri2_priv: DWORD;
  124. usri2_home_dir: LPWSTR;
  125. usri2_comment: LPWSTR;
  126. usri2_flags: DWORD;
  127. usri2_script_path: LPWSTR;
  128. usri2_auth_flags: DWORD;
  129. usri2_full_name: LPWSTR;
  130. usri2_usr_comment: LPWSTR;
  131. usri2_parms: LPWSTR;
  132. usri2_workstations: LPWSTR;
  133. usri2_last_logon: DWORD;
  134. usri2_last_logoff: DWORD;
  135. usri2_acct_expires: DWORD;
  136. usri2_max_storage: DWORD;
  137. usri2_units_per_week: DWORD;
  138. usri2_logon_hours: PBYTE;
  139. usri2_bad_pw_count: DWORD;
  140. usri2_num_logons: DWORD;
  141. usri2_logon_server: LPWSTR;
  142. usri2_country_code: DWORD;
  143. usri2_code_page: DWORD;
  144. end;
  145. {$EXTERNALSYM _USER_INFO_2}
  146. USER_INFO_2 = _USER_INFO_2;
  147. {$EXTERNALSYM USER_INFO_2}
  148. TUserInfo2 = USER_INFO_2;
  149. PUserInfo2 = PUSER_INFO_2;
  150. LPUSER_INFO_3 = ^USER_INFO_3;
  151. {$EXTERNALSYM LPUSER_INFO_3}
  152. PUSER_INFO_3 = ^USER_INFO_3;
  153. {$EXTERNALSYM PUSER_INFO_3}
  154. _USER_INFO_3 = record
  155. usri3_name: LPWSTR;
  156. usri3_password: LPWSTR;
  157. usri3_password_age: DWORD;
  158. usri3_priv: DWORD;
  159. usri3_home_dir: LPWSTR;
  160. usri3_comment: LPWSTR;
  161. usri3_flags: DWORD;
  162. usri3_script_path: LPWSTR;
  163. usri3_auth_flags: DWORD;
  164. usri3_full_name: LPWSTR;
  165. usri3_usr_comment: LPWSTR;
  166. usri3_parms: LPWSTR;
  167. usri3_workstations: LPWSTR;
  168. usri3_last_logon: DWORD;
  169. usri3_last_logoff: DWORD;
  170. usri3_acct_expires: DWORD;
  171. usri3_max_storage: DWORD;
  172. usri3_units_per_week: DWORD;
  173. usri3_logon_hours: PBYTE;
  174. usri3_bad_pw_count: DWORD;
  175. usri3_num_logons: DWORD;
  176. usri3_logon_server: LPWSTR;
  177. usri3_country_code: DWORD;
  178. usri3_code_page: DWORD;
  179. usri3_user_id: DWORD;
  180. usri3_primary_group_id: DWORD;
  181. usri3_profile: LPWSTR;
  182. usri3_home_dir_drive: LPWSTR;
  183. usri3_password_expired: DWORD;
  184. end;
  185. {$EXTERNALSYM _USER_INFO_3}
  186. USER_INFO_3 = _USER_INFO_3;
  187. {$EXTERNALSYM USER_INFO_3}
  188. TUserInfo3 = USER_INFO_3;
  189. PUserInfo3 = PUSER_INFO_3;
  190. LPUSER_INFO_4 = ^USER_INFO_4;
  191. {$EXTERNALSYM LPUSER_INFO_4}
  192. PUSER_INFO_4 = ^USER_INFO_4;
  193. {$EXTERNALSYM PUSER_INFO_4}
  194. _USER_INFO_4 = record
  195. usri4_name: LPWSTR;
  196. usri4_password: LPWSTR;
  197. usri4_password_age: DWORD;
  198. usri4_priv: DWORD;
  199. usri4_home_dir: LPWSTR;
  200. usri4_comment: LPWSTR;
  201. usri4_flags: DWORD;
  202. usri4_script_path: LPWSTR;
  203. usri4_auth_flags: DWORD;
  204. usri4_full_name: LPWSTR;
  205. usri4_usr_comment: LPWSTR;
  206. usri4_parms: LPWSTR;
  207. usri4_workstations: LPWSTR;
  208. usri4_last_logon: DWORD;
  209. usri4_last_logoff: DWORD;
  210. usri4_acct_expires: DWORD;
  211. usri4_max_storage: DWORD;
  212. usri4_units_per_week: DWORD;
  213. usri4_logon_hours: PBYTE;
  214. usri4_bad_pw_count: DWORD;
  215. usri4_num_logons: DWORD;
  216. usri4_logon_server: LPWSTR;
  217. usri4_country_code: DWORD;
  218. usri4_code_page: DWORD;
  219. usri4_user_sid: PSID;
  220. usri4_primary_group_id: DWORD;
  221. usri4_profile: LPWSTR;
  222. usri4_home_dir_drive: LPWSTR;
  223. usri4_password_expired: DWORD;
  224. end;
  225. {$EXTERNALSYM _USER_INFO_4}
  226. USER_INFO_4 = _USER_INFO_4;
  227. {$EXTERNALSYM USER_INFO_4}
  228. TUserInfo4 = USER_INFO_4;
  229. PUserInfo4 = PUSER_INFO_4;
  230. LPUSER_INFO_10 = ^USER_INFO_10;
  231. {$EXTERNALSYM LPUSER_INFO_10}
  232. PUSER_INFO_10 = ^USER_INFO_10;
  233. {$EXTERNALSYM PUSER_INFO_10}
  234. _USER_INFO_10 = record
  235. usri10_name: LPWSTR;
  236. usri10_comment: LPWSTR;
  237. usri10_usr_comment: LPWSTR;
  238. usri10_full_name: LPWSTR;
  239. end;
  240. {$EXTERNALSYM _USER_INFO_10}
  241. USER_INFO_10 = _USER_INFO_10;
  242. {$EXTERNALSYM USER_INFO_10}
  243. TUserInfo10 = USER_INFO_10;
  244. PUserInfo10 = PUSER_INFO_10;
  245. LPUSER_INFO_11 = ^USER_INFO_11;
  246. {$EXTERNALSYM LPUSER_INFO_11}
  247. PUSER_INFO_11 = ^USER_INFO_11;
  248. {$EXTERNALSYM PUSER_INFO_11}
  249. _USER_INFO_11 = record
  250. usri11_name: LPWSTR;
  251. usri11_comment: LPWSTR;
  252. usri11_usr_comment: LPWSTR;
  253. usri11_full_name: LPWSTR;
  254. usri11_priv: DWORD;
  255. usri11_auth_flags: DWORD;
  256. usri11_password_age: DWORD;
  257. usri11_home_dir: LPWSTR;
  258. usri11_parms: LPWSTR;
  259. usri11_last_logon: DWORD;
  260. usri11_last_logoff: DWORD;
  261. usri11_bad_pw_count: DWORD;
  262. usri11_num_logons: DWORD;
  263. usri11_logon_server: LPWSTR;
  264. usri11_country_code: DWORD;
  265. usri11_workstations: LPWSTR;
  266. usri11_max_storage: DWORD;
  267. usri11_units_per_week: DWORD;
  268. usri11_logon_hours: PBYTE;
  269. usri11_code_page: DWORD;
  270. end;
  271. {$EXTERNALSYM _USER_INFO_11}
  272. USER_INFO_11 = _USER_INFO_11;
  273. {$EXTERNALSYM USER_INFO_11}
  274. TUserInfo11 = USER_INFO_11;
  275. PUserInfo11 = PUSER_INFO_11;
  276. LPUSER_INFO_20 = ^USER_INFO_20;
  277. {$EXTERNALSYM LPUSER_INFO_20}
  278. PUSER_INFO_20 = ^USER_INFO_20;
  279. {$EXTERNALSYM PUSER_INFO_20}
  280. _USER_INFO_20 = record
  281. usri20_name: LPWSTR;
  282. usri20_full_name: LPWSTR;
  283. usri20_comment: LPWSTR;
  284. usri20_flags: DWORD;
  285. usri20_user_id: DWORD;
  286. end;
  287. {$EXTERNALSYM _USER_INFO_20}
  288. USER_INFO_20 = _USER_INFO_20;
  289. {$EXTERNALSYM USER_INFO_20}
  290. TUserInfo20 = USER_INFO_20;
  291. PUserInfo20 = PUSER_INFO_20;
  292. LPUSER_INFO_21 = ^USER_INFO_21;
  293. {$EXTERNALSYM LPUSER_INFO_21}
  294. PUSER_INFO_21 = ^USER_INFO_21;
  295. {$EXTERNALSYM PUSER_INFO_21}
  296. _USER_INFO_21 = record
  297. usri21_password: array [0..ENCRYPTED_PWLEN - 1] of BYTE;
  298. end;
  299. {$EXTERNALSYM _USER_INFO_21}
  300. USER_INFO_21 = _USER_INFO_21;
  301. {$EXTERNALSYM USER_INFO_21}
  302. TUserInfo21 = USER_INFO_21;
  303. PUserInfo21 = PUSER_INFO_21;
  304. LPUSER_INFO_22 = ^USER_INFO_22;
  305. {$EXTERNALSYM LPUSER_INFO_22}
  306. PUSER_INFO_22 = ^USER_INFO_22;
  307. {$EXTERNALSYM PUSER_INFO_22}
  308. _USER_INFO_22 = record
  309. usri22_name: LPWSTR;
  310. usri22_password: array [0..ENCRYPTED_PWLEN - 1] of BYTE;
  311. usri22_password_age: DWORD;
  312. usri22_priv: DWORD;
  313. usri22_home_dir: LPWSTR;
  314. usri22_comment: LPWSTR;
  315. usri22_flags: DWORD;
  316. usri22_script_path: LPWSTR;
  317. usri22_auth_flags: DWORD;
  318. usri22_full_name: LPWSTR;
  319. usri22_usr_comment: LPWSTR;
  320. usri22_parms: LPWSTR;
  321. usri22_workstations: LPWSTR;
  322. usri22_last_logon: DWORD;
  323. usri22_last_logoff: DWORD;
  324. usri22_acct_expires: DWORD;
  325. usri22_max_storage: DWORD;
  326. usri22_units_per_week: DWORD;
  327. usri22_logon_hours: PBYTE;
  328. usri22_bad_pw_count: DWORD;
  329. usri22_num_logons: DWORD;
  330. usri22_logon_server: LPWSTR;
  331. usri22_country_code: DWORD;
  332. usri22_code_page: DWORD;
  333. end;
  334. {$EXTERNALSYM _USER_INFO_22}
  335. USER_INFO_22 = _USER_INFO_22;
  336. {$EXTERNALSYM USER_INFO_22}
  337. TUserInfo22 = USER_INFO_22;
  338. PUserInfo22 = PUSER_INFO_22;
  339. LPUSER_INFO_23 = ^USER_INFO_23;
  340. {$EXTERNALSYM LPUSER_INFO_23}
  341. PUSER_INFO_23 = ^USER_INFO_23;
  342. {$EXTERNALSYM PUSER_INFO_23}
  343. _USER_INFO_23 = record
  344. usri23_name: LPWSTR;
  345. usri23_full_name: LPWSTR;
  346. usri23_comment: LPWSTR;
  347. usri23_flags: DWORD;
  348. usri23_user_sid: PSID;
  349. end;
  350. {$EXTERNALSYM _USER_INFO_23}
  351. USER_INFO_23 = _USER_INFO_23;
  352. {$EXTERNALSYM USER_INFO_23}
  353. TUserInfo23 = USER_INFO_23;
  354. PUserInfo23 = PUSER_INFO_23;
  355. LPUSER_INFO_1003 = ^USER_INFO_1003;
  356. {$EXTERNALSYM LPUSER_INFO_1003}
  357. PUSER_INFO_1003 = ^USER_INFO_1003;
  358. {$EXTERNALSYM PUSER_INFO_1003}
  359. _USER_INFO_1003 = record
  360. usri1003_password: LPWSTR;
  361. end;
  362. {$EXTERNALSYM _USER_INFO_1003}
  363. USER_INFO_1003 = _USER_INFO_1003;
  364. {$EXTERNALSYM USER_INFO_1003}
  365. TUserInfo1003 = USER_INFO_1003;
  366. PUserInfo1003 = PUSER_INFO_1003;
  367. LPUSER_INFO_1005 = ^USER_INFO_1005;
  368. {$EXTERNALSYM LPUSER_INFO_1005}
  369. PUSER_INFO_1005 = ^USER_INFO_1005;
  370. {$EXTERNALSYM PUSER_INFO_1005}
  371. _USER_INFO_1005 = record
  372. usri1005_priv: DWORD;
  373. end;
  374. {$EXTERNALSYM _USER_INFO_1005}
  375. USER_INFO_1005 = _USER_INFO_1005;
  376. {$EXTERNALSYM USER_INFO_1005}
  377. TUserInfo1005 = USER_INFO_1005;
  378. PUserInfo1005 = PUSER_INFO_1005;
  379. LPUSER_INFO_1006 = ^USER_INFO_1006;
  380. {$EXTERNALSYM LPUSER_INFO_1006}
  381. PUSER_INFO_1006 = ^USER_INFO_1006;
  382. {$EXTERNALSYM PUSER_INFO_1006}
  383. _USER_INFO_1006 = record
  384. usri1006_home_dir: LPWSTR;
  385. end;
  386. {$EXTERNALSYM _USER_INFO_1006}
  387. USER_INFO_1006 = _USER_INFO_1006;
  388. {$EXTERNALSYM USER_INFO_1006}
  389. TUserInfo1006 = USER_INFO_1006;
  390. PUserInfo1006 = PUSER_INFO_1006;
  391. LPUSER_INFO_1007 = ^USER_INFO_1007;
  392. {$EXTERNALSYM LPUSER_INFO_1007}
  393. PUSER_INFO_1007 = ^USER_INFO_1007;
  394. {$EXTERNALSYM PUSER_INFO_1007}
  395. _USER_INFO_1007 = record
  396. usri1007_comment: LPWSTR;
  397. end;
  398. {$EXTERNALSYM _USER_INFO_1007}
  399. USER_INFO_1007 = _USER_INFO_1007;
  400. {$EXTERNALSYM USER_INFO_1007}
  401. TUserInfo1007 = USER_INFO_1007;
  402. PUserInfo1007 = PUSER_INFO_1007;
  403. LPUSER_INFO_1008 = ^USER_INFO_1008;
  404. {$EXTERNALSYM LPUSER_INFO_1008}
  405. PUSER_INFO_1008 = ^USER_INFO_1008;
  406. {$EXTERNALSYM PUSER_INFO_1008}
  407. _USER_INFO_1008 = record
  408. usri1008_flags: DWORD;
  409. end;
  410. {$EXTERNALSYM _USER_INFO_1008}
  411. USER_INFO_1008 = _USER_INFO_1008;
  412. {$EXTERNALSYM USER_INFO_1008}
  413. TUserInfo1008 = USER_INFO_1008;
  414. PUserInfo1008 = PUSER_INFO_1008;
  415. LPUSER_INFO_1009 = ^USER_INFO_1009;
  416. {$EXTERNALSYM LPUSER_INFO_1009}
  417. PUSER_INFO_1009 = ^USER_INFO_1009;
  418. {$EXTERNALSYM PUSER_INFO_1009}
  419. _USER_INFO_1009 = record
  420. usri1009_script_path: LPWSTR;
  421. end;
  422. {$EXTERNALSYM _USER_INFO_1009}
  423. USER_INFO_1009 = _USER_INFO_1009;
  424. {$EXTERNALSYM USER_INFO_1009}
  425. TUserInfo1009 = USER_INFO_1009;
  426. PUserInfo1009 = PUSER_INFO_1009;
  427. LPUSER_INFO_1010 = ^USER_INFO_1010;
  428. {$EXTERNALSYM LPUSER_INFO_1010}
  429. PUSER_INFO_1010 = ^USER_INFO_1010;
  430. {$EXTERNALSYM PUSER_INFO_1010}
  431. _USER_INFO_1010 = record
  432. usri1010_auth_flags: DWORD;
  433. end;
  434. {$EXTERNALSYM _USER_INFO_1010}
  435. USER_INFO_1010 = _USER_INFO_1010;
  436. {$EXTERNALSYM USER_INFO_1010}
  437. TUserInfo1010 = USER_INFO_1010;
  438. PUserInfo1010 = PUSER_INFO_1010;
  439. LPUSER_INFO_1011 = ^USER_INFO_1011;
  440. {$EXTERNALSYM LPUSER_INFO_1011}
  441. PUSER_INFO_1011 = ^USER_INFO_1011;
  442. {$EXTERNALSYM PUSER_INFO_1011}
  443. _USER_INFO_1011 = record
  444. usri1011_full_name: LPWSTR;
  445. end;
  446. {$EXTERNALSYM _USER_INFO_1011}
  447. USER_INFO_1011 = _USER_INFO_1011;
  448. {$EXTERNALSYM USER_INFO_1011}
  449. TUserInfo1011 = USER_INFO_1011;
  450. PUserInfo1011 = PUSER_INFO_1011;
  451. LPUSER_INFO_1012 = ^USER_INFO_1012;
  452. {$EXTERNALSYM LPUSER_INFO_1012}
  453. PUSER_INFO_1012 = ^USER_INFO_1012;
  454. {$EXTERNALSYM PUSER_INFO_1012}
  455. _USER_INFO_1012 = record
  456. usri1012_usr_comment: LPWSTR;
  457. end;
  458. {$EXTERNALSYM _USER_INFO_1012}
  459. USER_INFO_1012 = _USER_INFO_1012;
  460. {$EXTERNALSYM USER_INFO_1012}
  461. TUserInfo1012 = USER_INFO_1012;
  462. PUserInfo1012 = PUSER_INFO_1012;
  463. LPUSER_INFO_1013 = ^USER_INFO_1013;
  464. {$EXTERNALSYM LPUSER_INFO_1013}
  465. PUSER_INFO_1013 = ^USER_INFO_1013;
  466. {$EXTERNALSYM PUSER_INFO_1013}
  467. _USER_INFO_1013 = record
  468. usri1013_parms: LPWSTR;
  469. end;
  470. {$EXTERNALSYM _USER_INFO_1013}
  471. USER_INFO_1013 = _USER_INFO_1013;
  472. {$EXTERNALSYM USER_INFO_1013}
  473. TUserInfo1013 = USER_INFO_1013;
  474. PUserInfo1013 = PUSER_INFO_1013;
  475. LPUSER_INFO_1014 = ^USER_INFO_1014;
  476. {$EXTERNALSYM LPUSER_INFO_1014}
  477. PUSER_INFO_1014 = ^USER_INFO_1014;
  478. {$EXTERNALSYM PUSER_INFO_1014}
  479. _USER_INFO_1014 = record
  480. usri1014_workstations: LPWSTR;
  481. end;
  482. {$EXTERNALSYM _USER_INFO_1014}
  483. USER_INFO_1014 = _USER_INFO_1014;
  484. {$EXTERNALSYM USER_INFO_1014}
  485. TUserInfo1014 = USER_INFO_1014;
  486. PUserInfo1014 = PUSER_INFO_1014;
  487. LPUSER_INFO_1017 = ^USER_INFO_1017;
  488. {$EXTERNALSYM LPUSER_INFO_1017}
  489. PUSER_INFO_1017 = ^USER_INFO_1017;
  490. {$EXTERNALSYM PUSER_INFO_1017}
  491. _USER_INFO_1017 = record
  492. usri1017_acct_expires: DWORD;
  493. end;
  494. {$EXTERNALSYM _USER_INFO_1017}
  495. USER_INFO_1017 = _USER_INFO_1017;
  496. {$EXTERNALSYM USER_INFO_1017}
  497. TUserInfo1017 = USER_INFO_1017;
  498. PUserInfo1017 = PUSER_INFO_1017;
  499. LPUSER_INFO_1018 = ^USER_INFO_1018;
  500. {$EXTERNALSYM LPUSER_INFO_1018}
  501. PUSER_INFO_1018 = ^USER_INFO_1018;
  502. {$EXTERNALSYM PUSER_INFO_1018}
  503. _USER_INFO_1018 = record
  504. usri1018_max_storage: DWORD;
  505. end;
  506. {$EXTERNALSYM _USER_INFO_1018}
  507. USER_INFO_1018 = _USER_INFO_1018;
  508. {$EXTERNALSYM USER_INFO_1018}
  509. TUserInfo1018 = USER_INFO_1018;
  510. PUserInfo1018 = PUSER_INFO_1018;
  511. LPUSER_INFO_1020 = ^USER_INFO_1020;
  512. {$EXTERNALSYM LPUSER_INFO_1020}
  513. PUSER_INFO_1020 = ^USER_INFO_1020;
  514. {$EXTERNALSYM PUSER_INFO_1020}
  515. _USER_INFO_1020 = record
  516. usri1020_units_per_week: DWORD;
  517. usri1020_logon_hours: LPBYTE;
  518. end;
  519. {$EXTERNALSYM _USER_INFO_1020}
  520. USER_INFO_1020 = _USER_INFO_1020;
  521. {$EXTERNALSYM USER_INFO_1020}
  522. TUserInfo1020 = USER_INFO_1020;
  523. PUserInfo1020 = PUSER_INFO_1020;
  524. LPUSER_INFO_1023 = ^USER_INFO_1023;
  525. {$EXTERNALSYM LPUSER_INFO_1023}
  526. PUSER_INFO_1023 = ^USER_INFO_1023;
  527. {$EXTERNALSYM PUSER_INFO_1023}
  528. _USER_INFO_1023 = record
  529. usri1023_logon_server: LPWSTR;
  530. end;
  531. {$EXTERNALSYM _USER_INFO_1023}
  532. USER_INFO_1023 = _USER_INFO_1023;
  533. {$EXTERNALSYM USER_INFO_1023}
  534. TUserInfo1023 = USER_INFO_1023;
  535. PUserInfo1023 = PUSER_INFO_1023;
  536. LPUSER_INFO_1024 = ^USER_INFO_1024;
  537. {$EXTERNALSYM LPUSER_INFO_1024}
  538. PUSER_INFO_1024 = ^USER_INFO_1024;
  539. {$EXTERNALSYM PUSER_INFO_1024}
  540. _USER_INFO_1024 = record
  541. usri1024_country_code: DWORD;
  542. end;
  543. {$EXTERNALSYM _USER_INFO_1024}
  544. USER_INFO_1024 = _USER_INFO_1024;
  545. {$EXTERNALSYM USER_INFO_1024}
  546. TUserInfo1024 = USER_INFO_1024;
  547. PUserInfo1024 = PUSER_INFO_1024;
  548. LPUSER_INFO_1025 = ^USER_INFO_1025;
  549. {$EXTERNALSYM LPUSER_INFO_1025}
  550. PUSER_INFO_1025 = ^USER_INFO_1025;
  551. {$EXTERNALSYM PUSER_INFO_1025}
  552. _USER_INFO_1025 = record
  553. usri1025_code_page: DWORD;
  554. end;
  555. {$EXTERNALSYM _USER_INFO_1025}
  556. USER_INFO_1025 = _USER_INFO_1025;
  557. {$EXTERNALSYM USER_INFO_1025}
  558. TUserInfo1025 = USER_INFO_1025;
  559. PUserInfo1025 = PUSER_INFO_1025;
  560. LPUSER_INFO_1051 = ^USER_INFO_1051;
  561. {$EXTERNALSYM LPUSER_INFO_1051}
  562. PUSER_INFO_1051 = ^USER_INFO_1051;
  563. {$EXTERNALSYM PUSER_INFO_1051}
  564. _USER_INFO_1051 = record
  565. usri1051_primary_group_id: DWORD;
  566. end;
  567. {$EXTERNALSYM _USER_INFO_1051}
  568. USER_INFO_1051 = _USER_INFO_1051;
  569. {$EXTERNALSYM USER_INFO_1051}
  570. TUserInfo1051 = USER_INFO_1051;
  571. PUserInfo1051 = PUSER_INFO_1051;
  572. LPUSER_INFO_1052 = ^USER_INFO_1052;
  573. {$EXTERNALSYM LPUSER_INFO_1052}
  574. PUSER_INFO_1052 = ^USER_INFO_1052;
  575. {$EXTERNALSYM PUSER_INFO_1052}
  576. _USER_INFO_1052 = record
  577. usri1052_profile: LPWSTR;
  578. end;
  579. {$EXTERNALSYM _USER_INFO_1052}
  580. USER_INFO_1052 = _USER_INFO_1052;
  581. {$EXTERNALSYM USER_INFO_1052}
  582. TUserInfo1052 = USER_INFO_1052;
  583. PUserInfo1052 = PUSER_INFO_1052;
  584. LPUSER_INFO_1053 = ^USER_INFO_1053;
  585. {$EXTERNALSYM LPUSER_INFO_1053}
  586. PUSER_INFO_1053 = ^USER_INFO_1053;
  587. {$EXTERNALSYM PUSER_INFO_1053}
  588. _USER_INFO_1053 = record
  589. usri1053_home_dir_drive: LPWSTR;
  590. end;
  591. {$EXTERNALSYM _USER_INFO_1053}
  592. USER_INFO_1053 = _USER_INFO_1053;
  593. {$EXTERNALSYM USER_INFO_1053}
  594. TUserInfo1053 = USER_INFO_1053;
  595. PUserInfo1053 = PUSER_INFO_1053;
  596. //
  597. // Data Structures - User Modals
  598. //
  599. LPUSER_MODALS_INFO_0 = ^USER_MODALS_INFO_0;
  600. {$EXTERNALSYM LPUSER_MODALS_INFO_0}
  601. PUSER_MODALS_INFO_0 = ^USER_MODALS_INFO_0;
  602. {$EXTERNALSYM PUSER_MODALS_INFO_0}
  603. _USER_MODALS_INFO_0 = record
  604. usrmod0_min_passwd_len: DWORD;
  605. usrmod0_max_passwd_age: DWORD;
  606. usrmod0_min_passwd_age: DWORD;
  607. usrmod0_force_logoff: DWORD;
  608. usrmod0_password_hist_len: DWORD;
  609. end;
  610. {$EXTERNALSYM _USER_MODALS_INFO_0}
  611. USER_MODALS_INFO_0 = _USER_MODALS_INFO_0;
  612. {$EXTERNALSYM USER_MODALS_INFO_0}
  613. TUserModalsInfo0 = USER_MODALS_INFO_0;
  614. PUserModalsInfo0 = PUSER_MODALS_INFO_0;
  615. LPUSER_MODALS_INFO_1 = ^USER_MODALS_INFO_1;
  616. {$EXTERNALSYM LPUSER_MODALS_INFO_1}
  617. PUSER_MODALS_INFO_1 = ^USER_MODALS_INFO_1;
  618. {$EXTERNALSYM PUSER_MODALS_INFO_1}
  619. _USER_MODALS_INFO_1 = record
  620. usrmod1_role: DWORD;
  621. usrmod1_primary: LPWSTR;
  622. end;
  623. {$EXTERNALSYM _USER_MODALS_INFO_1}
  624. USER_MODALS_INFO_1 = _USER_MODALS_INFO_1;
  625. {$EXTERNALSYM USER_MODALS_INFO_1}
  626. TUserModalsInfo1 = USER_MODALS_INFO_1;
  627. PUserModalsInfo1 = PUSER_MODALS_INFO_1;
  628. LPUSER_MODALS_INFO_2 = ^USER_MODALS_INFO_2;
  629. {$EXTERNALSYM LPUSER_MODALS_INFO_2}
  630. PUSER_MODALS_INFO_2 = ^USER_MODALS_INFO_2;
  631. {$EXTERNALSYM PUSER_MODALS_INFO_2}
  632. _USER_MODALS_INFO_2 = record
  633. usrmod2_domain_name: LPWSTR;
  634. usrmod2_domain_id: PSID;
  635. end;
  636. {$EXTERNALSYM _USER_MODALS_INFO_2}
  637. USER_MODALS_INFO_2 = _USER_MODALS_INFO_2;
  638. {$EXTERNALSYM USER_MODALS_INFO_2}
  639. TUserModalsInfo2 = USER_MODALS_INFO_2;
  640. PUserModalsInfo2 = PUSER_MODALS_INFO_2;
  641. LPUSER_MODALS_INFO_3 = ^USER_MODALS_INFO_3;
  642. {$EXTERNALSYM LPUSER_MODALS_INFO_3}
  643. PUSER_MODALS_INFO_3 = ^USER_MODALS_INFO_3;
  644. {$EXTERNALSYM PUSER_MODALS_INFO_3}
  645. _USER_MODALS_INFO_3 = record
  646. usrmod3_lockout_duration: DWORD;
  647. usrmod3_lockout_observation_window: DWORD;
  648. usrmod3_lockout_threshold: DWORD;
  649. end;
  650. {$EXTERNALSYM _USER_MODALS_INFO_3}
  651. USER_MODALS_INFO_3 = _USER_MODALS_INFO_3;
  652. {$EXTERNALSYM USER_MODALS_INFO_3}
  653. TUserModalsInfo3 = USER_MODALS_INFO_3;
  654. PUserModalsInfo3 = PUSER_MODALS_INFO_3;
  655. LPUSER_MODALS_INFO_1001 = ^USER_MODALS_INFO_1001;
  656. {$EXTERNALSYM LPUSER_MODALS_INFO_1001}
  657. PUSER_MODALS_INFO_1001 = ^USER_MODALS_INFO_1001;
  658. {$EXTERNALSYM PUSER_MODALS_INFO_1001}
  659. _USER_MODALS_INFO_1001 = record
  660. usrmod1001_min_passwd_len: DWORD;
  661. end;
  662. {$EXTERNALSYM _USER_MODALS_INFO_1001}
  663. USER_MODALS_INFO_1001 = _USER_MODALS_INFO_1001;
  664. {$EXTERNALSYM USER_MODALS_INFO_1001}
  665. TUserModalsInfo1001 = USER_MODALS_INFO_1001;
  666. PUserModalsInfo1001 = PUSER_MODALS_INFO_1001;
  667. LPUSER_MODALS_INFO_1002 = ^USER_MODALS_INFO_1002;
  668. {$EXTERNALSYM LPUSER_MODALS_INFO_1002}
  669. PUSER_MODALS_INFO_1002 = ^USER_MODALS_INFO_1002;
  670. {$EXTERNALSYM PUSER_MODALS_INFO_1002}
  671. _USER_MODALS_INFO_1002 = record
  672. usrmod1002_max_passwd_age: DWORD;
  673. end;
  674. {$EXTERNALSYM _USER_MODALS_INFO_1002}
  675. USER_MODALS_INFO_1002 = _USER_MODALS_INFO_1002;
  676. {$EXTERNALSYM USER_MODALS_INFO_1002}
  677. TUserModalsInfo1002 = USER_MODALS_INFO_1002;
  678. PUserModalsInfo1002 = PUSER_MODALS_INFO_1002;
  679. LPUSER_MODALS_INFO_1003 = ^USER_MODALS_INFO_1003;
  680. {$EXTERNALSYM LPUSER_MODALS_INFO_1003}
  681. PUSER_MODALS_INFO_1003 = ^USER_MODALS_INFO_1003;
  682. {$EXTERNALSYM PUSER_MODALS_INFO_1003}
  683. _USER_MODALS_INFO_1003 = record
  684. usrmod1003_min_passwd_age: DWORD;
  685. end;
  686. {$EXTERNALSYM _USER_MODALS_INFO_1003}
  687. USER_MODALS_INFO_1003 = _USER_MODALS_INFO_1003;
  688. {$EXTERNALSYM USER_MODALS_INFO_1003}
  689. TUserModalsInfo1003 = USER_MODALS_INFO_1003;
  690. PUserModalsInfo1003 = PUSER_MODALS_INFO_1003;
  691. LPUSER_MODALS_INFO_1004 = ^USER_MODALS_INFO_1004;
  692. {$EXTERNALSYM LPUSER_MODALS_INFO_1004}
  693. PUSER_MODALS_INFO_1004 = ^USER_MODALS_INFO_1004;
  694. {$EXTERNALSYM PUSER_MODALS_INFO_1004}
  695. _USER_MODALS_INFO_1004 = record
  696. usrmod1004_force_logoff: DWORD;
  697. end;
  698. {$EXTERNALSYM _USER_MODALS_INFO_1004}
  699. USER_MODALS_INFO_1004 = _USER_MODALS_INFO_1004;
  700. {$EXTERNALSYM USER_MODALS_INFO_1004}
  701. TUserModalsInfo1004 = USER_MODALS_INFO_1004;
  702. PUserModalsInfo1004 = PUSER_MODALS_INFO_1004;
  703. LPUSER_MODALS_INFO_1005 = ^USER_MODALS_INFO_1005;
  704. {$EXTERNALSYM LPUSER_MODALS_INFO_1005}
  705. PUSER_MODALS_INFO_1005 = ^USER_MODALS_INFO_1005;
  706. {$EXTERNALSYM PUSER_MODALS_INFO_1005}
  707. _USER_MODALS_INFO_1005 = record
  708. usrmod1005_password_hist_len: DWORD;
  709. end;
  710. {$EXTERNALSYM _USER_MODALS_INFO_1005}
  711. USER_MODALS_INFO_1005 = _USER_MODALS_INFO_1005;
  712. {$EXTERNALSYM USER_MODALS_INFO_1005}
  713. TUserModalsInfo1005 = USER_MODALS_INFO_1005;
  714. PUserModalsInfo1005 = PUSER_MODALS_INFO_1005;
  715. LPUSER_MODALS_INFO_1006 = ^USER_MODALS_INFO_1006;
  716. {$EXTERNALSYM LPUSER_MODALS_INFO_1006}
  717. PUSER_MODALS_INFO_1006 = ^USER_MODALS_INFO_1006;
  718. {$EXTERNALSYM PUSER_MODALS_INFO_1006}
  719. _USER_MODALS_INFO_1006 = record
  720. usrmod1006_role: DWORD;
  721. end;
  722. {$EXTERNALSYM _USER_MODALS_INFO_1006}
  723. USER_MODALS_INFO_1006 = _USER_MODALS_INFO_1006;
  724. {$EXTERNALSYM USER_MODALS_INFO_1006}
  725. TUserModalsInfo1006 = USER_MODALS_INFO_1006;
  726. PUserModalsInfo1006 = PUSER_MODALS_INFO_1006;
  727. LPUSER_MODALS_INFO_1007 = ^USER_MODALS_INFO_1007;
  728. {$EXTERNALSYM LPUSER_MODALS_INFO_1007}
  729. PUSER_MODALS_INFO_1007 = ^USER_MODALS_INFO_1007;
  730. {$EXTERNALSYM PUSER_MODALS_INFO_1007}
  731. _USER_MODALS_INFO_1007 = record
  732. usrmod1007_primary: LPWSTR;
  733. end;
  734. {$EXTERNALSYM _USER_MODALS_INFO_1007}
  735. USER_MODALS_INFO_1007 = _USER_MODALS_INFO_1007;
  736. {$EXTERNALSYM USER_MODALS_INFO_1007}
  737. TUserModalsInfo1007 = USER_MODALS_INFO_1007;
  738. PUserModalsInfo1007 = PUSER_MODALS_INFO_1007;
  739. //
  740. // Special Values and Constants - User
  741. //
  742. //
  743. // Bit masks for field usriX_flags of USER_INFO_X (X = 0/1).
  744. //
  745. const
  746. UF_SCRIPT = $0001;
  747. {$EXTERNALSYM UF_SCRIPT}
  748. UF_ACCOUNTDISABLE = $0002;
  749. {$EXTERNALSYM UF_ACCOUNTDISABLE}
  750. UF_HOMEDIR_REQUIRED = $0008;
  751. {$EXTERNALSYM UF_HOMEDIR_REQUIRED}
  752. UF_LOCKOUT = $0010;
  753. {$EXTERNALSYM UF_LOCKOUT}
  754. UF_PASSWD_NOTREQD = $0020;
  755. {$EXTERNALSYM UF_PASSWD_NOTREQD}
  756. UF_PASSWD_CANT_CHANGE = $0040;
  757. {$EXTERNALSYM UF_PASSWD_CANT_CHANGE}
  758. UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = $0080;
  759. {$EXTERNALSYM UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED}
  760. //
  761. // Account type bits as part of usri_flags.
  762. //
  763. UF_TEMP_DUPLICATE_ACCOUNT = $0100;
  764. {$EXTERNALSYM UF_TEMP_DUPLICATE_ACCOUNT}
  765. UF_NORMAL_ACCOUNT = $0200;
  766. {$EXTERNALSYM UF_NORMAL_ACCOUNT}
  767. UF_INTERDOMAIN_TRUST_ACCOUNT = $0800;
  768. {$EXTERNALSYM UF_INTERDOMAIN_TRUST_ACCOUNT}
  769. UF_WORKSTATION_TRUST_ACCOUNT = $1000;
  770. {$EXTERNALSYM UF_WORKSTATION_TRUST_ACCOUNT}
  771. UF_SERVER_TRUST_ACCOUNT = $2000;
  772. {$EXTERNALSYM UF_SERVER_TRUST_ACCOUNT}
  773. UF_MACHINE_ACCOUNT_MASK = UF_INTERDOMAIN_TRUST_ACCOUNT or UF_WORKSTATION_TRUST_ACCOUNT or UF_SERVER_TRUST_ACCOUNT;
  774. {$EXTERNALSYM UF_MACHINE_ACCOUNT_MASK}
  775. UF_ACCOUNT_TYPE_MASK = UF_TEMP_DUPLICATE_ACCOUNT or UF_NORMAL_ACCOUNT or UF_INTERDOMAIN_TRUST_ACCOUNT or UF_WORKSTATION_TRUST_ACCOUNT or UF_SERVER_TRUST_ACCOUNT;
  776. {$EXTERNALSYM UF_ACCOUNT_TYPE_MASK}
  777. UF_DONT_EXPIRE_PASSWD = $10000;
  778. {$EXTERNALSYM UF_DONT_EXPIRE_PASSWD}
  779. UF_MNS_LOGON_ACCOUNT = $20000;
  780. {$EXTERNALSYM UF_MNS_LOGON_ACCOUNT}
  781. UF_SMARTCARD_REQUIRED = $40000;
  782. {$EXTERNALSYM UF_SMARTCARD_REQUIRED}
  783. UF_TRUSTED_FOR_DELEGATION = $80000;
  784. {$EXTERNALSYM UF_TRUSTED_FOR_DELEGATION}
  785. UF_NOT_DELEGATED = $100000;
  786. {$EXTERNALSYM UF_NOT_DELEGATED}
  787. UF_USE_DES_KEY_ONLY = $200000;
  788. {$EXTERNALSYM UF_USE_DES_KEY_ONLY}
  789. UF_DONT_REQUIRE_PREAUTH = $400000;
  790. {$EXTERNALSYM UF_DONT_REQUIRE_PREAUTH}
  791. UF_PASSWORD_EXPIRED = DWORD($800000);
  792. {$EXTERNALSYM UF_PASSWORD_EXPIRED}
  793. UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION = $1000000;
  794. {$EXTERNALSYM UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION}
  795. UF_SETTABLE_BITS =
  796. UF_SCRIPT or
  797. UF_ACCOUNTDISABLE or
  798. UF_LOCKOUT or
  799. UF_HOMEDIR_REQUIRED or
  800. UF_PASSWD_NOTREQD or
  801. UF_PASSWD_CANT_CHANGE or
  802. UF_ACCOUNT_TYPE_MASK or
  803. UF_DONT_EXPIRE_PASSWD or
  804. UF_MNS_LOGON_ACCOUNT or
  805. UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED or
  806. UF_SMARTCARD_REQUIRED or
  807. UF_TRUSTED_FOR_DELEGATION or
  808. UF_NOT_DELEGATED or
  809. UF_USE_DES_KEY_ONLY or
  810. UF_DONT_REQUIRE_PREAUTH or
  811. UF_PASSWORD_EXPIRED or
  812. UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION;
  813. {$EXTERNALSYM UF_SETTABLE_BITS}
  814. //
  815. // bit masks for the NetUserEnum filter parameter.
  816. //
  817. FILTER_TEMP_DUPLICATE_ACCOUNT = $0001;
  818. {$EXTERNALSYM FILTER_TEMP_DUPLICATE_ACCOUNT}
  819. FILTER_NORMAL_ACCOUNT = $0002;
  820. {$EXTERNALSYM FILTER_NORMAL_ACCOUNT}
  821. // #define FILTER_PROXY_ACCOUNT (0x0004)
  822. FILTER_INTERDOMAIN_TRUST_ACCOUNT = $0008;
  823. {$EXTERNALSYM FILTER_INTERDOMAIN_TRUST_ACCOUNT}
  824. FILTER_WORKSTATION_TRUST_ACCOUNT = $0010;
  825. {$EXTERNALSYM FILTER_WORKSTATION_TRUST_ACCOUNT}
  826. FILTER_SERVER_TRUST_ACCOUNT = $0020;
  827. {$EXTERNALSYM FILTER_SERVER_TRUST_ACCOUNT}
  828. //
  829. // bit masks for the NetUserGetLocalGroups flags
  830. //
  831. LG_INCLUDE_INDIRECT = $0001;
  832. {$EXTERNALSYM LG_INCLUDE_INDIRECT}
  833. //
  834. // Bit masks for field usri2_auth_flags of USER_INFO_2.
  835. //
  836. AF_OP_PRINT = $1;
  837. {$EXTERNALSYM AF_OP_PRINT}
  838. AF_OP_COMM = $2;
  839. {$EXTERNALSYM AF_OP_COMM}
  840. AF_OP_SERVER = $4;
  841. {$EXTERNALSYM AF_OP_SERVER}
  842. AF_OP_ACCOUNTS = $8;
  843. {$EXTERNALSYM AF_OP_ACCOUNTS}
  844. AF_SETTABLE_BITS = AF_OP_PRINT or AF_OP_COMM or AF_OP_SERVER or AF_OP_ACCOUNTS;
  845. {$EXTERNALSYM AF_SETTABLE_BITS}
  846. //
  847. // UAS role manifests under NETLOGON
  848. //
  849. UAS_ROLE_STANDALONE = 0;
  850. {$EXTERNALSYM UAS_ROLE_STANDALONE}
  851. UAS_ROLE_MEMBER = 1;
  852. {$EXTERNALSYM UAS_ROLE_MEMBER}
  853. UAS_ROLE_BACKUP = 2;
  854. {$EXTERNALSYM UAS_ROLE_BACKUP}
  855. UAS_ROLE_PRIMARY = 3;
  856. {$EXTERNALSYM UAS_ROLE_PRIMARY}
  857. //
  858. // Values for ParmError for NetUserSetInfo.
  859. //
  860. USER_NAME_PARMNUM = 1;
  861. {$EXTERNALSYM USER_NAME_PARMNUM}
  862. USER_PASSWORD_PARMNUM = 3;
  863. {$EXTERNALSYM USER_PASSWORD_PARMNUM}
  864. USER_PASSWORD_AGE_PARMNUM = 4;
  865. {$EXTERNALSYM USER_PASSWORD_AGE_PARMNUM}
  866. USER_PRIV_PARMNUM = 5;
  867. {$EXTERNALSYM USER_PRIV_PARMNUM}
  868. USER_HOME_DIR_PARMNUM = 6;
  869. {$EXTERNALSYM USER_HOME_DIR_PARMNUM}
  870. USER_COMMENT_PARMNUM = 7;
  871. {$EXTERNALSYM USER_COMMENT_PARMNUM}
  872. USER_FLAGS_PARMNUM = 8;
  873. {$EXTERNALSYM USER_FLAGS_PARMNUM}
  874. USER_SCRIPT_PATH_PARMNUM = 9;
  875. {$EXTERNALSYM USER_SCRIPT_PATH_PARMNUM}
  876. USER_AUTH_FLAGS_PARMNUM = 10;
  877. {$EXTERNALSYM USER_AUTH_FLAGS_PARMNUM}
  878. USER_FULL_NAME_PARMNUM = 11;
  879. {$EXTERNALSYM USER_FULL_NAME_PARMNUM}
  880. USER_USR_COMMENT_PARMNUM = 12;
  881. {$EXTERNALSYM USER_USR_COMMENT_PARMNUM}
  882. USER_PARMS_PARMNUM = 13;
  883. {$EXTERNALSYM USER_PARMS_PARMNUM}
  884. USER_WORKSTATIONS_PARMNUM = 14;
  885. {$EXTERNALSYM USER_WORKSTATIONS_PARMNUM}
  886. USER_LAST_LOGON_PARMNUM = 15;
  887. {$EXTERNALSYM USER_LAST_LOGON_PARMNUM}
  888. USER_LAST_LOGOFF_PARMNUM = 16;
  889. {$EXTERNALSYM USER_LAST_LOGOFF_PARMNUM}
  890. USER_ACCT_EXPIRES_PARMNUM = 17;
  891. {$EXTERNALSYM USER_ACCT_EXPIRES_PARMNUM}
  892. USER_MAX_STORAGE_PARMNUM = 18;
  893. {$EXTERNALSYM USER_MAX_STORAGE_PARMNUM}
  894. USER_UNITS_PER_WEEK_PARMNUM = 19;
  895. {$EXTERNALSYM USER_UNITS_PER_WEEK_PARMNUM}
  896. USER_LOGON_HOURS_PARMNUM = 20;
  897. {$EXTERNALSYM USER_LOGON_HOURS_PARMNUM}
  898. USER_PAD_PW_COUNT_PARMNUM = 21;
  899. {$EXTERNALSYM USER_PAD_PW_COUNT_PARMNUM}
  900. USER_NUM_LOGONS_PARMNUM = 22;
  901. {$EXTERNALSYM USER_NUM_LOGONS_PARMNUM}
  902. USER_LOGON_SERVER_PARMNUM = 23;
  903. {$EXTERNALSYM USER_LOGON_SERVER_PARMNUM}
  904. USER_COUNTRY_CODE_PARMNUM = 24;
  905. {$EXTERNALSYM USER_COUNTRY_CODE_PARMNUM}
  906. USER_CODE_PAGE_PARMNUM = 25;
  907. {$EXTERNALSYM USER_CODE_PAGE_PARMNUM}
  908. USER_PRIMARY_GROUP_PARMNUM = 51;
  909. {$EXTERNALSYM USER_PRIMARY_GROUP_PARMNUM}
  910. USER_PROFILE = 52; // ?? Delete when convenient
  911. {$EXTERNALSYM USER_PROFILE}
  912. USER_PROFILE_PARMNUM = 52;
  913. {$EXTERNALSYM USER_PROFILE_PARMNUM}
  914. USER_HOME_DIR_DRIVE_PARMNUM = 53;
  915. {$EXTERNALSYM USER_HOME_DIR_DRIVE_PARMNUM}
  916. //
  917. // the new infolevel counterparts of the old info level + parmnum
  918. //
  919. USER_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_NAME_PARMNUM;
  920. {$EXTERNALSYM USER_NAME_INFOLEVEL}
  921. USER_PASSWORD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_PARMNUM;
  922. {$EXTERNALSYM USER_PASSWORD_INFOLEVEL}
  923. USER_PASSWORD_AGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_AGE_PARMNUM;
  924. {$EXTERNALSYM USER_PASSWORD_AGE_INFOLEVEL}
  925. USER_PRIV_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_PRIV_PARMNUM;
  926. {$EXTERNALSYM USER_PRIV_INFOLEVEL}
  927. USER_HOME_DIR_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_PARMNUM;
  928. {$EXTERNALSYM USER_HOME_DIR_INFOLEVEL}
  929. USER_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_COMMENT_PARMNUM;
  930. {$EXTERNALSYM USER_COMMENT_INFOLEVEL}
  931. USER_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_FLAGS_PARMNUM;
  932. {$EXTERNALSYM USER_FLAGS_INFOLEVEL}
  933. USER_SCRIPT_PATH_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_SCRIPT_PATH_PARMNUM;
  934. {$EXTERNALSYM USER_SCRIPT_PATH_INFOLEVEL}
  935. USER_AUTH_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_AUTH_FLAGS_PARMNUM;
  936. {$EXTERNALSYM USER_AUTH_FLAGS_INFOLEVEL}
  937. USER_FULL_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_FULL_NAME_PARMNUM;
  938. {$EXTERNALSYM USER_FULL_NAME_INFOLEVEL}
  939. USER_USR_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_USR_COMMENT_PARMNUM;
  940. {$EXTERNALSYM USER_USR_COMMENT_INFOLEVEL}
  941. USER_PARMS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_PARMS_PARMNUM;
  942. {$EXTERNALSYM USER_PARMS_INFOLEVEL}
  943. USER_WORKSTATIONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_WORKSTATIONS_PARMNUM;
  944. {$EXTERNALSYM USER_WORKSTATIONS_INFOLEVEL}
  945. USER_LAST_LOGON_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGON_PARMNUM;
  946. {$EXTERNALSYM USER_LAST_LOGON_INFOLEVEL}
  947. USER_LAST_LOGOFF_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGOFF_PARMNUM;
  948. {$EXTERNALSYM USER_LAST_LOGOFF_INFOLEVEL}
  949. USER_ACCT_EXPIRES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_ACCT_EXPIRES_PARMNUM;
  950. {$EXTERNALSYM USER_ACCT_EXPIRES_INFOLEVEL}
  951. USER_MAX_STORAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_MAX_STORAGE_PARMNUM;
  952. {$EXTERNALSYM USER_MAX_STORAGE_INFOLEVEL}
  953. USER_UNITS_PER_WEEK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_UNITS_PER_WEEK_PARMNUM;
  954. {$EXTERNALSYM USER_UNITS_PER_WEEK_INFOLEVEL}
  955. USER_LOGON_HOURS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_LOGON_HOURS_PARMNUM;
  956. {$EXTERNALSYM USER_LOGON_HOURS_INFOLEVEL}
  957. USER_PAD_PW_COUNT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_PAD_PW_COUNT_PARMNUM;
  958. {$EXTERNALSYM USER_PAD_PW_COUNT_INFOLEVEL}
  959. USER_NUM_LOGONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_NUM_LOGONS_PARMNUM;
  960. {$EXTERNALSYM USER_NUM_LOGONS_INFOLEVEL}
  961. USER_LOGON_SERVER_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_LOGON_SERVER_PARMNUM;
  962. {$EXTERNALSYM USER_LOGON_SERVER_INFOLEVEL}
  963. USER_COUNTRY_CODE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_COUNTRY_CODE_PARMNUM;
  964. {$EXTERNALSYM USER_COUNTRY_CODE_INFOLEVEL}
  965. USER_CODE_PAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_CODE_PAGE_PARMNUM;
  966. {$EXTERNALSYM USER_CODE_PAGE_INFOLEVEL}
  967. USER_PRIMARY_GROUP_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_PRIMARY_GROUP_PARMNUM;
  968. {$EXTERNALSYM USER_PRIMARY_GROUP_INFOLEVEL}
  969. // todo USER_POSIX_ID_PARMNUM where is it defined?
  970. // USER_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_POSIX_ID_PARMNUM;
  971. // {$EXTERNALSYM USER_POSIX_ID_INFOLEVEL}
  972. USER_HOME_DIR_DRIVE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_DRIVE_PARMNUM;
  973. {$EXTERNALSYM USER_HOME_DIR_DRIVE_INFOLEVEL}
  974. //
  975. // For SetInfo call (parmnum 0) when password change not required
  976. //
  977. NULL_USERSETINFO_PASSWD = ' ';
  978. {$EXTERNALSYM NULL_USERSETINFO_PASSWD}
  979. TIMEQ_FOREVER = ULONG(-1);
  980. {$EXTERNALSYM TIMEQ_FOREVER}
  981. USER_MAXSTORAGE_UNLIMITED = ULONG(-1);
  982. {$EXTERNALSYM USER_MAXSTORAGE_UNLIMITED}
  983. USER_NO_LOGOFF = ULONG(-1);
  984. {$EXTERNALSYM USER_NO_LOGOFF}
  985. UNITS_PER_DAY = 24;
  986. {$EXTERNALSYM UNITS_PER_DAY}
  987. UNITS_PER_WEEK = UNITS_PER_DAY * 7;
  988. {$EXTERNALSYM UNITS_PER_WEEK}
  989. //
  990. // Privilege levels (USER_INFO_X field usriX_priv (X = 0/1)).
  991. //
  992. USER_PRIV_MASK = $3;
  993. {$EXTERNALSYM USER_PRIV_MASK}
  994. USER_PRIV_GUEST = 0;
  995. {$EXTERNALSYM USER_PRIV_GUEST}
  996. USER_PRIV_USER = 1;
  997. {$EXTERNALSYM USER_PRIV_USER}
  998. USER_PRIV_ADMIN = 2;
  999. {$EXTERNALSYM USER_PRIV_ADMIN}
  1000. //
  1001. // user modals related defaults
  1002. //
  1003. MAX_PASSWD_LEN = PWLEN;
  1004. {$EXTERNALSYM MAX_PASSWD_LEN}
  1005. DEF_MIN_PWLEN = 6;
  1006. {$EXTERNALSYM DEF_MIN_PWLEN}
  1007. DEF_PWUNIQUENESS = 5;
  1008. {$EXTERNALSYM DEF_PWUNIQUENESS}
  1009. DEF_MAX_PWHIST = 8;
  1010. {$EXTERNALSYM DEF_MAX_PWHIST}
  1011. DEF_MAX_PWAGE = TIMEQ_FOREVER; // forever
  1012. {$EXTERNALSYM DEF_MAX_PWAGE}
  1013. DEF_MIN_PWAGE = 0; // 0 days
  1014. {$EXTERNALSYM DEF_MIN_PWAGE}
  1015. DEF_FORCE_LOGOFF = ULONG($ffffffff); // never
  1016. {$EXTERNALSYM DEF_FORCE_LOGOFF}
  1017. DEF_MAX_BADPW = 0; // no limit
  1018. {$EXTERNALSYM DEF_MAX_BADPW}
  1019. ONE_DAY = ULONG(01*24*3600); // 01 day
  1020. {$EXTERNALSYM ONE_DAY}
  1021. //
  1022. // User Logon Validation (codes returned)
  1023. //
  1024. VALIDATED_LOGON = 0;
  1025. {$EXTERNALSYM VALIDATED_LOGON}
  1026. PASSWORD_EXPIRED = 2;
  1027. {$EXTERNALSYM PASSWORD_EXPIRED}
  1028. NON_VALIDATED_LOGON = 3;
  1029. {$EXTERNALSYM NON_VALIDATED_LOGON}
  1030. VALID_LOGOFF = 1;
  1031. {$EXTERNALSYM VALID_LOGOFF}
  1032. //
  1033. // parmnum manifests for user modals
  1034. //
  1035. MODALS_MIN_PASSWD_LEN_PARMNUM = 1;
  1036. {$EXTERNALSYM MODALS_MIN_PASSWD_LEN_PARMNUM}
  1037. MODALS_MAX_PASSWD_AGE_PARMNUM = 2;
  1038. {$EXTERNALSYM MODALS_MAX_PASSWD_AGE_PARMNUM}
  1039. MODALS_MIN_PASSWD_AGE_PARMNUM = 3;
  1040. {$EXTERNALSYM MODALS_MIN_PASSWD_AGE_PARMNUM}
  1041. MODALS_FORCE_LOGOFF_PARMNUM = 4;
  1042. {$EXTERNALSYM MODALS_FORCE_LOGOFF_PARMNUM}
  1043. MODALS_PASSWD_HIST_LEN_PARMNUM = 5;
  1044. {$EXTERNALSYM MODALS_PASSWD_HIST_LEN_PARMNUM}
  1045. MODALS_ROLE_PARMNUM = 6;
  1046. {$EXTERNALSYM MODALS_ROLE_PARMNUM}
  1047. MODALS_PRIMARY_PARMNUM = 7;
  1048. {$EXTERNALSYM MODALS_PRIMARY_PARMNUM}
  1049. MODALS_DOMAIN_NAME_PARMNUM = 8;
  1050. {$EXTERNALSYM MODALS_DOMAIN_NAME_PARMNUM}
  1051. MODALS_DOMAIN_ID_PARMNUM = 9;
  1052. {$EXTERNALSYM MODALS_DOMAIN_ID_PARMNUM}
  1053. MODALS_LOCKOUT_DURATION_PARMNUM = 10;
  1054. {$EXTERNALSYM MODALS_LOCKOUT_DURATION_PARMNUM}
  1055. MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM = 11;
  1056. {$EXTERNALSYM MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM}
  1057. MODALS_LOCKOUT_THRESHOLD_PARMNUM = 12;
  1058. {$EXTERNALSYM MODALS_LOCKOUT_THRESHOLD_PARMNUM}
  1059. //
  1060. // the new infolevel counterparts of the old info level + parmnum
  1061. //
  1062. MODALS_MIN_PASSWD_LEN_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_LEN_PARMNUM;
  1063. {$EXTERNALSYM MODALS_MIN_PASSWD_LEN_INFOLEVEL}
  1064. MODALS_MAX_PASSWD_AGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_MAX_PASSWD_AGE_PARMNUM;
  1065. {$EXTERNALSYM MODALS_MAX_PASSWD_AGE_INFOLEVEL}
  1066. MODALS_MIN_PASSWD_AGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_AGE_PARMNUM;
  1067. {$EXTERNALSYM MODALS_MIN_PASSWD_AGE_INFOLEVEL}
  1068. MODALS_FORCE_LOGOFF_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_FORCE_LOGOFF_PARMNUM;
  1069. {$EXTERNALSYM MODALS_FORCE_LOGOFF_INFOLEVEL}
  1070. MODALS_PASSWD_HIST_LEN_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_PASSWD_HIST_LEN_PARMNUM;
  1071. {$EXTERNALSYM MODALS_PASSWD_HIST_LEN_INFOLEVEL}
  1072. MODALS_ROLE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_ROLE_PARMNUM;
  1073. {$EXTERNALSYM MODALS_ROLE_INFOLEVEL}
  1074. MODALS_PRIMARY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_PRIMARY_PARMNUM;
  1075. {$EXTERNALSYM MODALS_PRIMARY_INFOLEVEL}
  1076. MODALS_DOMAIN_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_NAME_PARMNUM;
  1077. {$EXTERNALSYM MODALS_DOMAIN_NAME_INFOLEVEL}
  1078. MODALS_DOMAIN_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_ID_PARMNUM;
  1079. {$EXTERNALSYM MODALS_DOMAIN_ID_INFOLEVEL}
  1080. //
  1081. // Group Class
  1082. //
  1083. //
  1084. // Function Prototypes
  1085. //
  1086. function NetGroupAdd(servername: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
  1087. {$EXTERNALSYM NetGroupAdd}
  1088. function NetGroupAddUser(servername, GroupName, username: LPCWSTR): NET_API_STATUS; stdcall;
  1089. {$EXTERNALSYM NetGroupAddUser}
  1090. function NetGroupEnum(servername: LPCWSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; resume_handle: PDWORD_PTR): NET_API_STATUS; stdcall;
  1091. {$EXTERNALSYM NetGroupEnum}
  1092. function NetGroupGetInfo(servername, groupname: LPCWSTR; level: DWORD; bufptr: LPBYTE): NET_API_STATUS; stdcall;
  1093. {$EXTERNALSYM NetGroupGetInfo}
  1094. function NetGroupSetInfo(servername, groupname: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
  1095. {$EXTERNALSYM NetGroupSetInfo}
  1096. function NetGroupDel(servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS; stdcall;
  1097. {$EXTERNALSYM NetGroupDel}
  1098. function NetGroupDelUser(servername: LPCWSTR; GroupName: LPCWSTR; Username: LPCWSTR): NET_API_STATUS; stdcall;
  1099. {$EXTERNALSYM NetGroupDelUser}
  1100. function NetGroupGetUsers(servername, groupname: LPCWSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; ResumeHandle: PDWORD_PTR): NET_API_STATUS; stdcall;
  1101. {$EXTERNALSYM NetGroupGetUsers}
  1102. function NetGroupSetUsers(servername, groupname: LPCWSTR; level: DWORD; buf: LPBYTE; totalentries: DWORD): NET_API_STATUS; stdcall;
  1103. {$EXTERNALSYM NetGroupSetUsers}
  1104. //
  1105. // Data Structures - Group
  1106. //
  1107. type
  1108. LPGROUP_INFO_0 = ^GROUP_INFO_0;
  1109. {$EXTERNALSYM LPGROUP_INFO_0}
  1110. PGROUP_INFO_0 = ^GROUP_INFO_0;
  1111. {$EXTERNALSYM PGROUP_INFO_0}
  1112. _GROUP_INFO_0 = record
  1113. grpi0_name: LPWSTR;
  1114. end;
  1115. {$EXTERNALSYM _GROUP_INFO_0}
  1116. GROUP_INFO_0 = _GROUP_INFO_0;
  1117. {$EXTERNALSYM GROUP_INFO_0}
  1118. TGroupInfo0 = GROUP_INFO_0;
  1119. PGroupInfo0 = PGROUP_INFO_0;
  1120. LPGROUP_INFO_1 = ^GROUP_INFO_1;
  1121. {$EXTERNALSYM LPGROUP_INFO_1}
  1122. PGROUP_INFO_1 = ^GROUP_INFO_1;
  1123. {$EXTERNALSYM PGROUP_INFO_1}
  1124. _GROUP_INFO_1 = record
  1125. grpi1_name: LPWSTR;
  1126. grpi1_comment: LPWSTR;
  1127. end;
  1128. {$EXTERNALSYM _GROUP_INFO_1}
  1129. GROUP_INFO_1 = _GROUP_INFO_1;
  1130. {$EXTERNALSYM GROUP_INFO_1}
  1131. TGroupInfo1 = GROUP_INFO_1;
  1132. PGroupInfo1 = PGROUP_INFO_1;
  1133. LPGROUP_INFO_2 = ^GROUP_INFO_2;
  1134. {$EXTERNALSYM LPGROUP_INFO_2}
  1135. PGROUP_INFO_2 = ^GROUP_INFO_2;
  1136. {$EXTERNALSYM PGROUP_INFO_2}
  1137. _GROUP_INFO_2 = record
  1138. grpi2_name: LPWSTR;
  1139. grpi2_comment: LPWSTR;
  1140. grpi2_group_id: DWORD;
  1141. grpi2_attributes: DWORD;
  1142. end;
  1143. {$EXTERNALSYM _GROUP_INFO_2}
  1144. GROUP_INFO_2 = _GROUP_INFO_2;
  1145. {$EXTERNALSYM GROUP_INFO_2}
  1146. TGroupInfo2 = GROUP_INFO_2;
  1147. PGroupInfo2 = PGROUP_INFO_2;
  1148. LPGROUP_INFO_3 = ^GROUP_INFO_3;
  1149. {$EXTERNALSYM LPGROUP_INFO_3}
  1150. PGROUP_INFO_3 = ^GROUP_INFO_3;
  1151. {$EXTERNALSYM PGROUP_INFO_3}
  1152. _GROUP_INFO_3 = record
  1153. grpi3_name: LPWSTR;
  1154. grpi3_comment: LPWSTR;
  1155. grpi3_group_sid: PSID;
  1156. grpi3_attributes: DWORD;
  1157. end;
  1158. {$EXTERNALSYM _GROUP_INFO_3}
  1159. GROUP_INFO_3 = _GROUP_INFO_3;
  1160. {$EXTERNALSYM GROUP_INFO_3}
  1161. TGroupInfo3 = GROUP_INFO_3;
  1162. PGroupInfo3 = PGROUP_INFO_3;
  1163. LPGROUP_INFO_1002 = ^GROUP_INFO_1002;
  1164. {$EXTERNALSYM LPGROUP_INFO_1002}
  1165. PGROUP_INFO_1002 = ^GROUP_INFO_1002;
  1166. {$EXTERNALSYM PGROUP_INFO_1002}
  1167. _GROUP_INFO_1002 = record
  1168. grpi1002_comment: LPWSTR;
  1169. end;
  1170. {$EXTERNALSYM _GROUP_INFO_1002}
  1171. GROUP_INFO_1002 = _GROUP_INFO_1002;
  1172. {$EXTERNALSYM GROUP_INFO_1002}
  1173. TGroupInfo1002 = GROUP_INFO_1002;
  1174. PGroupInfo1002 = PGROUP_INFO_1002;
  1175. LPGROUP_INFO_1005 = ^GROUP_INFO_1005;
  1176. {$EXTERNALSYM LPGROUP_INFO_1005}
  1177. PGROUP_INFO_1005 = ^GROUP_INFO_1005;
  1178. {$EXTERNALSYM PGROUP_INFO_1005}
  1179. _GROUP_INFO_1005 = record
  1180. grpi1005_attributes: DWORD;
  1181. end;
  1182. {$EXTERNALSYM _GROUP_INFO_1005}
  1183. GROUP_INFO_1005 = _GROUP_INFO_1005;
  1184. {$EXTERNALSYM GROUP_INFO_1005}
  1185. TGroupInfo1005 = GROUP_INFO_1005;
  1186. PGroupInfo1005 = PGROUP_INFO_1005;
  1187. LPGROUP_USERS_INFO_0 = ^GROUP_USERS_INFO_0;
  1188. {$EXTERNALSYM LPGROUP_USERS_INFO_0}
  1189. PGROUP_USERS_INFO_0 = ^GROUP_USERS_INFO_0;
  1190. {$EXTERNALSYM PGROUP_USERS_INFO_0}
  1191. _GROUP_USERS_INFO_0 = record
  1192. grui0_name: LPWSTR;
  1193. end;
  1194. {$EXTERNALSYM _GROUP_USERS_INFO_0}
  1195. GROUP_USERS_INFO_0 = _GROUP_USERS_INFO_0;
  1196. {$EXTERNALSYM GROUP_USERS_INFO_0}
  1197. TGroupUsersInfo0 = GROUP_USERS_INFO_0;
  1198. PGroupUsersInfo0 = PGROUP_USERS_INFO_0;
  1199. LPGROUP_USERS_INFO_1 = ^GROUP_USERS_INFO_1;
  1200. {$EXTERNALSYM LPGROUP_USERS_INFO_1}
  1201. PGROUP_USERS_INFO_1 = ^GROUP_USERS_INFO_1;
  1202. {$EXTERNALSYM PGROUP_USERS_INFO_1}
  1203. _GROUP_USERS_INFO_1 = record
  1204. grui1_name: LPWSTR;
  1205. grui1_attributes: DWORD;
  1206. end;
  1207. {$EXTERNALSYM _GROUP_USERS_INFO_1}
  1208. GROUP_USERS_INFO_1 = _GROUP_USERS_INFO_1;
  1209. {$EXTERNALSYM GROUP_USERS_INFO_1}
  1210. TGroupUsersInfo1 = GROUP_USERS_INFO_1;
  1211. PGroupUsersInfo1 = PGROUP_USERS_INFO_1;
  1212. //
  1213. // Special Values and Constants - Group
  1214. //
  1215. const
  1216. GROUPIDMASK = $8000; // MSB set if uid refers to a group
  1217. {$EXTERNALSYM GROUPIDMASK}
  1218. //
  1219. // Predefined group for all normal users, administrators and guests
  1220. // LOCAL is a special group for pinball local security.
  1221. //
  1222. GROUP_SPECIALGRP_USERS = WideString('USERS');
  1223. {$EXTERNALSYM GROUP_SPECIALGRP_USERS}
  1224. GROUP_SPECIALGRP_ADMINS = WideString('ADMINS');
  1225. {$EXTERNALSYM GROUP_SPECIALGRP_ADMINS}
  1226. GROUP_SPECIALGRP_GUESTS = WideString('GUESTS');
  1227. {$EXTERNALSYM GROUP_SPECIALGRP_GUESTS}
  1228. GROUP_SPECIALGRP_LOCAL = WideString('LOCAL');
  1229. {$EXTERNALSYM GROUP_SPECIALGRP_LOCAL}
  1230. //
  1231. // parmnum manifests for SetInfo calls (only comment is settable)
  1232. //
  1233. GROUP_ALL_PARMNUM = 0;
  1234. {$EXTERNALSYM GROUP_ALL_PARMNUM}
  1235. GROUP_NAME_PARMNUM = 1;
  1236. {$EXTERNALSYM GROUP_NAME_PARMNUM}
  1237. GROUP_COMMENT_PARMNUM = 2;
  1238. {$EXTERNALSYM GROUP_COMMENT_PARMNUM}
  1239. GROUP_ATTRIBUTES_PARMNUM = 3;
  1240. {$EXTERNALSYM GROUP_ATTRIBUTES_PARMNUM}
  1241. //
  1242. // the new infolevel counterparts of the old info level + parmnum
  1243. //
  1244. GROUP_ALL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM;
  1245. {$EXTERNALSYM GROUP_ALL_INFOLEVEL}
  1246. GROUP_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM;
  1247. {$EXTERNALSYM GROUP_NAME_INFOLEVEL}
  1248. GROUP_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM;
  1249. {$EXTERNALSYM GROUP_COMMENT_INFOLEVEL}
  1250. GROUP_ATTRIBUTES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM;
  1251. {$EXTERNALSYM GROUP_ATTRIBUTES_INFOLEVEL}
  1252. // todo see GROUP_POSIX_ID_PARMNUM
  1253. // GROUP_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_POSIX_ID_PARMNUM;
  1254. // {$EXTERNALSYM GROUP_POSIX_ID_INFOLEVEL}
  1255. //
  1256. // LocalGroup Class
  1257. //
  1258. //
  1259. // Function Prototypes
  1260. //
  1261. function NetLocalGroupAdd(servername: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
  1262. {$EXTERNALSYM NetLocalGroupAdd}
  1263. function NetLocalGroupAddMember(servername, groupname: LPCWSTR; membersid: PSID): NET_API_STATUS; stdcall;
  1264. {$EXTERNALSYM NetLocalGroupAddMember}
  1265. function NetLocalGroupEnum(servername: LPCWSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; resumehandle: PDWORD_PTR): NET_API_STATUS; stdcall;
  1266. {$EXTERNALSYM NetLocalGroupEnum}
  1267. function NetLocalGroupGetInfo(servername, groupname: LPCWSTR; level: DWORD; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
  1268. {$EXTERNALSYM NetLocalGroupGetInfo}
  1269. function NetLocalGroupSetInfo(servername, groupname: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
  1270. {$EXTERNALSYM NetLocalGroupSetInfo}
  1271. function NetLocalGroupDel(servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS; stdcall;
  1272. {$EXTERNALSYM NetLocalGroupDel}
  1273. function NetLocalGroupDelMember(servername: LPCWSTR; groupname: LPCWSTR; membersid: PSID): NET_API_STATUS; stdcall;
  1274. {$EXTERNALSYM NetLocalGroupDelMember}
  1275. function NetLocalGroupGetMembers(servername, localgroupname: LPCWSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; resumehandle: PDWORD_PTR): NET_API_STATUS; stdcall;
  1276. {$EXTERNALSYM NetLocalGroupGetMembers}
  1277. function NetLocalGroupSetMembers(servername, groupname: LPCWSTR; level: DWORD; buf: LPBYTE; totalentries: DWORD): NET_API_STATUS; stdcall;
  1278. {$EXTERNALSYM NetLocalGroupSetMembers}
  1279. function NetLocalGroupAddMembers(servername, groupname: LPCWSTR; level: DWORD; buf: LPBYTE; totalentries: DWORD): NET_API_STATUS; stdcall;
  1280. {$EXTERNALSYM NetLocalGroupAddMembers}
  1281. function NetLocalGroupDelMembers(servername, groupname: LPCWSTR; level: DWORD; buf: LPBYTE; totalentries: DWORD): NET_API_STATUS; stdcall;
  1282. {$EXTERNALSYM NetLocalGroupDelMembers}
  1283. //
  1284. // Data Structures - LocalGroup
  1285. //
  1286. type
  1287. LPLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0;
  1288. {$EXTERNALSYM LPLOCALGROUP_INFO_0}
  1289. PLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0;
  1290. {$EXTERNALSYM PLOCALGROUP_INFO_0}
  1291. _LOCALGROUP_INFO_0 = record
  1292. lgrpi0_name: LPWSTR;
  1293. end;
  1294. {$EXTERNALSYM _LOCALGROUP_INFO_0}
  1295. LOCALGROUP_INFO_0 = _LOCALGROUP_INFO_0;
  1296. {$EXTERNALSYM LOCALGROUP_INFO_0}
  1297. TLocalGroupInfo0 = LOCALGROUP_INFO_0;
  1298. PLocalGroupInfo0 = PLOCALGROUP_INFO_0;
  1299. LPLOCALGROUP_INFO_1 = ^LOCALGROUP_INFO_1;
  1300. {$EXTERNALSYM LPLOCALGROUP_INFO_1}
  1301. PLOCALGROUP_INFO_1 = ^LOCALGROUP_INFO_1;
  1302. {$EXTERNALSYM PLOCALGROUP_INFO_1}
  1303. _LOCALGROUP_INFO_1 = record
  1304. lgrpi1_name: LPWSTR;
  1305. lgrpi1_comment: LPWSTR;
  1306. end;
  1307. {$EXTERNALSYM _LOCALGROUP_INFO_1}
  1308. LOCALGROUP_INFO_1 = _LOCALGROUP_INFO_1;
  1309. {$EXTERNALSYM LOCALGROUP_INFO_1}
  1310. TLocalGroupInfo1 = LOCALGROUP_INFO_1;
  1311. PLocalGroupInfo1 = PLOCALGROUP_INFO_1;
  1312. LPLOCALGROUP_INFO_1002 = ^LOCALGROUP_INFO_1002;
  1313. {$EXTERNALSYM LPLOCALGROUP_INFO_1002}
  1314. PLOCALGROUP_INFO_1002 = ^LOCALGROUP_INFO_1002;
  1315. {$EXTERNALSYM PLOCALGROUP_INFO_1002}
  1316. _LOCALGROUP_INFO_1002 = record
  1317. lgrpi1002_comment: LPWSTR;
  1318. end;
  1319. {$EXTERNALSYM _LOCALGROUP_INFO_1002}
  1320. LOCALGROUP_INFO_1002 = _LOCALGROUP_INFO_1002;
  1321. {$EXTERNALSYM LOCALGROUP_INFO_1002}
  1322. TLocalGroupInfo1002 = LOCALGROUP_INFO_1002;
  1323. PLocalGroupInfo1002 = PLOCALGROUP_INFO_1002;
  1324. LPLOCALGROUP_MEMBERS_INFO_0 = ^LOCALGROUP_MEMBERS_INFO_0;
  1325. {$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_0}
  1326. PLOCALGROUP_MEMBERS_INFO_0 = ^LOCALGROUP_MEMBERS_INFO_0;
  1327. {$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_0}
  1328. _LOCALGROUP_MEMBERS_INFO_0 = record
  1329. lgrmi0_sid: PSID;
  1330. end;
  1331. {$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_0}
  1332. LOCALGROUP_MEMBERS_INFO_0 = _LOCALGROUP_MEMBERS_INFO_0;
  1333. {$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_0}
  1334. TLocalGroupMembersInfo0 = LOCALGROUP_MEMBERS_INFO_0;
  1335. PLocalGroupMembersInfo0 = PLOCALGROUP_MEMBERS_INFO_0;
  1336. LPLOCALGROUP_MEMBERS_INFO_1 = ^LOCALGROUP_MEMBERS_INFO_1;
  1337. {$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_1}
  1338. PLOCALGROUP_MEMBERS_INFO_1 = ^LOCALGROUP_MEMBERS_INFO_1;
  1339. {$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_1}
  1340. _LOCALGROUP_MEMBERS_INFO_1 = record
  1341. lgrmi1_sid: PSID;
  1342. lgrmi1_sidusage: SID_NAME_USE;
  1343. lgrmi1_name: LPWSTR;
  1344. end;
  1345. {$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_1}
  1346. LOCALGROUP_MEMBERS_INFO_1 = _LOCALGROUP_MEMBERS_INFO_1;
  1347. {$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_1}
  1348. TLocalGroupMembersInfo1 = LOCALGROUP_MEMBERS_INFO_1;
  1349. PLocalGroupMembersInfo1 = PLOCALGROUP_MEMBERS_INFO_1;
  1350. LPLOCALGROUP_MEMBERS_INFO_2 = ^LOCALGROUP_MEMBERS_INFO_2;
  1351. {$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_2}
  1352. PLOCALGROUP_MEMBERS_INFO_2 = ^LOCALGROUP_MEMBERS_INFO_2;
  1353. {$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_2}
  1354. _LOCALGROUP_MEMBERS_INFO_2 = record
  1355. lgrmi2_sid: PSID;
  1356. lgrmi2_sidusage: SID_NAME_USE;
  1357. lgrmi2_domainandname: LPWSTR;
  1358. end;
  1359. {$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_2}
  1360. LOCALGROUP_MEMBERS_INFO_2 = _LOCALGROUP_MEMBERS_INFO_2;
  1361. {$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_2}
  1362. TLocalGroupMembersInfo2 = LOCALGROUP_MEMBERS_INFO_2;
  1363. PLocalGroupMembersInfo2 = PLOCALGROUP_MEMBERS_INFO_2;
  1364. LPLOCALGROUP_MEMBERS_INFO_3 = ^LOCALGROUP_MEMBERS_INFO_3;
  1365. {$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_3}
  1366. PLOCALGROUP_MEMBERS_INFO_3 = ^LOCALGROUP_MEMBERS_INFO_3;
  1367. {$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_3}
  1368. _LOCALGROUP_MEMBERS_INFO_3 = record
  1369. lgrmi3_domainandname: LPWSTR;
  1370. end;
  1371. {$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_3}
  1372. LOCALGROUP_MEMBERS_INFO_3 = _LOCALGROUP_MEMBERS_INFO_3;
  1373. {$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_3}
  1374. TLocalGroupMembersInfo3 = LOCALGROUP_MEMBERS_INFO_3;
  1375. PLocalGroupMembersInfo3 = PLOCALGROUP_MEMBERS_INFO_3;
  1376. LPLOCALGROUP_USERS_INFO_0 = ^LOCALGROUP_USERS_INFO_0;
  1377. {$EXTERNALSYM LPLOCALGROUP_USERS_INFO_0}
  1378. PLOCALGROUP_USERS_INFO_0 = ^LOCALGROUP_USERS_INFO_0;
  1379. {$EXTERNALSYM PLOCALGROUP_USERS_INFO_0}
  1380. _LOCALGROUP_USERS_INFO_0 = record
  1381. lgrui0_name: LPWSTR;
  1382. end;
  1383. {$EXTERNALSYM _LOCALGROUP_USERS_INFO_0}
  1384. LOCALGROUP_USERS_INFO_0 = _LOCALGROUP_USERS_INFO_0;
  1385. {$EXTERNALSYM LOCALGROUP_USERS_INFO_0}
  1386. TLocalGroupUsersInfo0 = LOCALGROUP_USERS_INFO_0;
  1387. PLocalGroupUsersInfo0 = PLOCALGROUP_USERS_INFO_0;
  1388. const
  1389. LOCALGROUP_NAME_PARMNUM = 1;
  1390. {$EXTERNALSYM LOCALGROUP_NAME_PARMNUM}
  1391. LOCALGROUP_COMMENT_PARMNUM = 2;
  1392. {$EXTERNALSYM LOCALGROUP_COMMENT_PARMNUM}
  1393. //
  1394. // Display Information APIs
  1395. //
  1396. function NetQueryDisplayInformation(ServerName: LPCWSTR; Level, Index, EntriesRequested, PreferredMaximumLength: DWORD; ReturnedEntryCount: LPDWORD; var SortedBuffer: PVOID): NET_API_STATUS; stdcall;
  1397. {$EXTERNALSYM NetQueryDisplayInformation}
  1398. function NetGetDisplayInformationIndex(ServerName: LPCWSTR; Level: DWORD; Prefix: LPCWSTR; Index: LPDWORD): NET_API_STATUS; stdcall;
  1399. {$EXTERNALSYM NetGetDisplayInformationIndex}
  1400. //
  1401. // QueryDisplayInformation levels
  1402. type
  1403. PNET_DISPLAY_USER = ^NET_DISPLAY_USER;
  1404. {$EXTERNALSYM PNET_DISPLAY_USER}
  1405. _NET_DISPLAY_USER = record
  1406. usri1_name: LPWSTR;
  1407. usri1_comment: LPWSTR;
  1408. usri1_flags: DWORD;
  1409. usri1_full_name: LPWSTR;
  1410. usri1_user_id: DWORD;
  1411. usri1_next_index: DWORD;
  1412. end;
  1413. {$EXTERNALSYM _NET_DISPLAY_USER}
  1414. NET_DISPLAY_USER = _NET_DISPLAY_USER;
  1415. {$EXTERNALSYM NET_DISPLAY_USER}
  1416. TNetDisplayUser = NET_DISPLAY_USER;
  1417. PNetDisplayUser = PNET_DISPLAY_USER;
  1418. PNET_DISPLAY_MACHINE = ^NET_DISPLAY_MACHINE;
  1419. {$EXTERNALSYM PNET_DISPLAY_MACHINE}
  1420. _NET_DISPLAY_MACHINE = record
  1421. usri2_name: LPWSTR;
  1422. usri2_comment: LPWSTR;
  1423. usri2_flags: DWORD;
  1424. usri2_user_id: DWORD;
  1425. usri2_next_index: DWORD;
  1426. end;
  1427. {$EXTERNALSYM _NET_DISPLAY_MACHINE}
  1428. NET_DISPLAY_MACHINE = _NET_DISPLAY_MACHINE;
  1429. {$EXTERNALSYM NET_DISPLAY_MACHINE}
  1430. TNetDisplayMachine = NET_DISPLAY_MACHINE;
  1431. PNetDisplayMachine = PNET_DISPLAY_MACHINE;
  1432. PNET_DISPLAY_GROUP = ^NET_DISPLAY_GROUP;
  1433. {$EXTERNALSYM PNET_DISPLAY_GROUP}
  1434. _NET_DISPLAY_GROUP = record
  1435. grpi3_name: LPWSTR;
  1436. grpi3_comment: LPWSTR;
  1437. grpi3_group_id: DWORD;
  1438. grpi3_attributes: DWORD;
  1439. grpi3_next_index: DWORD;
  1440. end;
  1441. {$EXTERNALSYM _NET_DISPLAY_GROUP}
  1442. NET_DISPLAY_GROUP = _NET_DISPLAY_GROUP;
  1443. {$EXTERNALSYM NET_DISPLAY_GROUP}
  1444. TNetDisplayGroup = NET_DISPLAY_GROUP;
  1445. PNetDisplayGroup = PNET_DISPLAY_GROUP;
  1446. //
  1447. // Access Class
  1448. //
  1449. //
  1450. // Function Prototypes - Access
  1451. //
  1452. //
  1453. // The NetAccess APIs are only available to downlevel
  1454. //
  1455. //#define NetAccessAdd RxNetAccessAdd
  1456. function NetAccessAdd(servername: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
  1457. {$EXTERNALSYM NetAccessAdd}
  1458. //#define NetAccessEnum RxNetAccessEnum
  1459. function NetAccessEnum(servername, BasePath: LPCWSTR; Recursive, level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries, resume_handle: LPDWORD): NET_API_STATUS; stdcall;
  1460. {$EXTERNALSYM NetAccessEnum}
  1461. //#define NetAccessGetInfo RxNetAccessGetInfo
  1462. function NetAccessGetInfo(servername, resource: LPCWSTR; level: DWORD; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
  1463. {$EXTERNALSYM NetAccessGetInfo}
  1464. //#define NetAccessSetInfo RxNetAccessSetInfo
  1465. function NetAccessSetInfo(servername, resource: LPCWSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
  1466. {$EXTERNALSYM NetAccessSetInfo}
  1467. //#define NetAccessDel RxNetAccessDel
  1468. function NetAccessDel(servername: LPCWSTR; resource: LPCWSTR): NET_API_STATUS; stdcall;
  1469. {$EXTERNALSYM NetAccessDel}
  1470. //#define NetAccessGetUserPerms RxNetAccessGetUserPerms
  1471. function NetAccessGetUserPerms(servername, UGname, resource: LPCWSTR; Perms: LPDWORD): NET_API_STATUS; stdcall;
  1472. {$EXTERNALSYM NetAccessGetUserPerms}
  1473. //
  1474. // Data Structures - Access
  1475. //
  1476. type
  1477. LPACCESS_INFO_0 = ^ACCESS_INFO_0;
  1478. {$EXTERNALSYM LPACCESS_INFO_0}
  1479. PACCESS_INFO_0 = ^ACCESS_INFO_0;
  1480. {$EXTERNALSYM PACCESS_INFO_0}
  1481. _ACCESS_INFO_0 = record
  1482. acc0_resource_name: LPWSTR;
  1483. end;
  1484. {$EXTERNALSYM _ACCESS_INFO_0}
  1485. ACCESS_INFO_0 = _ACCESS_INFO_0;
  1486. {$EXTERNALSYM ACCESS_INFO_0}
  1487. TAccessInfo0 = ACCESS_INFO_0;
  1488. PAccessInfo0 = PACCESS_INFO_0;
  1489. LPACCESS_INFO_1 = ^ACCESS_INFO_1;
  1490. {$EXTERNALSYM LPACCESS_INFO_1}
  1491. PACCESS_INFO_1 = ^ACCESS_INFO_1;
  1492. {$EXTERNALSYM PACCESS_INFO_1}
  1493. _ACCESS_INFO_1 = record
  1494. acc1_resource_name: LPWSTR;
  1495. acc1_attr: DWORD;
  1496. acc1_count: DWORD;
  1497. end;
  1498. {$EXTERNALSYM _ACCESS_INFO_1}
  1499. ACCESS_INFO_1 = _ACCESS_INFO_1;
  1500. {$EXTERNALSYM ACCESS_INFO_1}
  1501. TAccessInfo1 = ACCESS_INFO_1;
  1502. PAccessInfo1 = PACCESS_INFO_1;
  1503. LPACCESS_INFO_1002 = ^ACCESS_INFO_1002;
  1504. {$EXTERNALSYM LPACCESS_INFO_1002}
  1505. PACCESS_INFO_1002 = ^ACCESS_INFO_1002;
  1506. {$EXTERNALSYM PACCESS_INFO_1002}
  1507. _ACCESS_INFO_1002 = record
  1508. acc1002_attr: DWORD;
  1509. end;
  1510. {$EXTERNALSYM _ACCESS_INFO_1002}
  1511. ACCESS_INFO_1002 = _ACCESS_INFO_1002;
  1512. {$EXTERNALSYM ACCESS_INFO_1002}
  1513. TAccessInfo1002 = ACCESS_INFO_1002;
  1514. PAccessInfo1002 = PACCESS_INFO_1002;
  1515. LPACCESS_LIST = ^ACCESS_LIST;
  1516. {$EXTERNALSYM LPACCESS_LIST}
  1517. PACCESS_LIST = ^ACCESS_LIST;
  1518. {$EXTERNALSYM PACCESS_LIST}
  1519. _ACCESS_LIST = record
  1520. acl_ugname: LPWSTR;
  1521. acl_access: DWORD;
  1522. end;
  1523. {$EXTERNALSYM _ACCESS_LIST}
  1524. ACCESS_LIST = _ACCESS_LIST;
  1525. {$EXTERNALSYM ACCESS_LIST}
  1526. TAccessList = ACCESS_LIST;
  1527. PAccessList = PACCESS_LIST;
  1528. //
  1529. // Special Values and Constants - Access
  1530. //
  1531. //
  1532. // Maximum number of permission entries for each resource.
  1533. //
  1534. const
  1535. MAXPERMENTRIES = 64;
  1536. {$EXTERNALSYM MAXPERMENTRIES}
  1537. //
  1538. // Bit values for the access permissions. ACCESS_ALL is a handy
  1539. // way to specify maximum permissions. These are used in
  1540. // acl_access field of access_list structures.
  1541. //
  1542. ACCESS_READ = $01;
  1543. {$EXTERNALSYM ACCESS_READ}
  1544. ACCESS_WRITE = $02;
  1545. {$EXTERNALSYM ACCESS_WRITE}
  1546. ACCESS_CREATE = $04;
  1547. {$EXTERNALSYM ACCESS_CREATE}
  1548. ACCESS_EXEC = $08;
  1549. {$EXTERNALSYM ACCESS_EXEC}
  1550. ACCESS_DELETE = $10;
  1551. {$EXTERNALSYM ACCESS_DELETE}
  1552. ACCESS_ATRIB = $20;
  1553. {$EXTERNALSYM ACCESS_ATRIB}
  1554. ACCESS_PERM = $40;
  1555. {$EXTERNALSYM ACCESS_PERM}
  1556. ACCESS_GROUP = $8000;
  1557. {$EXTERNALSYM ACCESS_GROUP}
  1558. ACCESS_NONE = 0;
  1559. {$EXTERNALSYM ACCESS_NONE}
  1560. ACCESS_ALL = ACCESS_READ or ACCESS_WRITE or ACCESS_CREATE or ACCESS_EXEC or ACCESS_DELETE or ACCESS_ATRIB or ACCESS_PERM;
  1561. {$EXTERNALSYM ACCESS_ALL}
  1562. //
  1563. // Bit values for the acc1_attr field of the ACCESS_INFO_1 structure.
  1564. //
  1565. ACCESS_AUDIT = $1;
  1566. {$EXTERNALSYM ACCESS_AUDIT}
  1567. ACCESS_SUCCESS_OPEN = $10;
  1568. {$EXTERNALSYM ACCESS_SUCCESS_OPEN}
  1569. ACCESS_SUCCESS_WRITE = $20;
  1570. {$EXTERNALSYM ACCESS_SUCCESS_WRITE}
  1571. ACCESS_SUCCESS_DELETE = $40;
  1572. {$EXTERNALSYM ACCESS_SUCCESS_DELETE}
  1573. ACCESS_SUCCESS_ACL = $80;
  1574. {$EXTERNALSYM ACCESS_SUCCESS_ACL}
  1575. ACCESS_SUCCESS_MASK = $F0;
  1576. {$EXTERNALSYM ACCESS_SUCCESS_MASK}
  1577. ACCESS_FAIL_OPEN = $100;
  1578. {$EXTERNALSYM ACCESS_FAIL_OPEN}
  1579. ACCESS_FAIL_WRITE = $200;
  1580. {$EXTERNALSYM ACCESS_FAIL_WRITE}
  1581. ACCESS_FAIL_DELETE = $400;
  1582. {$EXTERNALSYM ACCESS_FAIL_DELETE}
  1583. ACCESS_FAIL_ACL = $800;
  1584. {$EXTERNALSYM ACCESS_FAIL_ACL}
  1585. ACCESS_FAIL_MASK = $F00;
  1586. {$EXTERNALSYM ACCESS_FAIL_MASK}
  1587. ACCESS_FAIL_SHIFT = 4;
  1588. {$EXTERNALSYM ACCESS_FAIL_SHIFT}
  1589. //
  1590. // Parmnum value for NetAccessSetInfo.
  1591. //
  1592. ACCESS_RESOURCE_NAME_PARMNUM = 1;
  1593. {$EXTERNALSYM ACCESS_RESOURCE_NAME_PARMNUM}
  1594. ACCESS_ATTR_PARMNUM = 2;
  1595. {$EXTERNALSYM ACCESS_ATTR_PARMNUM}
  1596. ACCESS_COUNT_PARMNUM = 3;
  1597. {$EXTERNALSYM ACCESS_COUNT_PARMNUM}
  1598. ACCESS_ACCESS_LIST_PARMNUM = 4;
  1599. {$EXTERNALSYM ACCESS_ACCESS_LIST_PARMNUM}
  1600. //
  1601. // the new infolevel counterparts of the old info level + parmnum
  1602. //
  1603. ACCESS_RESOURCE_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + ACCESS_RESOURCE_NAME_PARMNUM;
  1604. {$EXTERNALSYM ACCESS_RESOURCE_NAME_INFOLEVEL}
  1605. ACCESS_ATTR_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + ACCESS_ATTR_PARMNUM;
  1606. {$EXTERNALSYM ACCESS_ATTR_INFOLEVEL}
  1607. ACCESS_COUNT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + ACCESS_COUNT_PARMNUM;
  1608. {$EXTERNALSYM ACCESS_COUNT_INFOLEVEL}
  1609. ACCESS_ACCESS_LIST_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + ACCESS_ACCESS_LIST_PARMNUM;
  1610. {$EXTERNALSYM ACCESS_ACCESS_LIST_INFOLEVEL}
  1611. //
  1612. // ACCESS_LETTERS defines a letter for each bit position in
  1613. // the acl_access field of struct access_list. Note that some
  1614. // bits have a corresponding letter of ' ' (space).
  1615. //
  1616. ACCESS_LETTERS = 'RWCXDAP ';
  1617. {$EXTERNALSYM ACCESS_LETTERS}
  1618. // ********************************
  1619. //
  1620. // Password Checking API structures
  1621. //
  1622. // ********************************
  1623. //
  1624. // What kind of password checking is to be performed?
  1625. // NetValidateAuthentication : Check if the authentication can be done
  1626. // NetValidatePasswordChange: Check if the password can be changed
  1627. // NetValidatePasswordReset: Reset the password to the given value
  1628. //
  1629. type
  1630. _NET_VALIDATE_PASSWORD_TYPE = (
  1631. NetValidateFiller0,
  1632. NetValidateAuthentication,
  1633. NetValidatePasswordChange,
  1634. NetValidatePasswordReset);
  1635. {$EXTERNALSYM _NET_VALIDATE_PASSWORD_TYPE}
  1636. NET_VALIDATE_PASSWORD_TYPE = _NET_VALIDATE_PASSWORD_TYPE;
  1637. {$EXTERNALSYM NET_VALIDATE_PASSWORD_TYPE}
  1638. PNET_VALIDATE_PASSWORD_TYPE = ^NET_VALIDATE_PASSWORD_TYPE;
  1639. {$EXTERNALSYM PNET_VALIDATE_PASSWORD_TYPE}
  1640. TNetValidatePasswordType = NET_VALIDATE_PASSWORD_TYPE;
  1641. PNetValidatePasswordType = PNET_VALIDATE_PASSWORD_TYPE;
  1642. //
  1643. // Structure to keep the password hash
  1644. //
  1645. _NET_VALIDATE_PASSWORD_HASH = record
  1646. Length: ULONG;
  1647. Hash: LPBYTE;
  1648. end;
  1649. {$EXTERNALSYM _NET_VALIDATE_PASSWORD_HASH}
  1650. NET_VALIDATE_PASSWORD_HASH = _NET_VALIDATE_PASSWORD_HASH;
  1651. {$EXTERNALSYM NET_VALIDATE_PASSWORD_HASH}
  1652. PNET_VALIDATE_PASSWORD_HASH = ^NET_VALIDATE_PASSWORD_HASH;
  1653. {$EXTERNALSYM PNET_VALIDATE_PASSWORD_HASH}
  1654. TNetValidatePasswordHash = NET_VALIDATE_PASSWORD_HASH;
  1655. PNetValidatePasswordHash = PNET_VALIDATE_PASSWORD_HASH;
  1656. // To be used with PresentFields member of NET_VALIDATE_PERSISTED_FIELDS
  1657. const
  1658. NET_VALIDATE_PASSWORD_LAST_SET = $00000001;
  1659. {$EXTERNALSYM NET_VALIDATE_PASSWORD_LAST_SET}
  1660. NET_VALIDATE_BAD_PASSWORD_TIME = $00000002;
  1661. {$EXTERNALSYM NET_VALIDATE_BAD_PASSWORD_TIME}
  1662. NET_VALIDATE_LOCKOUT_TIME = $00000004;
  1663. {$EXTERNALSYM NET_VALIDATE_LOCKOUT_TIME}
  1664. NET_VALIDATE_BAD_PASSWORD_COUNT = $00000008;
  1665. {$EXTERNALSYM NET_VALIDATE_BAD_PASSWORD_COUNT}
  1666. NET_VALIDATE_PASSWORD_HISTORY_LENGTH = $00000010;
  1667. {$EXTERNALSYM NET_VALIDATE_PASSWORD_HISTORY_LENGTH}
  1668. NET_VALIDATE_PASSWORD_HISTORY = $00000020;
  1669. {$EXTERNALSYM NET_VALIDATE_PASSWORD_HISTORY}
  1670. //
  1671. // Structure to keep information about the password and related things.
  1672. // Present Fields: (used only in output args) which fields are changed.
  1673. // See the constants above.
  1674. // PasswordLastSet: When the password is last set.
  1675. // BadPasswordTime: When the password was incorrect for the last time.
  1676. // LockoutTime: When the account is locked out. If the account is not locked out
  1677. // it is 0.
  1678. // BadPasswordCount: How many times the password has given incorrectly in the
  1679. // Observation Window.
  1680. // PasswordHistoryLength: How many passwords are kept in the history
  1681. // PasswordHistory: Password hashes that are in the history
  1682. //
  1683. type
  1684. _NET_VALIDATE_PERSISTED_FIELDS = record
  1685. PresentFields: ULONG;
  1686. PasswordLastSet: FILETIME;
  1687. BadPasswordTime: FILETIME;
  1688. LockoutTime: FILETIME;
  1689. BadPasswordCount: ULONG;
  1690. PasswordHistoryLength: ULONG;
  1691. PasswordHistory: PNET_VALIDATE_PASSWORD_HASH;
  1692. end;
  1693. {$EXTERNALSYM _NET_VALIDATE_PERSISTED_FIELDS}
  1694. NET_VALIDATE_PERSISTED_FIELDS = _NET_VALIDATE_PERSISTED_FIELDS;
  1695. {$EXTERNALSYM NET_VALIDATE_PERSISTED_FIELDS}
  1696. PNET_VALIDATE_PERSISTED_FIELDS = ^NET_VALIDATE_PERSISTED_FIELDS;
  1697. {$EXTERNALSYM PNET_VALIDATE_PERSISTED_FIELDS}
  1698. TNetValidatePersistedFields = NET_VALIDATE_PERSISTED_FIELDS;
  1699. PNetValidatePersistedFields = PNET_VALIDATE_PERSISTED_FIELDS;
  1700. //
  1701. // Output Arg
  1702. // ChangedPersistedFields: Any changes to the password related info
  1703. // ValidationStatus: Shows the result of the request
  1704. //
  1705. _NET_VALIDATE_OUTPUT_ARG = record
  1706. ChangedPersistedFields: NET_VALIDATE_PERSISTED_FIELDS;
  1707. ValidationStatus: NET_API_STATUS;
  1708. end;
  1709. {$EXTERNALSYM _NET_VALIDATE_OUTPUT_ARG}
  1710. NET_VALIDATE_OUTPUT_ARG = _NET_VALIDATE_OUTPUT_ARG;
  1711. {$EXTERNALSYM NET_VALIDATE_OUTPUT_ARG}
  1712. PNET_VALIDATE_OUTPUT_ARG = ^NET_VALIDATE_OUTPUT_ARG;
  1713. {$EXTERNALSYM PNET_VALIDATE_OUTPUT_ARG}
  1714. TNetValidateOutputArg = NET_VALIDATE_OUTPUT_ARG;
  1715. PNetValidateOutputArg = PNET_VALIDATE_OUTPUT_ARG;
  1716. //
  1717. // If authentication type of password check is to be made,
  1718. // this kind of input must be used
  1719. //
  1720. // InputPersistedFields: Information about the account to be logged into
  1721. // PasswordMatched: Indicates the result of the application's authentication of the supplied password
  1722. //
  1723. _NET_VALIDATE_AUTHENTICATION_INPUT_ARG = record
  1724. InputPersistedFields: NET_VALIDATE_PERSISTED_FIELDS;
  1725. PasswordMatched: BOOLEAN;
  1726. end;
  1727. {$EXTERNALSYM _NET_VALIDATE_AUTHENTICATION_INPUT_ARG}
  1728. NET_VALIDATE_AUTHENTICATION_INPUT_ARG = _NET_VALIDATE_AUTHENTICATION_INPUT_ARG;
  1729. {$EXTERNALSYM NET_VALIDATE_AUTHENTICATION_INPUT_ARG}
  1730. PNET_VALIDATE_AUTHENTICATION_INPUT_ARG = ^NET_VALIDATE_AUTHENTICATION_INPUT_ARG;
  1731. {$EXTERNALSYM PNET_VALIDATE_AUTHENTICATION_INPUT_ARG}
  1732. TNetValidateAuthenticationInputArg = NET_VALIDATE_AUTHENTICATION_INPUT_ARG;
  1733. PNetValidateAuthenticationInputArg = PNET_VALIDATE_AUTHENTICATION_INPUT_ARG;
  1734. //
  1735. // If password change type of check is to be made,
  1736. // this kind of input must be used
  1737. //
  1738. // InputPersistedFields: Information about the account to be logged into
  1739. // ClearPassword: The string which password is going to be
  1740. // UserAccountName: Name of the user account
  1741. // HashedPassword: Hash of the string that the password is going to be
  1742. // PasswordMatch: denotes if the old password supplied by user matched or not
  1743. //
  1744. _NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG = record
  1745. InputPersistedFields: NET_VALIDATE_PERSISTED_FIELDS;
  1746. ClearPassword: LPWSTR;
  1747. UserAccountName: LPWSTR;
  1748. HashedPassword: NET_VALIDATE_PASSWORD_HASH;
  1749. PasswordMatch: BOOLEAN;
  1750. end;
  1751. {$EXTERNALSYM _NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG}
  1752. NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG = _NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG;
  1753. {$EXTERNALSYM NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG}
  1754. PNET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG = ^NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG;
  1755. {$EXTERNALSYM PNET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG}
  1756. TNetValidatePasswordChangeInputArg = NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG;
  1757. PNetValidatePasswordChangeInputArg = PNET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG;
  1758. //
  1759. // If password reset type of check is to be made,
  1760. // this kind of input must be used
  1761. //
  1762. // InputPersistedFields: Information about the account to be logged into
  1763. // ClearPassword: The string which password is going to be
  1764. // UserAccountName: Name of the user account
  1765. // HashedPassword: Hash of the string that the password is going to be
  1766. // PasswordMustChangeAtNextLogon: Password must change for the user to be logged in
  1767. // ClearLockout: If the account was locked out, this field can be used to clear lockout
  1768. //
  1769. _NET_VALIDATE_PASSWORD_RESET_INPUT_ARG = record
  1770. InputPersistedFields: NET_VALIDATE_PERSISTED_FIELDS;
  1771. ClearPassword: LPWSTR;
  1772. UserAccountName: LPWSTR;
  1773. HashedPassword: NET_VALIDATE_PASSWORD_HASH;
  1774. PasswordMustChangeAtNextLogon: BOOLEAN;
  1775. ClearLockout: BOOLEAN;
  1776. end;
  1777. {$EXTERNALSYM _NET_VALIDATE_PASSWORD_RESET_INPUT_ARG}
  1778. NET_VALIDATE_PASSWORD_RESET_INPUT_ARG = _NET_VALIDATE_PASSWORD_RESET_INPUT_ARG;
  1779. {$EXTERNALSYM NET_VALIDATE_PASSWORD_RESET_INPUT_ARG}
  1780. PNET_VALIDATE_PASSWORD_RESET_INPUT_ARG = ^NET_VALIDATE_PASSWORD_RESET_INPUT_ARG;
  1781. {$EXTERNALSYM PNET_VALIDATE_PASSWORD_RESET_INPUT_ARG}
  1782. TNetValidatePasswordResetInputArg = NET_VALIDATE_PASSWORD_RESET_INPUT_ARG;
  1783. PNetValidatePasswordResetInputArg = PNET_VALIDATE_PASSWORD_RESET_INPUT_ARG;
  1784. //
  1785. // Password Checking API structures end here
  1786. //
  1787. function NetValidatePasswordPolicy(ServerName: LPWSTR; Qualifier: LPVOID; ValidationType: NET_VALIDATE_PASSWORD_TYPE;
  1788. InputArg: LPVOID; var OutputArg: LPVOID): NET_API_STATUS; stdcall;
  1789. {$EXTERNALSYM NetValidatePasswordPolicy}
  1790. function NetValidatePasswordPolicyFree(var OutputArg: LPVOID): NET_API_STATUS; stdcall;
  1791. {$EXTERNALSYM NetValidatePasswordPolicyFree}
  1792. //
  1793. // Domain Class
  1794. //
  1795. //
  1796. // Function Prototypes - Domain
  1797. //
  1798. function NetGetDCName(servername, domainname: LPCWSTR; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
  1799. {$EXTERNALSYM NetGetDCName}
  1800. function NetGetAnyDCName(servername, domainname: LPCWSTR; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
  1801. {$EXTERNALSYM NetGetAnyDCName}
  1802. function I_NetLogonControl(ServerName: LPCWSTR; FunctionCode, QueryLevel: DWORD; var Buffer: LPBYTE): NET_API_STATUS; stdcall;
  1803. {$EXTERNALSYM I_NetLogonControl}
  1804. function I_NetLogonControl2(ServerName: LPCWSTR; FunctionCode, QueryLevel: DWORD; Data: LPBYTE; var Buffer: LPBYTE): NET_API_STATUS; stdcall;
  1805. {$EXTERNALSYM I_NetLogonControl2}
  1806. function NetEnumerateTrustedDomains(ServerName: LPWSTR; var DomainNames: LPWSTR): NTSTATUS; stdcall;
  1807. {$EXTERNALSYM NetEnumerateTrustedDomains}
  1808. //
  1809. // Special Values and Constants - Domain
  1810. //
  1811. //
  1812. // FunctionCode values for I_NetLogonControl.
  1813. //
  1814. // NOTE : if you change the following NETLOGON_CONTROL_* values,
  1815. // change them in net\svcdlls\logonsrv\logon.idl file also.
  1816. //
  1817. const
  1818. NETLOGON_CONTROL_QUERY = 1; // No-op: just query
  1819. {$EXTERNALSYM NETLOGON_CONTROL_QUERY}
  1820. NETLOGON_CONTROL_REPLICATE = 2; // Force replicate on BDC
  1821. {$EXTERNALSYM NETLOGON_CONTROL_REPLICATE}
  1822. NETLOGON_CONTROL_SYNCHRONIZE = 3; // Force synchronize on BDC
  1823. {$EXTERNALSYM NETLOGON_CONTROL_SYNCHRONIZE}
  1824. NETLOGON_CONTROL_PDC_REPLICATE = 4; // Force PDC to broadcast change
  1825. {$EXTERNALSYM NETLOGON_CONTROL_PDC_REPLICATE}
  1826. NETLOGON_CONTROL_REDISCOVER = 5; // Force to re-discover trusted domain DCs
  1827. {$EXTERNALSYM NETLOGON_CONTROL_REDISCOVER}
  1828. NETLOGON_CONTROL_TC_QUERY = 6; // Query status of specified trusted channel status
  1829. {$EXTERNALSYM NETLOGON_CONTROL_TC_QUERY}
  1830. NETLOGON_CONTROL_TRANSPORT_NOTIFY = 7; // Notify netlogon that a new transport has come online
  1831. {$EXTERNALSYM NETLOGON_CONTROL_TRANSPORT_NOTIFY}
  1832. NETLOGON_CONTROL_FIND_USER = 8; // Find named user in a trusted domain
  1833. {$EXTERNALSYM NETLOGON_CONTROL_FIND_USER}
  1834. NETLOGON_CONTROL_CHANGE_PASSWORD = 9; // Change machine password on a secure channel to a trusted domain
  1835. {$EXTERNALSYM NETLOGON_CONTROL_CHANGE_PASSWORD}
  1836. NETLOGON_CONTROL_TC_VERIFY = 10; // Verify status of specified trusted channel
  1837. {$EXTERNALSYM NETLOGON_CONTROL_TC_VERIFY}
  1838. NETLOGON_CONTROL_FORCE_DNS_REG = 11; // Force DNS re-registration of all registered records
  1839. {$EXTERNALSYM NETLOGON_CONTROL_FORCE_DNS_REG}
  1840. NETLOGON_CONTROL_QUERY_DNS_REG = 12; // Query the status of DNS updates
  1841. {$EXTERNALSYM NETLOGON_CONTROL_QUERY_DNS_REG}
  1842. // Debug function codes
  1843. NETLOGON_CONTROL_UNLOAD_NETLOGON_DLL = $FFFB;
  1844. {$EXTERNALSYM NETLOGON_CONTROL_UNLOAD_NETLOGON_DLL}
  1845. NETLOGON_CONTROL_BACKUP_CHANGE_LOG = $FFFC;
  1846. {$EXTERNALSYM NETLOGON_CONTROL_BACKUP_CHANGE_LOG}
  1847. NETLOGON_CONTROL_TRUNCATE_LOG = $FFFD;
  1848. {$EXTERNALSYM NETLOGON_CONTROL_TRUNCATE_LOG}
  1849. NETLOGON_CONTROL_SET_DBFLAG = $FFFE;
  1850. {$EXTERNALSYM NETLOGON_CONTROL_SET_DBFLAG}
  1851. NETLOGON_CONTROL_BREAKPOINT = $FFFF;
  1852. {$EXTERNALSYM NETLOGON_CONTROL_BREAKPOINT}
  1853. //
  1854. // Query level 1 for I_NetLogonControl
  1855. //
  1856. type
  1857. PNETLOGON_INFO_1 = ^NETLOGON_INFO_1;
  1858. {$EXTERNALSYM PNETLOGON_INFO_1}
  1859. _NETLOGON_INFO_1 = record
  1860. netlog1_flags: DWORD;
  1861. netlog1_pdc_connection_status: NET_API_STATUS;
  1862. end;
  1863. {$EXTERNALSYM _NETLOGON_INFO_1}
  1864. NETLOGON_INFO_1 = _NETLOGON_INFO_1;
  1865. {$EXTERNALSYM NETLOGON_INFO_1}
  1866. TNetLogonInfo1 = NETLOGON_INFO_1;
  1867. PNetLogonInfo1 = PNETLOGON_INFO_1;
  1868. PNETLOGON_INFO_2 = ^NETLOGON_INFO_2;
  1869. {$EXTERNALSYM PNETLOGON_INFO_2}
  1870. _NETLOGON_INFO_2 = record
  1871. netlog2_flags: DWORD;
  1872. //
  1873. // If NETLOGON_VERIFY_STATUS_RETURNED bit is set in
  1874. // netlog2_flags, the following field will return
  1875. // the status of trust verification. Otherwise,
  1876. // the field will return the status of the secure
  1877. // channel to the primary domain of the machine
  1878. // (useful for BDCs only).
  1879. //
  1880. netlog2_pdc_connection_status: NET_API_STATUS;
  1881. netlog2_trusted_dc_name: LPWSTR;
  1882. netlog2_tc_connection_status: NET_API_STATUS;
  1883. end;
  1884. {$EXTERNALSYM _NETLOGON_INFO_2}
  1885. NETLOGON_INFO_2 = _NETLOGON_INFO_2;
  1886. {$EXTERNALSYM NETLOGON_INFO_2}
  1887. TNetLogonInfo2 = NETLOGON_INFO_2;
  1888. PNetLogonInfo2 = PNETLOGON_INFO_2;
  1889. PNETLOGON_INFO_3 = ^NETLOGON_INFO_3;
  1890. {$EXTERNALSYM PNETLOGON_INFO_3}
  1891. _NETLOGON_INFO_3 = record
  1892. netlog3_flags: DWORD;
  1893. netlog3_logon_attempts: DWORD;
  1894. netlog3_reserved1: DWORD;
  1895. netlog3_reserved2: DWORD;
  1896. netlog3_reserved3: DWORD;
  1897. netlog3_reserved4: DWORD;
  1898. netlog3_reserved5: DWORD;
  1899. end;
  1900. {$EXTERNALSYM _NETLOGON_INFO_3}
  1901. NETLOGON_INFO_3 = _NETLOGON_INFO_3;
  1902. {$EXTERNALSYM NETLOGON_INFO_3}
  1903. TNetLogonInfo3 = NETLOGON_INFO_3;
  1904. PNetLogonInfo3 = PNETLOGON_INFO_3;
  1905. PNETLOGON_INFO_4 = ^NETLOGON_INFO_4;
  1906. {$EXTERNALSYM PNETLOGON_INFO_4}
  1907. _NETLOGON_INFO_4 = record
  1908. netlog4_trusted_dc_name: LPWSTR;
  1909. netlog4_trusted_domain_name: LPWSTR;
  1910. end;
  1911. {$EXTERNALSYM _NETLOGON_INFO_4}
  1912. NETLOGON_INFO_4 = _NETLOGON_INFO_4;
  1913. {$EXTERNALSYM NETLOGON_INFO_4}
  1914. TNetLogonInfo4 = NETLOGON_INFO_4;
  1915. PNetLogonInfo4 = PNETLOGON_INFO_4;
  1916. //
  1917. // Values of netlog1_flags
  1918. //
  1919. const
  1920. NETLOGON_REPLICATION_NEEDED = $01; // Database is out of date
  1921. {$EXTERNALSYM NETLOGON_REPLICATION_NEEDED}
  1922. NETLOGON_REPLICATION_IN_PROGRESS = $02; // Replication is happening now
  1923. {$EXTERNALSYM NETLOGON_REPLICATION_IN_PROGRESS}
  1924. NETLOGON_FULL_SYNC_REPLICATION = $04; // full sync replication required/progress
  1925. {$EXTERNALSYM NETLOGON_FULL_SYNC_REPLICATION}
  1926. NETLOGON_REDO_NEEDED = $08; // Redo of previous replication needed
  1927. {$EXTERNALSYM NETLOGON_REDO_NEEDED}
  1928. NETLOGON_HAS_IP = $10; // The trusted domain DC has an IP address
  1929. {$EXTERNALSYM NETLOGON_HAS_IP}
  1930. NETLOGON_HAS_TIMESERV = $20; // The trusted domain DC runs the Windows Time Service
  1931. {$EXTERNALSYM NETLOGON_HAS_TIMESERV}
  1932. NETLOGON_DNS_UPDATE_FAILURE = $40; // There was a failure in the last update for one of the DNS records
  1933. {$EXTERNALSYM NETLOGON_DNS_UPDATE_FAILURE}
  1934. NETLOGON_VERIFY_STATUS_RETURNED = $80; // Trust verification status returned in netlog2_pdc_connection_status
  1935. {$EXTERNALSYM NETLOGON_VERIFY_STATUS_RETURNED}
  1936. {$ENDIF JWA_INTERFACESECTION}
  1937. {$IFNDEF JWA_INCLUDEMODE}
  1938. implementation
  1939. uses
  1940. JwaWinDLLNames;
  1941. {$ENDIF !JWA_INCLUDEMODE}
  1942. {$IFDEF JWA_IMPLEMENTATIONSECTION}
  1943. {$IFDEF DYNAMIC_LINK}
  1944. var
  1945. _NetUserAdd: Pointer;
  1946. function NetUserAdd;
  1947. begin
  1948. GetProcedureAddress(_NetUserAdd, netapi32, 'NetUserAdd');
  1949. asm
  1950. MOV ESP, EBP
  1951. POP EBP
  1952. JMP [_NetUserAdd]
  1953. end;
  1954. end;
  1955. var
  1956. _NetUserEnum: Pointer;
  1957. function NetUserEnum;
  1958. begin
  1959. GetProcedureAddress(_NetUserEnum, netapi32, 'NetUserEnum');
  1960. asm
  1961. MOV ESP, EBP
  1962. POP EBP
  1963. JMP [_NetUserEnum]
  1964. end;
  1965. end;
  1966. var
  1967. _NetUserGetInfo: Pointer;
  1968. function NetUserGetInfo;
  1969. begin
  1970. GetProcedureAddress(_NetUserGetInfo, netapi32, 'NetUserGetInfo');
  1971. asm
  1972. MOV ESP, EBP
  1973. POP EBP
  1974. JMP [_NetUserGetInfo]
  1975. end;
  1976. end;
  1977. var
  1978. _NetUserSetInfo: Pointer;
  1979. function NetUserSetInfo;
  1980. begin
  1981. GetProcedureAddress(_NetUserSetInfo, netapi32, 'NetUserSetInfo');
  1982. asm
  1983. MOV ESP, EBP
  1984. POP EBP
  1985. JMP [_NetUserSetInfo]
  1986. end;
  1987. end;
  1988. var
  1989. _NetUserDel: Pointer;
  1990. function NetUserDel;
  1991. begin
  1992. GetProcedureAddress(_NetUserDel, netapi32, 'NetUserDel');
  1993. asm
  1994. MOV ESP, EBP
  1995. POP EBP
  1996. JMP [_NetUserDel]
  1997. end;
  1998. end;
  1999. var
  2000. _NetUserGetGroups: Pointer;
  2001. function NetUserGetGroups;
  2002. begin
  2003. GetProcedureAddress(_NetUserGetGroups, netapi32, 'NetUserGetGroups');
  2004. asm
  2005. MOV ESP, EBP
  2006. POP EBP
  2007. JMP [_NetUserGetGroups]
  2008. end;
  2009. end;
  2010. var
  2011. _NetUserSetGroups: Pointer;
  2012. function NetUserSetGroups;
  2013. begin
  2014. GetProcedureAddress(_NetUserSetGroups, netapi32, 'NetUserSetGroups');
  2015. asm
  2016. MOV ESP, EBP
  2017. POP EBP
  2018. JMP [_NetUserSetGroups]
  2019. end;
  2020. end;
  2021. var
  2022. _NetUserGetLocalGroups: Pointer;
  2023. function NetUserGetLocalGroups;
  2024. begin
  2025. GetProcedureAddress(_NetUserGetLocalGroups, netapi32, 'NetUserGetLocalGroups');
  2026. asm
  2027. MOV ESP, EBP
  2028. POP EBP
  2029. JMP [_NetUserGetLocalGroups]
  2030. end;
  2031. end;
  2032. var
  2033. _NetUserModalsGet: Pointer;
  2034. function NetUserModalsGet;
  2035. begin
  2036. GetProcedureAddress(_NetUserModalsGet, netapi32, 'NetUserModalsGet');
  2037. asm
  2038. MOV ESP, EBP
  2039. POP EBP
  2040. JMP [_NetUserModalsGet]
  2041. end;
  2042. end;
  2043. var
  2044. _NetUserModalsSet: Pointer;
  2045. function NetUserModalsSet;
  2046. begin
  2047. GetProcedureAddress(_NetUserModalsSet, netapi32, 'NetUserModalsSet');
  2048. asm
  2049. MOV ESP, EBP
  2050. POP EBP
  2051. JMP [_NetUserModalsSet]
  2052. end;
  2053. end;
  2054. var
  2055. _NetUserChangePassword: Pointer;
  2056. function NetUserChangePassword;
  2057. begin
  2058. GetProcedureAddress(_NetUserChangePassword, netapi32, 'NetUserChangePassword');
  2059. asm
  2060. MOV ESP, EBP
  2061. POP EBP
  2062. JMP [_NetUserChangePassword]
  2063. end;
  2064. end;
  2065. var
  2066. _NetGroupAdd: Pointer;
  2067. function NetGroupAdd;
  2068. begin
  2069. GetProcedureAddress(_NetGroupAdd, netapi32, 'NetGroupAdd');
  2070. asm
  2071. MOV ESP, EBP
  2072. POP EBP
  2073. JMP [_NetGroupAdd]
  2074. end;
  2075. end;
  2076. var
  2077. _NetGroupAddUser: Pointer;
  2078. function NetGroupAddUser;
  2079. begin
  2080. GetProcedureAddress(_NetGroupAddUser, netapi32, 'NetGroupAddUser');
  2081. asm
  2082. MOV ESP, EBP
  2083. POP EBP
  2084. JMP [_NetGroupAddUser]
  2085. end;
  2086. end;
  2087. var
  2088. _NetGroupEnum: Pointer;
  2089. function NetGroupEnum;
  2090. begin
  2091. GetProcedureAddress(_NetGroupEnum, netapi32, 'NetGroupEnum');
  2092. asm
  2093. MOV ESP, EBP
  2094. POP EBP
  2095. JMP [_NetGroupEnum]
  2096. end;
  2097. end;
  2098. var
  2099. _NetGroupGetInfo: Pointer;
  2100. function NetGroupGetInfo;
  2101. begin
  2102. GetProcedureAddress(_NetGroupGetInfo, netapi32, 'NetGroupGetInfo');
  2103. asm
  2104. MOV ESP, EBP
  2105. POP EBP
  2106. JMP [_NetGroupGetInfo]
  2107. end;
  2108. end;
  2109. var
  2110. _NetGroupSetInfo: Pointer;
  2111. function NetGroupSetInfo;
  2112. begin
  2113. GetProcedureAddress(_NetGroupSetInfo, netapi32, 'NetGroupSetInfo');
  2114. asm
  2115. MOV ESP, EBP
  2116. POP EBP
  2117. JMP [_NetGroupSetInfo]
  2118. end;
  2119. end;
  2120. var
  2121. _NetGroupDel: Pointer;
  2122. function NetGroupDel;
  2123. begin
  2124. GetProcedureAddress(_NetGroupDel, netapi32, 'NetGroupDel');
  2125. asm
  2126. MOV ESP, EBP
  2127. POP EBP
  2128. JMP [_NetGroupDel]
  2129. end;
  2130. end;
  2131. var
  2132. _NetGroupDelUser: Pointer;
  2133. function NetGroupDelUser;
  2134. begin
  2135. GetProcedureAddress(_NetGroupDelUser, netapi32, 'NetGroupDelUser');
  2136. asm
  2137. MOV ESP, EBP
  2138. POP EBP
  2139. JMP [_NetGroupDelUser]
  2140. end;
  2141. end;
  2142. var
  2143. _NetGroupGetUsers: Pointer;
  2144. function NetGroupGetUsers;
  2145. begin
  2146. GetProcedureAddress(_NetGroupGetUsers, netapi32, 'NetGroupGetUsers');
  2147. asm
  2148. MOV ESP, EBP
  2149. POP EBP
  2150. JMP [_NetGroupGetUsers]
  2151. end;
  2152. end;
  2153. var
  2154. _NetGroupSetUsers: Pointer;
  2155. function NetGroupSetUsers;
  2156. begin
  2157. GetProcedureAddress(_NetGroupSetUsers, netapi32, 'NetGroupSetUsers');
  2158. asm
  2159. MOV ESP, EBP
  2160. POP EBP
  2161. JMP [_NetGroupSetUsers]
  2162. end;
  2163. end;
  2164. var
  2165. _NetLocalGroupAdd: Pointer;
  2166. function NetLocalGroupAdd;
  2167. begin
  2168. GetProcedureAddress(_NetLocalGroupAdd, netapi32, 'NetLocalGroupAdd');
  2169. asm
  2170. MOV ESP, EBP
  2171. POP EBP
  2172. JMP [_NetLocalGroupAdd]
  2173. end;
  2174. end;
  2175. var
  2176. _NetLocalGroupAddMember: Pointer;
  2177. function NetLocalGroupAddMember;
  2178. begin
  2179. GetProcedureAddress(_NetLocalGroupAddMember, netapi32, 'NetLocalGroupAddMember');
  2180. asm
  2181. MOV ESP, EBP
  2182. POP EBP
  2183. JMP [_NetLocalGroupAddMember]
  2184. end;
  2185. end;
  2186. var
  2187. _NetLocalGroupEnum: Pointer;
  2188. function NetLocalGroupEnum;
  2189. begin
  2190. GetProcedureAddress(_NetLocalGroupEnum, netapi32, 'NetLocalGroupEnum');
  2191. asm
  2192. MOV ESP, EBP
  2193. POP EBP
  2194. JMP [_NetLocalGroupEnum]
  2195. end;
  2196. end;
  2197. var
  2198. _NetLocalGroupGetInfo: Pointer;
  2199. function NetLocalGroupGetInfo;
  2200. begin
  2201. GetProcedureAddress(_NetLocalGroupGetInfo, netapi32, 'NetLocalGroupGetInfo');
  2202. asm
  2203. MOV ESP, EBP
  2204. POP EBP
  2205. JMP [_NetLocalGroupGetInfo]
  2206. end;
  2207. end;
  2208. var
  2209. _NetLocalGroupSetInfo: Pointer;
  2210. function NetLocalGroupSetInfo;
  2211. begin
  2212. GetProcedureAddress(_NetLocalGroupSetInfo, netapi32, 'NetLocalGroupSetInfo');
  2213. asm
  2214. MOV ESP, EBP
  2215. POP EBP
  2216. JMP [_NetLocalGroupSetInfo]
  2217. end;
  2218. end;
  2219. var
  2220. _NetLocalGroupDel: Pointer;
  2221. function NetLocalGroupDel;
  2222. begin
  2223. GetProcedureAddress(_NetLocalGroupDel, netapi32, 'NetLocalGroupDel');
  2224. asm
  2225. MOV ESP, EBP
  2226. POP EBP
  2227. JMP [_NetLocalGroupDel]
  2228. end;
  2229. end;
  2230. var
  2231. _NetLocalGroupDelMember: Pointer;
  2232. function NetLocalGroupDelMember;
  2233. begin
  2234. GetProcedureAddress(_NetLocalGroupDelMember, netapi32, 'NetLocalGroupDelMember');
  2235. asm
  2236. MOV ESP, EBP
  2237. POP EBP
  2238. JMP [_NetLocalGroupDelMember]
  2239. end;
  2240. end;
  2241. var
  2242. _NetLocalGroupGetMembers: Pointer;
  2243. function NetLocalGroupGetMembers;
  2244. begin
  2245. GetProcedureAddress(_NetLocalGroupGetMembers, netapi32, 'NetLocalGroupGetMembers');
  2246. asm
  2247. MOV ESP, EBP
  2248. POP EBP
  2249. JMP [_NetLocalGroupGetMembers]
  2250. end;
  2251. end;
  2252. var
  2253. _NetLocalGroupSetMembers: Pointer;
  2254. function NetLocalGroupSetMembers;
  2255. begin
  2256. GetProcedureAddress(_NetLocalGroupSetMembers, netapi32, 'NetLocalGroupSetMembers');
  2257. asm
  2258. MOV ESP, EBP
  2259. POP EBP
  2260. JMP [_NetLocalGroupSetMembers]
  2261. end;
  2262. end;
  2263. var
  2264. _NetLocalGroupAddMembers: Pointer;
  2265. function NetLocalGroupAddMembers;
  2266. begin
  2267. GetProcedureAddress(_NetLocalGroupAddMembers, netapi32, 'NetLocalGroupAddMembers');
  2268. asm
  2269. MOV ESP, EBP
  2270. POP EBP
  2271. JMP [_NetLocalGroupAddMembers]
  2272. end;
  2273. end;
  2274. var
  2275. _NetLocalGroupDelMembers: Pointer;
  2276. function NetLocalGroupDelMembers;
  2277. begin
  2278. GetProcedureAddress(_NetLocalGroupDelMembers, netapi32, 'NetLocalGroupDelMembers');
  2279. asm
  2280. MOV ESP, EBP
  2281. POP EBP
  2282. JMP [_NetLocalGroupDelMembers]
  2283. end;
  2284. end;
  2285. var
  2286. _NetQueryDisplayInformation: Pointer;
  2287. function NetQueryDisplayInformation;
  2288. begin
  2289. GetProcedureAddress(_NetQueryDisplayInformation, netapi32, 'NetQueryDisplayInformation');
  2290. asm
  2291. MOV ESP, EBP
  2292. POP EBP
  2293. JMP [_NetQueryDisplayInformation]
  2294. end;
  2295. end;
  2296. var
  2297. _NetGetDisplayInformationIndex: Pointer;
  2298. function NetGetDisplayInformationIndex;
  2299. begin
  2300. GetProcedureAddress(_NetGetDisplayInformationIndex, netapi32, 'NetGetDisplayInformationIndex');
  2301. asm
  2302. MOV ESP, EBP
  2303. POP EBP
  2304. JMP [_NetGetDisplayInformationIndex]
  2305. end;
  2306. end;
  2307. var
  2308. _NetAccessAdd: Pointer;
  2309. function NetAccessAdd;
  2310. begin
  2311. GetProcedureAddress(_NetAccessAdd, netapi32, 'NetAccessAdd');
  2312. asm
  2313. MOV ESP, EBP
  2314. POP EBP
  2315. JMP [_NetAccessAdd]
  2316. end;
  2317. end;
  2318. var
  2319. _NetAccessEnum: Pointer;
  2320. function NetAccessEnum;
  2321. begin
  2322. GetProcedureAddress(_NetAccessEnum, netapi32, 'NetAccessEnum');
  2323. asm
  2324. MOV ESP, EBP
  2325. POP EBP
  2326. JMP [_NetAccessEnum]
  2327. end;
  2328. end;
  2329. var
  2330. _NetAccessGetInfo: Pointer;
  2331. function NetAccessGetInfo;
  2332. begin
  2333. GetProcedureAddress(_NetAccessGetInfo, netapi32, 'NetAccessGetInfo');
  2334. asm
  2335. MOV ESP, EBP
  2336. POP EBP
  2337. JMP [_NetAccessGetInfo]
  2338. end;
  2339. end;
  2340. var
  2341. _NetAccessSetInfo: Pointer;
  2342. function NetAccessSetInfo;
  2343. begin
  2344. GetProcedureAddress(_NetAccessSetInfo, netapi32, 'NetAccessSetInfo');
  2345. asm
  2346. MOV ESP, EBP
  2347. POP EBP
  2348. JMP [_NetAccessSetInfo]
  2349. end;
  2350. end;
  2351. var
  2352. _NetAccessDel: Pointer;
  2353. function NetAccessDel;
  2354. begin
  2355. GetProcedureAddress(_NetAccessDel, netapi32, 'NetAccessDel');
  2356. asm
  2357. MOV ESP, EBP
  2358. POP EBP
  2359. JMP [_NetAccessDel]
  2360. end;
  2361. end;
  2362. var
  2363. _NetAccessGetUserPerms: Pointer;
  2364. function NetAccessGetUserPerms;
  2365. begin
  2366. GetProcedureAddress(_NetAccessGetUserPerms, netapi32, 'NetAccessGetUserPerms');
  2367. asm
  2368. MOV ESP, EBP
  2369. POP EBP
  2370. JMP [_NetAccessGetUserPerms]
  2371. end;
  2372. end;
  2373. var
  2374. _NetValidatePasswordPolicy: Pointer;
  2375. function NetValidatePasswordPolicy;
  2376. begin
  2377. GetProcedureAddress(_NetValidatePasswordPolicy, netapi32, 'NetValidatePasswordPolicy');
  2378. asm
  2379. MOV ESP, EBP
  2380. POP EBP
  2381. JMP [_NetValidatePasswordPolicy]
  2382. end;
  2383. end;
  2384. var
  2385. _NetValidatePasswordPolicyFree: Pointer;
  2386. function NetValidatePasswordPolicyFree;
  2387. begin
  2388. GetProcedureAddress(_NetValidatePasswordPolicyFree, netapi32, 'NetValidatePasswordPolicyFree');
  2389. asm
  2390. MOV ESP, EBP
  2391. POP EBP
  2392. JMP [_NetValidatePasswordPolicyFree]
  2393. end;
  2394. end;
  2395. var
  2396. _NetGetDCName: Pointer;
  2397. function NetGetDCName;
  2398. begin
  2399. GetProcedureAddress(_NetGetDCName, netapi32, 'NetGetDCName');
  2400. asm
  2401. MOV ESP, EBP
  2402. POP EBP
  2403. JMP [_NetGetDCName]
  2404. end;
  2405. end;
  2406. var
  2407. _NetGetAnyDCName: Pointer;
  2408. function NetGetAnyDCName;
  2409. begin
  2410. GetProcedureAddress(_NetGetAnyDCName, netapi32, 'NetGetAnyDCName');
  2411. asm
  2412. MOV ESP, EBP
  2413. POP EBP
  2414. JMP [_NetGetAnyDCName]
  2415. end;
  2416. end;
  2417. var
  2418. _I_NetLogonControl: Pointer;
  2419. function I_NetLogonControl;
  2420. begin
  2421. GetProcedureAddress(_I_NetLogonControl, netapi32, 'I_NetLogonControl');
  2422. asm
  2423. MOV ESP, EBP
  2424. POP EBP
  2425. JMP [_I_NetLogonControl]
  2426. end;
  2427. end;
  2428. var
  2429. _I_NetLogonControl2: Pointer;
  2430. function I_NetLogonControl2;
  2431. begin
  2432. GetProcedureAddress(_I_NetLogonControl2, netapi32, 'I_NetLogonControl2');
  2433. asm
  2434. MOV ESP, EBP
  2435. POP EBP
  2436. JMP [_I_NetLogonControl2]
  2437. end;
  2438. end;
  2439. var
  2440. _NetEnumerateTrustedDomains: Pointer;
  2441. function NetEnumerateTrustedDomains;
  2442. begin
  2443. GetProcedureAddress(_NetEnumerateTrustedDomains, netapi32, 'NetEnumerateTrustedDomains');
  2444. asm
  2445. MOV ESP, EBP
  2446. POP EBP
  2447. JMP [_NetEnumerateTrustedDomains]
  2448. end;
  2449. end;
  2450. {$ELSE}
  2451. function NetUserAdd; external netapi32 name 'NetUserAdd';
  2452. function NetUserEnum; external netapi32 name 'NetUserEnum';
  2453. function NetUserGetInfo; external netapi32 name 'NetUserGetInfo';
  2454. function NetUserSetInfo; external netapi32 name 'NetUserSetInfo';
  2455. function NetUserDel; external netapi32 name 'NetUserDel';
  2456. function NetUserGetGroups; external netapi32 name 'NetUserGetGroups';
  2457. function NetUserSetGroups; external netapi32 name 'NetUserSetGroups';
  2458. function NetUserGetLocalGroups; external netapi32 name 'NetUserGetLocalGroups';
  2459. function NetUserModalsGet; external netapi32 name 'NetUserModalsGet';
  2460. function NetUserModalsSet; external netapi32 name 'NetUserModalsSet';
  2461. function NetUserChangePassword; external netapi32 name 'NetUserChangePassword';
  2462. function NetGroupAdd; external netapi32 name 'NetGroupAdd';
  2463. function NetGroupAddUser; external netapi32 name 'NetGroupAddUser';
  2464. function NetGroupEnum; external netapi32 name 'NetGroupEnum';
  2465. function NetGroupGetInfo; external netapi32 name 'NetGroupGetInfo';
  2466. function NetGroupSetInfo; external netapi32 name 'NetGroupSetInfo';
  2467. function NetGroupDel; external netapi32 name 'NetGroupDel';
  2468. function NetGroupDelUser; external netapi32 name 'NetGroupDelUser';
  2469. function NetGroupGetUsers; external netapi32 name 'NetGroupGetUsers';
  2470. function NetGroupSetUsers; external netapi32 name 'NetGroupSetUsers';
  2471. function NetLocalGroupAdd; external netapi32 name 'NetLocalGroupAdd';
  2472. function NetLocalGroupAddMember; external netapi32 name 'NetLocalGroupAddMember';
  2473. function NetLocalGroupEnum; external netapi32 name 'NetLocalGroupEnum';
  2474. function NetLocalGroupGetInfo; external netapi32 name 'NetLocalGroupGetInfo';
  2475. function NetLocalGroupSetInfo; external netapi32 name 'NetLocalGroupSetInfo';
  2476. function NetLocalGroupDel; external netapi32 name 'NetLocalGroupDel';
  2477. function NetLocalGroupDelMember; external netapi32 name 'NetLocalGroupDelMember';
  2478. function NetLocalGroupGetMembers; external netapi32 name 'NetLocalGroupGetMembers';
  2479. function NetLocalGroupSetMembers; external netapi32 name 'NetLocalGroupSetMembers';
  2480. function NetLocalGroupAddMembers; external netapi32 name 'NetLocalGroupAddMembers';
  2481. function NetLocalGroupDelMembers; external netapi32 name 'NetLocalGroupDelMembers';
  2482. function NetQueryDisplayInformation; external netapi32 name 'NetQueryDisplayInformation';
  2483. function NetGetDisplayInformationIndex; external netapi32 name 'NetGetDisplayInformationIndex';
  2484. function NetAccessAdd; external netapi32 name 'NetAccessAdd';
  2485. function NetAccessEnum; external netapi32 name 'NetAccessEnum';
  2486. function NetAccessGetInfo; external netapi32 name 'NetAccessGetInfo';
  2487. function NetAccessSetInfo; external netapi32 name 'NetAccessSetInfo';
  2488. function NetAccessDel; external netapi32 name 'NetAccessDel';
  2489. function NetAccessGetUserPerms; external netapi32 name 'NetAccessGetUserPerms';
  2490. function NetValidatePasswordPolicy; external netapi32 name 'NetValidatePasswordPolicy';
  2491. function NetValidatePasswordPolicyFree; external netapi32 name 'NetValidatePasswordPolicyFree';
  2492. function NetGetDCName; external netapi32 name 'NetGetDCName';
  2493. function NetGetAnyDCName; external netapi32 name 'NetGetAnyDCName';
  2494. function I_NetLogonControl; external netapi32 name 'I_NetLogonControl';
  2495. function I_NetLogonControl2; external netapi32 name 'I_NetLogonControl2';
  2496. function NetEnumerateTrustedDomains; external netapi32 name 'NetEnumerateTrustedDomains';
  2497. {$ENDIF DYNAMIC_LINK}
  2498. {$ENDIF JWA_IMPLEMENTATIONSECTION}
  2499. {$IFNDEF JWA_INCLUDEMODE}
  2500. end.
  2501. {$ENDIF !JWA_INCLUDEMODE}