lmaccess.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. /*
  2. * Copyright 2002 Andriy Palamarchuk
  3. *
  4. * User information Net API.
  5. *
  6. * This library is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 2.1 of the License, or (at your option) any later version.
  10. *
  11. * This library is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public
  17. * License along with this library; if not, write to the Free Software
  18. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  19. */
  20. #ifndef __WINE_LMACCESS_H
  21. #define __WINE_LMACCESS_H
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. #include <lmcons.h>
  26. #define UF_SCRIPT 0x000001
  27. #define UF_ACCOUNTDISABLE 0x000002
  28. #define UF_HOMEDIR_REQUIRED 0x000008
  29. #define UF_LOCKOUT 0x000010
  30. #define UF_PASSWD_NOTREQD 0x000020
  31. #define UF_PASSWD_CANT_CHANGE 0x000040
  32. #define UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED 0x000080
  33. #define UF_TEMP_DUPLICATE_ACCOUNT 0x000100
  34. #define UF_NORMAL_ACCOUNT 0x000200
  35. #define UF_INTERDOMAIN_TRUST_ACCOUNT 0x000800
  36. #define UF_WORKSTATION_TRUST_ACCOUNT 0x001000
  37. #define UF_SERVER_TRUST_ACCOUNT 0x002000
  38. #define UF_DONT_EXPIRE_PASSWD 0x010000
  39. #define UF_MNS_LOGON_ACCOUNT 0x020000
  40. #define UF_SMARTCARD_REQUIRED 0x040000
  41. #define UF_TRUSTED_FOR_DELEGATION 0x080000
  42. #define UF_NOT_DELEGATED 0x100000
  43. #define UF_USE_DES_KEY_ONLY 0x200000
  44. #define UF_DONT_REQUIRE_PREAUTH 0x400000
  45. #define UF_PASSWORD_EXPIRED 0x800000
  46. #define UF_MACHINE_ACCOUNT_MASK ( \
  47. UF_INTERDOMAIN_TRUST_ACCOUNT | \
  48. UF_WORKSTATION_TRUST_ACCOUNT | \
  49. UF_SERVER_TRUST_ACCOUNT)
  50. #define UF_ACCOUNT_TYPE_MASK ( \
  51. UF_TEMP_DUPLICATE_ACCOUNT | \
  52. UF_NORMAL_ACCOUNT | \
  53. UF_INTERDOMAIN_TRUST_ACCOUNT | \
  54. UF_WORKSTATION_TRUST_ACCOUNT | \
  55. UF_SERVER_TRUST_ACCOUNT)
  56. #define UF_SETTABLE_BITS ( \
  57. UF_SCRIPT | \
  58. UF_ACCOUNTDISABLE | \
  59. UF_LOCKOUT | \
  60. UF_HOMEDIR_REQUIRED | \
  61. UF_PASSWD_NOTREQD | \
  62. UF_PASSWD_CANT_CHANGE | \
  63. UF_ACCOUNT_TYPE_MASK | \
  64. UF_DONT_EXPIRE_PASSWD | \
  65. UF_MNS_LOGON_ACCOUNT |\
  66. UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED |\
  67. UF_SMARTCARD_REQUIRED | \
  68. UF_TRUSTED_FOR_DELEGATION | \
  69. UF_NOT_DELEGATED | \
  70. UF_USE_DES_KEY_ONLY | \
  71. UF_DONT_REQUIRE_PREAUTH |\
  72. UF_PASSWORD_EXPIRED)
  73. #if defined(__GNUC__)
  74. # define GROUP_SPECIALGRP_USERS (const WCHAR []){ 'U','S','E','R','S',0 }
  75. #elif defined(_MSC_VER)
  76. # define GROUP_SPECIALGRP_USERS L"USERS"
  77. #else
  78. static const WCHAR GROUP_SPECIALGRP_USERS[] = { 'U','S','E','R','S',0 };
  79. #endif
  80. #if defined(__GNUC__)
  81. # define GROUP_SPECIALGRP_ADMINS (const WCHAR []){ 'A','D','M','I','N','S',0 }
  82. #elif defined(_MSC_VER)
  83. # define GROUP_SPECIALGRP_ADMINS L"ADMINS"
  84. #else
  85. static const WCHAR GROUP_SPECIALGRP_ADMINS[] = { 'A','D','M','I','N','S',0 };
  86. #endif
  87. #if defined(__GNUC__)
  88. # define GROUP_SPECIALGRP_GUESTS (const WCHAR []){ 'G','U','E','S','T','S',0 }
  89. #elif defined(_MSC_VER)
  90. # define GROUP_SPECIALGRP_GUESTS L"GUESTS"
  91. #else
  92. static const WCHAR GROUP_SPECIALGRP_GUESTS[] = { 'G','U','E','S','T','S',0 };
  93. #endif
  94. #if defined(__GNUC__)
  95. # define GROUP_SPECIALGRP_LOCAL (const WCHAR []){ 'L','O','C','A','L',0 }
  96. #elif defined(_MSC_VER)
  97. # define GROUP_SPECIALGRP_LOCAL L"LOCAL"
  98. #else
  99. static const WCHAR GROUP_SPECIALGRP_LOCAL[] = { 'L','O','C','A','L',0 };
  100. #endif
  101. /* NetGetUserInfo structures */
  102. typedef struct _USER_INFO_0 {
  103. LPWSTR usri0_name;
  104. } USER_INFO_0, *PUSER_INFO_0, *LPUSER_INFO_0;
  105. typedef struct _USER_INFO_1 {
  106. LPWSTR usri1_name;
  107. LPWSTR usri1_password;
  108. DWORD usri1_password_age;
  109. DWORD usri1_priv;
  110. LPWSTR usri1_home_dir;
  111. LPWSTR usri1_comment;
  112. DWORD usri1_flags;
  113. LPWSTR usri1_script_path;
  114. } USER_INFO_1, *PUSER_INFO_1, *LPUSER_INFO_1;
  115. typedef struct _USER_INFO_2 {
  116. LPWSTR usri2_name;
  117. LPWSTR usri2_password;
  118. DWORD usri2_password_age;
  119. DWORD usri2_priv;
  120. LPWSTR usri2_home_dir;
  121. LPWSTR usri2_comment;
  122. DWORD usri2_flags;
  123. LPWSTR usri2_script_path;
  124. DWORD usri2_auth_flags;
  125. LPWSTR usri2_full_name;
  126. LPWSTR usri2_usr_comment;
  127. LPWSTR usri2_parms;
  128. LPWSTR usri2_workstations;
  129. DWORD usri2_last_logon;
  130. DWORD usri2_last_logoff;
  131. DWORD usri2_acct_expires;
  132. DWORD usri2_max_storage;
  133. DWORD usri2_units_per_week;
  134. PBYTE usri2_logon_hours;
  135. DWORD usri2_bad_pw_count;
  136. DWORD usri2_num_logons;
  137. LPWSTR usri2_logon_server;
  138. DWORD usri2_country_code;
  139. DWORD usri2_code_page;
  140. } USER_INFO_2, *PUSER_INFO_2, *LPUSER_INFO_2;
  141. typedef struct _USER_INFO_3 {
  142. LPWSTR usri3_name;
  143. LPWSTR usri3_password;
  144. DWORD usri3_password_age;
  145. DWORD usri3_priv;
  146. LPWSTR usri3_home_dir;
  147. LPWSTR usri3_comment;
  148. DWORD usri3_flags;
  149. LPWSTR usri3_script_path;
  150. DWORD usri3_auth_flags;
  151. LPWSTR usri3_full_name;
  152. LPWSTR usri3_usr_comment;
  153. LPWSTR usri3_parms;
  154. LPWSTR usri3_workstations;
  155. DWORD usri3_last_logon;
  156. DWORD usri3_last_logoff;
  157. DWORD usri3_acct_expires;
  158. DWORD usri3_max_storage;
  159. DWORD usri3_units_per_week;
  160. PBYTE usri3_logon_hours;
  161. DWORD usri3_bad_pw_count;
  162. DWORD usri3_num_logons;
  163. LPWSTR usri3_logon_server;
  164. DWORD usri3_country_code;
  165. DWORD usri3_code_page;
  166. DWORD usri3_user_id;
  167. DWORD usri3_primary_group_id;
  168. LPWSTR usri3_profile;
  169. LPWSTR usri3_home_dir_drive;
  170. DWORD usri3_password_expired;
  171. } USER_INFO_3, *PUSER_INFO_3, *LPUSER_INFO_3;
  172. typedef struct _USER_INFO_4 {
  173. LPWSTR usri4_name;
  174. LPWSTR usri4_password;
  175. DWORD usri4_password_age;
  176. DWORD usri4_priv;
  177. LPWSTR usri4_home_dir;
  178. LPWSTR usri4_comment;
  179. DWORD usri4_flags;
  180. LPWSTR usri4_script_path;
  181. DWORD usri4_auth_flags;
  182. LPWSTR usri4_full_name;
  183. LPWSTR usri4_usr_comment;
  184. LPWSTR usri4_parms;
  185. LPWSTR usri4_workstations;
  186. DWORD usri4_last_logon;
  187. DWORD usri4_last_logoff;
  188. DWORD usri4_acct_expires;
  189. DWORD usri4_max_storage;
  190. DWORD usri4_units_per_week;
  191. PBYTE usri4_logon_hours;
  192. DWORD usri4_bad_pw_count;
  193. DWORD usri4_num_logons;
  194. LPWSTR usri4_logon_server;
  195. DWORD usri4_country_code;
  196. DWORD usri4_code_page;
  197. PSID usri4_user_sid;
  198. DWORD usri4_primary_group_id;
  199. LPWSTR usri4_profile;
  200. LPWSTR usri4_home_dir_drive;
  201. DWORD usri4_password_expired;
  202. } USER_INFO_4, *PUSER_INFO_4, *LPUSER_INFO_4;
  203. typedef struct _USER_INFO_10 {
  204. LPWSTR usri10_name;
  205. LPWSTR usri10_comment;
  206. LPWSTR usri10_usr_comment;
  207. LPWSTR usri10_full_name;
  208. } USER_INFO_10, *PUSER_INFO_10, *LPUSER_INFO_10;
  209. typedef struct _USER_INFO_11 {
  210. LPWSTR usri11_name;
  211. LPWSTR usri11_comment;
  212. LPWSTR usri11_usr_comment;
  213. LPWSTR usri11_full_name;
  214. DWORD usri11_priv;
  215. DWORD usri11_auth_flags;
  216. DWORD usri11_password_age;
  217. LPWSTR usri11_home_dir;
  218. LPWSTR usri11_parms;
  219. DWORD usri11_last_logon;
  220. DWORD usri11_last_logoff;
  221. DWORD usri11_bad_pw_count;
  222. DWORD usri11_num_logons;
  223. LPWSTR usri11_logon_server;
  224. DWORD usri11_country_code;
  225. LPWSTR usri11_workstations;
  226. DWORD usri11_max_storage;
  227. DWORD usri11_units_per_week;
  228. PBYTE usri11_logon_hours;
  229. DWORD usri11_code_page;
  230. } USER_INFO_11, *PUSER_INFO_11, *LPUSER_INFO_11;
  231. typedef struct _USER_INFO_20 {
  232. LPWSTR usri20_name;
  233. LPWSTR usri20_full_name;
  234. LPWSTR usri20_comment;
  235. DWORD usri20_flags;
  236. DWORD usri20_user_id;
  237. } USER_INFO_20, *PUSER_INFO_20, *LPUSER_INFO_20;
  238. typedef struct _USER_INFO_23 {
  239. LPWSTR usri23_name;
  240. LPWSTR usri23_full_name;
  241. LPWSTR usri23_comment;
  242. DWORD usri23_flags;
  243. PSID usri23_user_sid;
  244. } USER_INFO_23, *PUSER_INFO_23, *LPUSER_INFO_23;
  245. typedef struct _USER_INFO_1003 {
  246. LPWSTR usri1003_password;
  247. } USER_INFO_1003, *PUSER_INFO_1003, *LPUSER_INFO_1003;
  248. typedef struct _USER_INFO_1005 {
  249. DWORD usri1005_priv;
  250. } USER_INFO_1005, *PUSER_INFO_1005, *LPUSER_INFO_1005;
  251. typedef struct _USER_INFO_1006 {
  252. LPWSTR usri1006_home_dir;
  253. } USER_INFO_1006, *PUSER_INFO_1006, *LPUSER_INFO_1006;
  254. typedef struct _USER_INFO_1007 {
  255. LPWSTR usri1007_comment;
  256. } USER_INFO_1007, *PUSER_INFO_1007, *LPUSER_INFO_1007;
  257. typedef struct _USER_INFO_1008 {
  258. DWORD usri1008_flags;
  259. } USER_INFO_1008, *PUSER_INFO_1008, *LPUSER_INFO_1008;
  260. typedef struct _USER_INFO_1009 {
  261. LPWSTR usri1009_script_path;
  262. } USER_INFO_1009, *PUSER_INFO_1009, *LPUSER_INFO_1009;
  263. typedef struct _USER_INFO_1010 {
  264. DWORD usri1010_auth_flags;
  265. } USER_INFO_1010, *PUSER_INFO_1010, *LPUSER_INFO_1010;
  266. typedef struct _USER_INFO_1011 {
  267. LPWSTR usri1011_full_name;
  268. } USER_INFO_1011, *PUSER_INFO_1011, *LPUSER_INFO_1011;
  269. typedef struct _USER_INFO_1012 {
  270. LPWSTR usri1012_usr_comment;
  271. } USER_INFO_1012, *PUSER_INFO_1012, *LPUSER_INFO_1012;
  272. typedef struct _USER_INFO_1013 {
  273. LPWSTR usri1013_parms;
  274. } USER_INFO_1013, *PUSER_INFO_1013, *LPUSER_INFO_1013;
  275. typedef struct _USER_INFO_1014 {
  276. LPWSTR usri1014_workstations;
  277. } USER_INFO_1014, *PUSER_INFO_1014, *LPUSER_INFO_1014;
  278. typedef struct _USER_INFO_1017 {
  279. DWORD usri1017_acct_expires;
  280. } USER_INFO_1017, *PUSER_INFO_1017, *LPUSER_INFO_1017;
  281. typedef struct _USER_INFO_1018 {
  282. DWORD usri1018_max_storage;
  283. } USER_INFO_1018, *PUSER_INFO_1018, *LPUSER_INFO_1018;
  284. typedef struct _USER_INFO_1020 {
  285. DWORD usri1020_units_per_week;
  286. LPBYTE usri1020_logon_hours;
  287. } USER_INFO_1020, *PUSER_INFO_1020, *LPUSER_INFO_1020;
  288. typedef struct _USER_INFO_1023 {
  289. LPWSTR usri1023_logon_server;
  290. } USER_INFO_1023, *PUSER_INFO_1023, *LPUSER_INFO_1023;
  291. typedef struct _USER_INFO_1024 {
  292. DWORD usri1024_country_code;
  293. } USER_INFO_1024, *PUSER_INFO_1024, *LPUSER_INFO_1024;
  294. typedef struct _USER_INFO_1025 {
  295. DWORD usri1025_code_page;
  296. } USER_INFO_1025, *PUSER_INFO_1025, *LPUSER_INFO_1025;
  297. typedef struct _USER_INFO_1051 {
  298. DWORD usri1051_primary_group_id;
  299. } USER_INFO_1051, *PUSER_INFO_1051, *LPUSER_INFO_1051;
  300. typedef struct _USER_INFO_1052 {
  301. LPWSTR usri1052_profile;
  302. } USER_INFO_1052, *PUSER_INFO_1052, *LPUSER_INFO_1052;
  303. typedef struct _USER_INFO_1053 {
  304. LPWSTR usri1053_home_dir_drive;
  305. } USER_INFO_1053, *PUSER_INFO_1053, *LPUSER_INFO_1053;
  306. typedef struct _USER_MODALS_INFO_0 {
  307. DWORD usrmod0_min_passwd_len;
  308. DWORD usrmod0_max_passwd_age;
  309. DWORD usrmod0_min_passwd_age;
  310. DWORD usrmod0_force_logoff;
  311. DWORD usrmod0_password_hist_len;
  312. } USER_MODALS_INFO_0, *PUSER_MODALS_INFO_0, *LPUSER_MODALS_INFO_0;
  313. typedef struct _USER_MODALS_INFO_1 {
  314. DWORD usrmod1_role;
  315. LPWSTR usrmod1_primary;
  316. } USER_MODALS_INFO_1, *PUSER_MODALS_INFO_1, *LPUSER_MODALS_INFO_1;
  317. typedef struct _USER_MODALS_INFO_2 {
  318. LPWSTR usrmod2_domain_name;
  319. PSID usrmod2_domain_id;
  320. } USER_MODALS_INFO_2, *PUSER_MODALS_INFO_2, *LPUSER_MODALS_INFO_2;
  321. typedef struct _USER_MODALS_INFO_3 {
  322. DWORD usrmod3_lockout_duration;
  323. DWORD usrmod3_lockout_observation_window;
  324. DWORD usrmod3_lockout_threshold;
  325. } USER_MODALS_INFO_3, *PUSER_MODALS_INFO_3, *LPUSER_MODALS_INFO_3;
  326. typedef struct _NET_DISPLAY_USER {
  327. LPWSTR usri1_name;
  328. LPWSTR usri1_comment;
  329. DWORD usri1_flags;
  330. LPWSTR usri1_full_name;
  331. DWORD usri1_user_id;
  332. DWORD usri1_next_index;
  333. } NET_DISPLAY_USER, *PNET_DISPLAY_USER;
  334. typedef struct _NET_DISPLAY_MACHINE {
  335. LPWSTR usri2_name;
  336. LPWSTR usri2_comment;
  337. DWORD usri2_flags;
  338. DWORD usri2_user_id;
  339. DWORD usri2_next_index;
  340. } NET_DISPLAY_MACHINE, *PNET_DISPLAY_MACHINE;
  341. typedef struct _NET_DISPLAY_GROUP {
  342. LPWSTR grpi3_name;
  343. LPWSTR grpi3_comment;
  344. DWORD grpi3_group_id;
  345. DWORD grpi3_attributes;
  346. DWORD grpi3_next_index;
  347. } NET_DISPLAY_GROUP, *PNET_DISPLAY_GROUP;
  348. NET_API_STATUS WINAPI NetUserGetInfo(LPCWSTR servername, LPCWSTR username,
  349. DWORD level, LPBYTE* bufptr);
  350. NET_API_STATUS WINAPI NetQueryDisplayInformation(
  351. LPWSTR ServerName, DWORD Level, DWORD Index, DWORD EntriesRequested,
  352. DWORD PreferredMaximumLength, LPDWORD ReturnedEntryCount,
  353. PVOID *SortedBuffer);
  354. #ifdef __cplusplus
  355. }
  356. #endif
  357. #endif