jwalmaccess.pas 89 KB

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