windows-pr 1.1.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. data/CHANGES +408 -404
  2. data/MANIFEST +65 -65
  3. data/README +149 -149
  4. data/Rakefile +52 -52
  5. data/doc/conversion_guide.txt +37 -37
  6. data/lib/windows/clipboard.rb +59 -59
  7. data/lib/windows/com.rb +190 -189
  8. data/lib/windows/com/automation.rb +147 -147
  9. data/lib/windows/com/variant.rb +22 -22
  10. data/lib/windows/console.rb +112 -112
  11. data/lib/windows/debug.rb +33 -33
  12. data/lib/windows/device_io.rb +246 -246
  13. data/lib/windows/directory.rb +25 -25
  14. data/lib/windows/error.rb +482 -482
  15. data/lib/windows/eventlog.rb +78 -78
  16. data/lib/windows/file.rb +262 -262
  17. data/lib/windows/file_mapping.rb +23 -23
  18. data/lib/windows/filesystem.rb +13 -13
  19. data/lib/windows/gdi/bitmap.rb +63 -63
  20. data/lib/windows/gdi/device_context.rb +44 -44
  21. data/lib/windows/gdi/metafile.rb +38 -38
  22. data/lib/windows/gdi/painting_drawing.rb +113 -113
  23. data/lib/windows/handle.rb +21 -21
  24. data/lib/windows/library.rb +42 -42
  25. data/lib/windows/limits.rb +31 -31
  26. data/lib/windows/mailslot.rb +22 -22
  27. data/lib/windows/memory.rb +126 -126
  28. data/lib/windows/msvcrt/buffer.rb +73 -73
  29. data/lib/windows/msvcrt/directory.rb +29 -29
  30. data/lib/windows/msvcrt/file.rb +45 -45
  31. data/lib/windows/msvcrt/io.rb +71 -71
  32. data/lib/windows/msvcrt/time.rb +167 -167
  33. data/lib/windows/national.rb +578 -578
  34. data/lib/windows/network/management.rb +523 -523
  35. data/lib/windows/network/snmp.rb +90 -90
  36. data/lib/windows/network/winsock.rb +126 -126
  37. data/lib/windows/nio.rb +48 -47
  38. data/lib/windows/ntfs/winternl.rb +96 -96
  39. data/lib/windows/path.rb +141 -141
  40. data/lib/windows/pipe.rb +40 -40
  41. data/lib/windows/process.rb +174 -174
  42. data/lib/windows/registry.rb +126 -126
  43. data/lib/windows/security.rb +477 -477
  44. data/lib/windows/security/authentication.rb +30 -30
  45. data/lib/windows/service.rb +140 -140
  46. data/lib/windows/shell.rb +169 -169
  47. data/lib/windows/sound.rb +37 -37
  48. data/lib/windows/synchronize.rb +131 -131
  49. data/lib/windows/system_info.rb +227 -222
  50. data/lib/windows/thread.rb +62 -62
  51. data/lib/windows/time.rb +46 -46
  52. data/lib/windows/tool_helper.rb +34 -34
  53. data/lib/windows/volume.rb +59 -59
  54. data/lib/windows/window.rb +79 -79
  55. data/lib/windows/window/classes.rb +57 -57
  56. data/lib/windows/window/dialog.rb +89 -89
  57. data/lib/windows/window/menu.rb +100 -100
  58. data/lib/windows/window/message.rb +295 -295
  59. data/lib/windows/window/properties.rb +18 -18
  60. data/lib/windows/window/timer.rb +17 -17
  61. data/test/tc_clipboard.rb +41 -41
  62. data/test/tc_com.rb +32 -32
  63. data/test/tc_com_automation.rb +15 -15
  64. data/test/tc_console.rb +108 -108
  65. data/test/tc_debug.rb +48 -48
  66. data/test/tc_device_io.rb +29 -29
  67. data/test/tc_directory.rb +25 -25
  68. data/test/tc_error.rb +49 -49
  69. data/test/tc_eventlog.rb +58 -58
  70. data/test/tc_file.rb +67 -67
  71. data/test/tc_file_mapping.rb +38 -38
  72. data/test/tc_filesystem.rb +27 -27
  73. data/test/tc_gdi_bitmap.rb +25 -25
  74. data/test/tc_gdi_metafile.rb +23 -23
  75. data/test/tc_handle.rb +36 -36
  76. data/test/tc_library.rb +37 -37
  77. data/test/tc_limits.rb +34 -34
  78. data/test/tc_mailslot.rb +22 -22
  79. data/test/tc_memory.rb +44 -44
  80. data/test/tc_msvcrt_buffer.rb +68 -68
  81. data/test/tc_msvcrt_directory.rb +98 -98
  82. data/test/tc_msvcrt_file.rb +80 -80
  83. data/test/tc_msvcrt_io.rb +48 -48
  84. data/test/tc_msvcrt_string.rb +93 -93
  85. data/test/tc_msvcrt_time.rb +29 -29
  86. data/test/tc_national.rb +38 -38
  87. data/test/tc_network_management.rb +32 -32
  88. data/test/tc_network_snmp.rb +31 -31
  89. data/test/tc_network_winsock.rb +34 -34
  90. data/test/tc_nio.rb +32 -32
  91. data/test/tc_ntfs_winternl.rb +29 -29
  92. data/test/tc_path.rb +90 -90
  93. data/test/tc_pipe.rb +53 -53
  94. data/test/tc_process.rb +24 -24
  95. data/test/tc_registry.rb +29 -29
  96. data/test/tc_security.rb +104 -104
  97. data/test/tc_security_authentication.rb +34 -34
  98. data/test/tc_service.rb +57 -57
  99. data/test/tc_shell.rb +34 -34
  100. data/test/tc_sound.rb +37 -37
  101. data/test/tc_synchronize.rb +75 -75
  102. data/test/tc_system_info.rb +43 -43
  103. data/test/tc_thread.rb +29 -29
  104. data/test/tc_time.rb +32 -32
  105. data/test/tc_tool_helper.rb +29 -29
  106. data/test/tc_volume.rb +47 -47
  107. data/test/tc_window.rb +45 -45
  108. data/test/tc_window_classes.rb +33 -33
  109. data/test/tc_window_dialog.rb +33 -33
  110. data/test/tc_window_menu.rb +29 -29
  111. data/test/tc_window_message.rb +33 -33
  112. data/test/tc_window_properties.rb +29 -29
  113. data/test/tc_window_timer.rb +29 -29
  114. data/windows-pr.gemspec +34 -34
  115. metadata +4 -4
@@ -1,477 +1,477 @@
1
- require 'windows/api'
2
-
3
- # The auto_unicode option has been set to false because the majority of
4
- # the methods defined here do not have explicit ANSI or Wide character
5
- # versions.
6
-
7
- module Windows
8
- module Security
9
- API.auto_namespace = 'Windows::Security'
10
- API.auto_constant = true
11
- API.auto_method = true
12
- API.auto_unicode = false
13
-
14
- ACL_REVISION = 2
15
- ACL_REVISION1 = 1
16
- ACL_REVISION2 = 2
17
- ACL_REVISION3 = 3
18
- ACL_REVISION4 = 4
19
- ALLOW_ACE_LENGTH = 62
20
- DACL_SECURITY_INFORMATION = 4
21
- SE_DACL_PRESENT = 4
22
- SECURITY_DESCRIPTOR_MIN_LENGTH = 20
23
- SECURITY_DESCRIPTOR_REVISION = 1
24
- SECURITY_DESCRIPTOR_REVISION1 = 1
25
-
26
- SECURITY_NULL_SID_AUTHORITY = 0
27
- SECURITY_WORLD_SID_AUTHORITY = 1
28
- SECURITY_LOCAL_SID_AUTHORITY = 2
29
- SECURITY_CREATOR_SID_AUTHORITY = 3
30
- SECURITY_NON_UNIQUE_AUTHORITY = 4
31
- SECURITY_NT_AUTHORITY = 5
32
- SECURITY_RESOURCE_MANAGER_AUTHORITY = 9
33
-
34
- SECURITY_NULL_RID = 0x00000000
35
- SECURITY_WORLD_RID = 0x00000000
36
- SECURITY_LOCAL_RID = 0x00000000
37
- SECURITY_CREATOR_OWNER_RID = 0x00000000
38
- SECURITY_CREATOR_GROUP_RID = 0x00000001
39
- SECURITY_CREATOR_OWNER_SERVER_RID = 0x00000002
40
- SECURITY_CREATOR_GROUP_SERVER_RID = 0x00000003
41
- SECURITY_DIALUP_RID = 0x00000001
42
- SECURITY_NETWORK_RID = 0x00000002
43
- SECURITY_BATCH_RID = 0x00000003
44
- SECURITY_INTERACTIVE_RID = 0x00000004
45
- SECURITY_LOGON_IDS_RID = 0x00000005
46
- SECURITY_LOGON_IDS_RID_COUNT = 3
47
- SECURITY_SERVICE_RID = 0x00000006
48
- SECURITY_ANONYMOUS_LOGON_RID = 0x00000007
49
- SECURITY_PROXY_RID = 0x00000008
50
-
51
- SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x00000009
52
- SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID
53
- SECURITY_PRINCIPAL_SELF_RID = 0x0000000A
54
- SECURITY_AUTHENTICATED_USER_RID = 0x0000000B
55
- SECURITY_RESTRICTED_CODE_RID = 0x0000000C
56
- SECURITY_TERMINAL_SERVER_RID = 0x0000000D
57
- SECURITY_REMOTE_LOGON_RID = 0x0000000E
58
- SECURITY_THIS_ORGANIZATION_RID = 0x0000000F
59
- SECURITY_LOCAL_SYSTEM_RID = 0x00000012
60
- SECURITY_LOCAL_SERVICE_RID = 0x00000013
61
- SECURITY_NETWORK_SERVICE_RID = 0x00000014
62
- SECURITY_NT_NON_UNIQUE = 0x00000015
63
- SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT = 3
64
-
65
- SECURITY_BUILTIN_DOMAIN_RID = 0x00000020
66
- SECURITY_PACKAGE_BASE_RID = 0x00000040
67
- SECURITY_PACKAGE_RID_COUNT = 2
68
- SECURITY_PACKAGE_NTLM_RID = 0x0000000A
69
- SECURITY_PACKAGE_SCHANNEL_RID = 0x0000000E
70
- SECURITY_PACKAGE_DIGEST_RID = 0x00000015
71
- SECURITY_MAX_ALWAYS_FILTERED = 0x000003E7
72
- SECURITY_MIN_NEVER_FILTERED = 0x000003E8
73
-
74
- SECURITY_OTHER_ORGANIZATION_RID = 0x000003E8
75
- FOREST_USER_RID_MAX = 0x000001F3
76
- DOMAIN_USER_RID_ADMIN = 0x000001F4
77
- DOMAIN_USER_RID_GUEST = 0x000001F5
78
- DOMAIN_USER_RID_KRBTGT = 0x000001F6
79
- DOMAIN_USER_RID_MAX = 0x000003E7
80
- DOMAIN_GROUP_RID_ADMINS = 0x00000200
81
- DOMAIN_GROUP_RID_USERS = 0x00000201
82
- DOMAIN_GROUP_RID_GUESTS = 0x00000202
83
- DOMAIN_GROUP_RID_COMPUTERS = 0x00000203
84
- DOMAIN_GROUP_RID_CONTROLLERS = 0x00000204
85
- DOMAIN_GROUP_RID_CERT_ADMINS = 0x00000205
86
- DOMAIN_GROUP_RID_SCHEMA_ADMINS = 0x00000206
87
- DOMAIN_GROUP_RID_ENTERPRISE_ADMINS = 0x00000207
88
- DOMAIN_GROUP_RID_POLICY_ADMINS = 0x00000208
89
- DOMAIN_ALIAS_RID_ADMINS = 0x00000220
90
- DOMAIN_ALIAS_RID_USERS = 0x00000221
91
- DOMAIN_ALIAS_RID_GUESTS = 0x00000222
92
- DOMAIN_ALIAS_RID_POWER_USERS = 0x00000223
93
- DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x00000224
94
- DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x00000225
95
- DOMAIN_ALIAS_RID_PRINT_OPS = 0x00000226
96
- DOMAIN_ALIAS_RID_BACKUP_OPS = 0x00000227
97
- DOMAIN_ALIAS_RID_REPLICATOR = 0x00000228
98
- DOMAIN_ALIAS_RID_RAS_SERVERS = 0x00000229
99
-
100
- DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = 0x0000022A
101
- DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = 0x0000022B
102
- DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = 0x0000022C
103
- DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = 0x0000022D
104
- DOMAIN_ALIAS_RID_MONITORING_USERS = 0x0000022E
105
- DOMAIN_ALIAS_RID_LOGGING_USERS = 0x0000022F
106
- DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS = 0x00000230
107
- DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS = 0x00000231
108
- DOMAIN_ALIAS_RID_DCOM_USERS = 0x00000232
109
-
110
- GENERIC_RIGHTS_MASK = 0xF0010000
111
- GENERIC_RIGHTS_CHK = 0xF0000000
112
- REST_RIGHTS_MASK = 0x001FFFFF
113
-
114
- TOKEN_READ = 131080
115
- TOKEN_WRITE = 131296
116
- TOKEN_EXECUTE = 131072
117
- TOKEN_ASSIGN_PRIMARY = 0x0001
118
- TOKEN_DUPLICATE = 0x0002
119
- TOKEN_IMPERSONATE = 0x0004
120
- TOKEN_QUERY = 0x0008
121
- TOKEN_QUERY_SOURCE = 0x0010
122
- TOKEN_ADJUST_PRIVILEGES = 0x0020
123
- TOKEN_ADJUST_GROUPS = 0x0040
124
- TOKEN_ADJUST_DEFAULT = 0x0080
125
- TOKEN_ADJUST_SESSIONID = 0x0100
126
- TOKEN_ALL_ACCESS_P = 983295 # Calculated from WinNt.h
127
- TOKEN_ALL_ACCESS = TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID
128
-
129
- SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001
130
- SE_PRIVILEGE_ENABLED = 0x00000002
131
- SE_PRIVILEGE_REMOVED = 0X00000004
132
- SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000
133
-
134
- OWNER_SECURITY_INFORMATION = 1
135
- GROUP_SECURITY_INFORMATION = 2
136
-
137
- # SE_OBJECT_TYPE Enumeration
138
-
139
- SE_UNKNOWN_OBJECT_TYPE = 0
140
- SE_FILE_OBJECT = 1
141
- SE_SERVICE = 2
142
- SE_PRINTER = 3
143
- SE_REGISTRY_KEY = 4
144
- SE_LMSHARE = 5
145
- SE_KERNEL_OBJECT = 6
146
- SE_WINDOW_OBJECT = 7
147
- SE_DS_OBJECT = 8
148
- SE_DS_OBJECT_ALL = 9
149
- SE_PROVIDER_DEFINED_OBJECT = 10
150
- SE_WMIGUID_OBJECT = 11
151
- SE_REGISTRY_WOW64_32KEY = 12
152
-
153
- # Defined Privileges
154
-
155
- SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege"
156
- SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"
157
- SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege"
158
- SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege"
159
- SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege"
160
- SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege"
161
- SE_TCB_NAME = "SeTcbPrivilege"
162
- SE_SECURITY_NAME = "SeSecurityPrivilege"
163
- SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege"
164
- SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege"
165
- SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege"
166
- SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege"
167
- SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege"
168
- SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege"
169
- SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege"
170
- SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege"
171
- SE_BACKUP_NAME = "SeBackupPrivilege"
172
- SE_RESTORE_NAME = "SeRestorePrivilege"
173
- SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
174
- SE_DEBUG_NAME = "SeDebugPrivilege"
175
- SE_AUDIT_NAME = "SeAuditPrivilege"
176
- SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege"
177
- SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege"
178
- SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege"
179
- SE_UNDOCK_NAME = "SeUndockPrivilege"
180
- SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege"
181
- SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege"
182
- SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege"
183
- SE_IMPERSONATE_NAME = "SeImpersonatePrivilege"
184
- SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege"
185
-
186
- ACCESS_MIN_MS_ACE_TYPE = 0x0
187
- ACCESS_ALLOWED_ACE_TYPE = 0x0
188
- ACCESS_DENIED_ACE_TYPE = 0x1
189
- SYSTEM_AUDIT_ACE_TYPE = 0x2
190
- SYSTEM_ALARM_ACE_TYPE = 0x3
191
- ACCESS_MAX_MS_V2_ACE_TYPE = 0x3
192
- ACCESS_ALLOWED_COMPOUND_ACE_TYPE = 0x4
193
- ACCESS_MAX_MS_V3_ACE_TYPE = 0x4
194
- ACCESS_MIN_MS_OBJECT_ACE_TYPE = 0x5
195
- ACCESS_ALLOWED_OBJECT_ACE_TYPE = 0x5
196
- ACCESS_DENIED_OBJECT_ACE_TYPE = 0x6
197
- SYSTEM_AUDIT_OBJECT_ACE_TYPE = 0x7
198
- SYSTEM_ALARM_OBJECT_ACE_TYPE = 0x8
199
- ACCESS_MAX_MS_OBJECT_ACE_TYPE = 0x8
200
- ACCESS_MAX_MS_V4_ACE_TYPE = 0x8
201
- ACCESS_MAX_MS_ACE_TYPE = 0x8
202
- ACCESS_ALLOWED_CALLBACK_ACE_TYPE = 0x9
203
- ACCESS_DENIED_CALLBACK_ACE_TYPE = 0xA
204
- ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE = 0xB
205
- ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE = 0xC
206
- SYSTEM_AUDIT_CALLBACK_ACE_TYPE = 0xD
207
- SYSTEM_ALARM_CALLBACK_ACE_TYPE = 0xE
208
- SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE = 0xF
209
- SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE = 0x10
210
- ACCESS_MAX_MS_V5_ACE_TYPE = 0x10
211
- OBJECT_INHERIT_ACE = 0x1
212
- CONTAINER_INHERIT_ACE = 0x2
213
- NO_PROPAGATE_INHERIT_ACE = 0x4
214
- INHERIT_ONLY_ACE = 0x8
215
- INHERITED_ACE = 0x10
216
- VALID_INHERIT_FLAGS = 0x1F
217
- SUCCESSFUL_ACCESS_ACE_FLAG = 0x40
218
- FAILED_ACCESS_ACE_FLAG = 0x80
219
-
220
- # Standard Access Rights
221
-
222
- DELETE = 0x00010000
223
- READ_CONTROL = 0x20000
224
- WRITE_DAC = 0x40000
225
- WRITE_OWNER = 0x80000
226
- SYNCHRONIZE = 0x100000
227
- STANDARD_RIGHTS_REQUIRED = 0xf0000
228
- STANDARD_RIGHTS_READ = 0x20000
229
- STANDARD_RIGHTS_WRITE = 0x20000
230
- STANDARD_RIGHTS_EXECUTE = 0x20000
231
- STANDARD_RIGHTS_ALL = 0x1F0000
232
- SPECIFIC_RIGHTS_ALL = 0xFFFF
233
- ACCESS_SYSTEM_SECURITY = 0x1000000
234
- MAXIMUM_ALLOWED = 0x2000000
235
- GENERIC_READ = 0x80000000
236
- GENERIC_WRITE = 0x40000000
237
- GENERIC_EXECUTE = 0x20000000
238
- GENERIC_ALL = 0x10000000
239
-
240
- # Enum SidNameUse
241
-
242
- SidTypeUser = 1
243
- SidTypeGroup = 2
244
- SidTypeDomain = 3
245
- SidTypeAlias = 4
246
- SidTypeWellKnownGroup = 5
247
- SidTypeDeletedAccount = 6
248
- SidTypeInvalid = 7
249
- SidTypeUnknown = 8
250
- SidTypeComputer = 9
251
-
252
- # Enum TokenInformationClass
253
-
254
- TokenUser = 1
255
- TokenGroups = 2
256
- TokenPrivileges = 3
257
- TokenOwner = 4
258
- TokenPrimaryGroup = 5
259
- TokenDefaultDacl = 6
260
- TokenSource = 7
261
- TokenType = 8
262
- TokenImpersonationLevel = 9
263
- TokenStatistics = 10
264
- TokenRestrictedSids = 11
265
- TokenSessionId = 12
266
- TokenGroupsAndPrivileges = 13
267
- TokenSessionReference = 14
268
- TokenSandBoxInert = 15
269
- TokenAuditPolicy = 16
270
- TokenOrigin = 17
271
- TokenElevationType = 18
272
- TokenLinkedToken = 19
273
- TokenElevation = 20
274
- TokenHasRestrictions = 21
275
- TokenAccessInformation = 22
276
- TokenVirtualizationAllowed = 23
277
- TokenVirtualizationEnabled = 24
278
- TokenIntegrityLevel = 25
279
- TokenUIAccess = 26
280
- TokenMandatoryPolicy = 27
281
- TokenLogonSid = 28
282
- MaxTokenInfoClass = 29
283
-
284
- # Enum WellKnownSidType
285
-
286
- WinNullSid = 0
287
- WinWorldSid = 1
288
- WinLocalSid = 2
289
- WinCreatorOwnerSid = 3
290
- WinCreatorGroupSid = 4
291
- WinCreatorOwnerServerSid = 5
292
- WinCreatorGroupServerSid = 6
293
- WinNtAuthoritySid = 7
294
- WinDialupSid = 8
295
- WinNetworkSid = 9
296
- WinBatchSid = 10
297
- WinInteractiveSid = 11
298
- WinServiceSid = 12
299
- WinAnonymousSid = 13
300
- WinProxySid = 14
301
- WinEnterpriseControllersSid = 15
302
- WinSelfSid = 16
303
- WinAuthenticatedUserSid = 17
304
- WinRestrictedCodeSid = 18
305
- WinTerminalServerSid = 19
306
- WinRemoteLogonIdSid = 20
307
- WinLogonIdsSid = 21
308
- WinLocalSystemSid = 22
309
- WinLocalServiceSid = 23
310
- WinNetworkServiceSid = 24
311
- WinBuiltinDomainSid = 25
312
- WinBuiltinAdministratorsSid = 26
313
- WinBuiltinUsersSid = 27
314
- WinBuiltinGuestsSid = 28
315
- WinBuiltinPowerUsersSid = 29
316
- WinBuiltinAccountOperatorsSid = 30
317
- WinBuiltinSystemOperatorsSid = 31
318
- WinBuiltinPrintOperatorsSid = 32
319
- WinBuiltinBackupOperatorsSid = 33
320
- WinBuiltinReplicatorSid = 34
321
- WinBuiltinPreWindows2000CompatibleAccessSid = 35
322
- WinBuiltinRemoteDesktopUsersSid = 36
323
- WinBuiltinNetworkConfigurationOperatorsSid = 37
324
- WinAccountAdministratorSid = 38
325
- WinAccountGuestSid = 39
326
- WinAccountKrbtgtSid = 40
327
- WinAccountDomainAdminsSid = 41
328
- WinAccountDomainUsersSid = 42
329
- WinAccountDomainGuestsSid = 43
330
- WinAccountComputersSid = 44
331
- WinAccountControllersSid = 45
332
- WinAccountCertAdminsSid = 46
333
- WinAccountSchemaAdminsSid = 47
334
- WinAccountEnterpriseAdminsSid = 48
335
- WinAccountPolicyAdminsSid = 49
336
- WinAccountRasAndIasServersSid = 50
337
- WinNTLMAuthenticationSid = 51
338
- WinDigestAuthenticationSid = 52
339
- WinSChannelAuthenticationSid = 53
340
- WinThisOrganizationSid = 54
341
- WinOtherOrganizationSid = 55
342
- WinBuiltinIncomingForestTrustBuildersSid = 56
343
- WinBuiltinPerfMonitoringUsersSid = 57
344
- WinBuiltinPerfLoggingUsersSid = 58
345
- WinBuiltinAuthorizationAccessSid = 59
346
- WinBuiltinTerminalServerLicenseServersSid = 60
347
- WinBuiltinDCOMUsersSid = 61
348
- WinBuiltinIUsersSid = 62
349
- WinIUserSid = 63
350
- WinBuiltinCryptoOperatorsSid = 64
351
- WinUntrustedLabelSid = 65
352
- WinLowLabelSid = 66
353
- WinMediumLabelSid = 67
354
- WinHighLabelSid = 68
355
- WinSystemLabelSid = 69
356
- WinWriteRestrictedCodeSid = 70
357
- WinCreatorOwnerRightsSid = 71
358
- WinCacheablePrincipalsGroupSid = 72
359
- WinNonCacheablePrincipalsGroupSid = 73
360
- WinEnterpriseReadonlyControllersSid = 74
361
- WinAccountReadonlyControllersSid = 75
362
- WinBuiltinEventLogReadersGroup = 76
363
- WinNewEnterpriseReadonlyControllersSid = 77
364
- WinBuiltinCertSvcDComAccessGroup = 78
365
-
366
- # Enum AclInformationClass
367
-
368
- AclRevisionInformation = 1
369
- AclSizeInformation = 2
370
-
371
- API.new('AccessCheck', 'PLLPPLPP', 'B', 'advapi32')
372
- API.new('AccessCheckAndAuditAlarm', 'SLPPPLPIPPP', 'B', 'advapi32')
373
- API.new('AccessCheckByType', 'PPLLPLPPPPP', 'B', 'advapi32')
374
- API.new('AccessCheckByTypeAndAuditAlarm', 'SLSSPPLLLPLLIPPP', 'B', 'advapi32')
375
- API.new('AccessCheckByTypeResultList', 'PPLLPLPPPPP', 'B', 'advapi32')
376
- API.new('AccessCheckByTypeResultListAndAuditAlarm', 'SLSSLPLLLPLLIPPP', 'B', 'advapi32')
377
- API.new('AddAccessAllowedAce', 'PLLP', 'B', 'advapi32')
378
- API.new('AddAccessAllowedAceEx', 'PLLLP', 'B', 'advapi32')
379
- API.new('AddAccessAllowedObjectAce', 'PLLLPPP', 'B', 'advapi32')
380
- API.new('AddAccessDeniedAce', 'PLLP', 'B', 'advapi32')
381
- API.new('AddAccessDeniedAceEx', 'PLLLP', 'B', 'advapi32')
382
- API.new('AddAccessDeniedObjectAce', 'PLLLPPP', 'B', 'advapi32')
383
- API.new('AddAce', 'PLLLL', 'B', 'advapi32')
384
- API.new('AddAuditAccessAce', 'PLLPII', 'B', 'advapi32')
385
- API.new('AddAuditAccessAceEx', 'PLLLPII', 'B', 'advapi32')
386
- API.new('AddAuditAccessObjectAce', 'PLLLPPPII', 'B', 'advapi32')
387
- API.new('AdjustTokenGroups', 'LLPLPP', 'B', 'advapi32')
388
- API.new('AdjustTokenPrivileges', 'LLPLPP', 'B', 'advapi32')
389
- API.new('AllocateAndInitializeSid', 'PLLLLLLLLLP', 'B', 'advapi32')
390
- API.new('AllocateLocallyUniqueId', 'P', 'B', 'advapi32')
391
- API.new('AreAllAccessesGranted', 'LL', 'B', 'advapi32')
392
- API.new('AreAnyAccessesGranted', 'LL', 'B', 'advapi32')
393
- API.new('CheckTokenMembership', 'LPP', 'B', 'advapi32')
394
- API.new('CopySid', 'LLP', 'B', 'advapi32')
395
- API.new('ConvertSidToStringSid', 'LP', 'B', 'advapi32')
396
- API.new('ConvertSecurityDescriptorToStringSecurityDescriptor', 'PLLPP', 'B', 'advapi32')
397
- API.new('ConvertStringSecurityDescriptorToSecurityDescriptor', 'PLPP', 'B', 'advapi32')
398
- API.new('ConvertStringSidToSid', 'LP', 'B', 'advapi32')
399
- API.new('CreateRestrictedToken', 'LLLPLPLPP', 'B', 'advapi32')
400
- API.new('DeleteAce', 'PL', 'B', 'advapi32')
401
- API.new('DuplicateToken', 'LPP', 'B', 'advapi32')
402
- API.new('DuplicateTokenEx', 'LLPLLP', 'B', 'advapi32')
403
- API.new('EqualPrefixSid', 'PP', 'B', 'advapi32')
404
- API.new('EqualSid', 'PP', 'B', 'advapi32')
405
- API.new('FindFirstFreeAce', 'PP', 'B', 'advapi32')
406
- API.new('FreeSid', 'P', 'L', 'advapi32')
407
- API.new('GetAce', 'LLP', 'B', 'advapi32')
408
- API.new('GetAclInformation', 'PPLI', 'B', 'advapi32')
409
- API.new('GetFileSecurity', 'PLPLP', 'B', 'advapi32')
410
- API.new('GetFileSecurityA', 'PLPLP', 'B', 'advapi32')
411
- API.new('GetFileSecurityW', 'PLPLP', 'B', 'advapi32')
412
- API.new('GetLengthSid', 'P', 'L', 'advapi32')
413
- API.new('GetSecurityDescriptorControl', 'PPP', 'B', 'advapi32')
414
- API.new('GetSecurityDescriptorDacl', 'PPPP', 'B', 'advapi32')
415
- API.new('GetSecurityDescriptorGroup', 'PPI', 'B', 'advapi32')
416
- API.new('GetSecurityDescriptorLength', 'P', 'L', 'advapi32')
417
- API.new('GetSecurityDescriptorOwner', 'PPI', 'B', 'advapi32')
418
- API.new('GetSecurityDescriptorRMControl', 'PP', 'L', 'advapi32')
419
- API.new('GetSecurityDescriptorSacl', 'PIPI', 'B', 'advapi32')
420
- API.new('GetSecurityInfo', 'LLLPPPPP', 'L', 'advapi32')
421
- API.new('GetTokenInformation', 'LLPLP', 'B', 'advapi32')
422
- API.new('GetSidIdentifierAuthority', 'P', 'L', 'advapi32')
423
- API.new('GetSidLengthRequired', 'I', 'L', 'advapi32')
424
- API.new('GetSidSubAuthority', 'PL', 'L', 'advapi32')
425
- API.new('GetSidSubAuthorityCount', 'P', 'L', 'advapi32')
426
- API.new('GetUserObjectSecurity', 'LPPLP', 'B', 'user32')
427
- API.new('GetWindowsAccountDomainSid', 'PPP', 'B', 'advapi32')
428
- API.new('InitializeAcl', 'PLL', 'B', 'advapi32')
429
- API.new('InitializeSecurityDescriptor', 'PL', 'B', 'advapi32')
430
- API.new('InitializeSid', 'PPI', 'B', 'advapi32')
431
- API.new('IsTokenRestricted', 'L', 'B', 'advapi32')
432
- API.new('IsValidAcl', 'P', 'B', 'advapi32')
433
- API.new('IsValidSecurityDescriptor', 'P', 'B', 'advapi32')
434
- API.new('IsValidSid', 'P', 'B', 'advapi32')
435
- API.new('LookupAccountName', 'PPPPPPP', 'B', 'advapi32')
436
- API.new('LookupAccountSid', 'PLPPPPP', 'B', 'advapi32')
437
- API.new('LookupPrivilegeDisplayName', 'PPPPP', 'B', 'advapi32')
438
- API.new('LookupPrivilegeName', 'PPPP', 'B', 'advapi32')
439
- API.new('LookupPrivilegeValue', 'PPP', 'B', 'advapi32')
440
- API.new('OpenProcessToken', 'LLP', 'B', 'advapi32')
441
- API.new('OpenThreadToken', 'LLLP', 'B', 'advapi32')
442
- API.new('SetAclInformation', 'PPLL', 'B', 'advapi32')
443
- API.new('SetEntriesInAcl', 'LPPP', 'L', 'advapi32')
444
- API.new('SetFileSecurity', 'PPP', 'B', 'advapi32')
445
- API.new('SetFileSecurityA', 'PPP', 'B', 'advapi32')
446
- API.new('SetFileSecurityW', 'PPP', 'B', 'advapi32')
447
- API.new('SetSecurityDescriptorDacl', 'PIPI', 'B', 'advapi32')
448
- API.new('SetSecurityDescriptorGroup', 'PPI', 'B', 'advapi32')
449
- API.new('SetSecurityDescriptorOwner', 'PPI', 'B', 'advapi32')
450
- API.new('SetSecurityDescriptorRMControl', 'PP', 'L', 'advapi32')
451
- API.new('SetSecurityDescriptorSacl', 'PIPI', 'B', 'advapi32')
452
- API.new('SetSecurityInfo', 'LLLPPPP', 'L', 'advapi32')
453
- API.new('SetThreadToken', 'PL', 'B', 'advapi32')
454
- API.new('SetTokenInformation', 'LLPL', 'B', 'advapi32')
455
- API.new('SetUserObjectSecurity', 'LPP', 'B', 'user32')
456
-
457
- begin
458
- API.new('CreateWellKnownSid', 'IPPP', 'B', 'advapi32')
459
- API.new('AddMandatoryAce', 'PLLLP', 'B', 'advapi32')
460
- API.new('EqualDomainSid', 'PPP', 'B', 'advapi32')
461
- API.new('FreeInheritedFromArray', 'PIP', 'B', 'advapi32')
462
- API.new('GetInheritanceSource', 'PLLIPLPPLP', 'L', 'advapi32')
463
- API.new('IsWellKnownSid', 'PI', 'B', 'advapi32')
464
- rescue Win32::API::LoadLibraryError
465
- # Windows XP or later
466
- end
467
-
468
- begin
469
- API.new('AuditComputeEffectivePolicyBySid', 'PPLP', 'B', 'advapi32')
470
- API.new('AuditComputeEffectivePolicyByToken', 'LPLP', 'B', 'advapi32')
471
- API.new('AuditEnumerateCategories', 'PP', 'B', 'advapi32')
472
- API.new('AuditEnumeratePerUserPolicy', 'P', 'B', 'advapi32')
473
- rescue Win32::API::LoadLibraryError
474
- # Windows Vista or later
475
- end
476
- end
477
- end
1
+ require 'windows/api'
2
+
3
+ # The auto_unicode option has been set to false because the majority of
4
+ # the methods defined here do not have explicit ANSI or Wide character
5
+ # versions.
6
+
7
+ module Windows
8
+ module Security
9
+ API.auto_namespace = 'Windows::Security'
10
+ API.auto_constant = true
11
+ API.auto_method = true
12
+ API.auto_unicode = false
13
+
14
+ ACL_REVISION = 2
15
+ ACL_REVISION1 = 1
16
+ ACL_REVISION2 = 2
17
+ ACL_REVISION3 = 3
18
+ ACL_REVISION4 = 4
19
+ ALLOW_ACE_LENGTH = 62
20
+ DACL_SECURITY_INFORMATION = 4
21
+ SE_DACL_PRESENT = 4
22
+ SECURITY_DESCRIPTOR_MIN_LENGTH = 20
23
+ SECURITY_DESCRIPTOR_REVISION = 1
24
+ SECURITY_DESCRIPTOR_REVISION1 = 1
25
+
26
+ SECURITY_NULL_SID_AUTHORITY = 0
27
+ SECURITY_WORLD_SID_AUTHORITY = 1
28
+ SECURITY_LOCAL_SID_AUTHORITY = 2
29
+ SECURITY_CREATOR_SID_AUTHORITY = 3
30
+ SECURITY_NON_UNIQUE_AUTHORITY = 4
31
+ SECURITY_NT_AUTHORITY = 5
32
+ SECURITY_RESOURCE_MANAGER_AUTHORITY = 9
33
+
34
+ SECURITY_NULL_RID = 0x00000000
35
+ SECURITY_WORLD_RID = 0x00000000
36
+ SECURITY_LOCAL_RID = 0x00000000
37
+ SECURITY_CREATOR_OWNER_RID = 0x00000000
38
+ SECURITY_CREATOR_GROUP_RID = 0x00000001
39
+ SECURITY_CREATOR_OWNER_SERVER_RID = 0x00000002
40
+ SECURITY_CREATOR_GROUP_SERVER_RID = 0x00000003
41
+ SECURITY_DIALUP_RID = 0x00000001
42
+ SECURITY_NETWORK_RID = 0x00000002
43
+ SECURITY_BATCH_RID = 0x00000003
44
+ SECURITY_INTERACTIVE_RID = 0x00000004
45
+ SECURITY_LOGON_IDS_RID = 0x00000005
46
+ SECURITY_LOGON_IDS_RID_COUNT = 3
47
+ SECURITY_SERVICE_RID = 0x00000006
48
+ SECURITY_ANONYMOUS_LOGON_RID = 0x00000007
49
+ SECURITY_PROXY_RID = 0x00000008
50
+
51
+ SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x00000009
52
+ SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID
53
+ SECURITY_PRINCIPAL_SELF_RID = 0x0000000A
54
+ SECURITY_AUTHENTICATED_USER_RID = 0x0000000B
55
+ SECURITY_RESTRICTED_CODE_RID = 0x0000000C
56
+ SECURITY_TERMINAL_SERVER_RID = 0x0000000D
57
+ SECURITY_REMOTE_LOGON_RID = 0x0000000E
58
+ SECURITY_THIS_ORGANIZATION_RID = 0x0000000F
59
+ SECURITY_LOCAL_SYSTEM_RID = 0x00000012
60
+ SECURITY_LOCAL_SERVICE_RID = 0x00000013
61
+ SECURITY_NETWORK_SERVICE_RID = 0x00000014
62
+ SECURITY_NT_NON_UNIQUE = 0x00000015
63
+ SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT = 3
64
+
65
+ SECURITY_BUILTIN_DOMAIN_RID = 0x00000020
66
+ SECURITY_PACKAGE_BASE_RID = 0x00000040
67
+ SECURITY_PACKAGE_RID_COUNT = 2
68
+ SECURITY_PACKAGE_NTLM_RID = 0x0000000A
69
+ SECURITY_PACKAGE_SCHANNEL_RID = 0x0000000E
70
+ SECURITY_PACKAGE_DIGEST_RID = 0x00000015
71
+ SECURITY_MAX_ALWAYS_FILTERED = 0x000003E7
72
+ SECURITY_MIN_NEVER_FILTERED = 0x000003E8
73
+
74
+ SECURITY_OTHER_ORGANIZATION_RID = 0x000003E8
75
+ FOREST_USER_RID_MAX = 0x000001F3
76
+ DOMAIN_USER_RID_ADMIN = 0x000001F4
77
+ DOMAIN_USER_RID_GUEST = 0x000001F5
78
+ DOMAIN_USER_RID_KRBTGT = 0x000001F6
79
+ DOMAIN_USER_RID_MAX = 0x000003E7
80
+ DOMAIN_GROUP_RID_ADMINS = 0x00000200
81
+ DOMAIN_GROUP_RID_USERS = 0x00000201
82
+ DOMAIN_GROUP_RID_GUESTS = 0x00000202
83
+ DOMAIN_GROUP_RID_COMPUTERS = 0x00000203
84
+ DOMAIN_GROUP_RID_CONTROLLERS = 0x00000204
85
+ DOMAIN_GROUP_RID_CERT_ADMINS = 0x00000205
86
+ DOMAIN_GROUP_RID_SCHEMA_ADMINS = 0x00000206
87
+ DOMAIN_GROUP_RID_ENTERPRISE_ADMINS = 0x00000207
88
+ DOMAIN_GROUP_RID_POLICY_ADMINS = 0x00000208
89
+ DOMAIN_ALIAS_RID_ADMINS = 0x00000220
90
+ DOMAIN_ALIAS_RID_USERS = 0x00000221
91
+ DOMAIN_ALIAS_RID_GUESTS = 0x00000222
92
+ DOMAIN_ALIAS_RID_POWER_USERS = 0x00000223
93
+ DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x00000224
94
+ DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x00000225
95
+ DOMAIN_ALIAS_RID_PRINT_OPS = 0x00000226
96
+ DOMAIN_ALIAS_RID_BACKUP_OPS = 0x00000227
97
+ DOMAIN_ALIAS_RID_REPLICATOR = 0x00000228
98
+ DOMAIN_ALIAS_RID_RAS_SERVERS = 0x00000229
99
+
100
+ DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = 0x0000022A
101
+ DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = 0x0000022B
102
+ DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = 0x0000022C
103
+ DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = 0x0000022D
104
+ DOMAIN_ALIAS_RID_MONITORING_USERS = 0x0000022E
105
+ DOMAIN_ALIAS_RID_LOGGING_USERS = 0x0000022F
106
+ DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS = 0x00000230
107
+ DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS = 0x00000231
108
+ DOMAIN_ALIAS_RID_DCOM_USERS = 0x00000232
109
+
110
+ GENERIC_RIGHTS_MASK = 0xF0010000
111
+ GENERIC_RIGHTS_CHK = 0xF0000000
112
+ REST_RIGHTS_MASK = 0x001FFFFF
113
+
114
+ TOKEN_READ = 131080
115
+ TOKEN_WRITE = 131296
116
+ TOKEN_EXECUTE = 131072
117
+ TOKEN_ASSIGN_PRIMARY = 0x0001
118
+ TOKEN_DUPLICATE = 0x0002
119
+ TOKEN_IMPERSONATE = 0x0004
120
+ TOKEN_QUERY = 0x0008
121
+ TOKEN_QUERY_SOURCE = 0x0010
122
+ TOKEN_ADJUST_PRIVILEGES = 0x0020
123
+ TOKEN_ADJUST_GROUPS = 0x0040
124
+ TOKEN_ADJUST_DEFAULT = 0x0080
125
+ TOKEN_ADJUST_SESSIONID = 0x0100
126
+ TOKEN_ALL_ACCESS_P = 983295 # Calculated from WinNt.h
127
+ TOKEN_ALL_ACCESS = TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID
128
+
129
+ SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001
130
+ SE_PRIVILEGE_ENABLED = 0x00000002
131
+ SE_PRIVILEGE_REMOVED = 0X00000004
132
+ SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000
133
+
134
+ OWNER_SECURITY_INFORMATION = 1
135
+ GROUP_SECURITY_INFORMATION = 2
136
+
137
+ # SE_OBJECT_TYPE Enumeration
138
+
139
+ SE_UNKNOWN_OBJECT_TYPE = 0
140
+ SE_FILE_OBJECT = 1
141
+ SE_SERVICE = 2
142
+ SE_PRINTER = 3
143
+ SE_REGISTRY_KEY = 4
144
+ SE_LMSHARE = 5
145
+ SE_KERNEL_OBJECT = 6
146
+ SE_WINDOW_OBJECT = 7
147
+ SE_DS_OBJECT = 8
148
+ SE_DS_OBJECT_ALL = 9
149
+ SE_PROVIDER_DEFINED_OBJECT = 10
150
+ SE_WMIGUID_OBJECT = 11
151
+ SE_REGISTRY_WOW64_32KEY = 12
152
+
153
+ # Defined Privileges
154
+
155
+ SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege"
156
+ SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"
157
+ SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege"
158
+ SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege"
159
+ SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege"
160
+ SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege"
161
+ SE_TCB_NAME = "SeTcbPrivilege"
162
+ SE_SECURITY_NAME = "SeSecurityPrivilege"
163
+ SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege"
164
+ SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege"
165
+ SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege"
166
+ SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege"
167
+ SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege"
168
+ SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege"
169
+ SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege"
170
+ SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege"
171
+ SE_BACKUP_NAME = "SeBackupPrivilege"
172
+ SE_RESTORE_NAME = "SeRestorePrivilege"
173
+ SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
174
+ SE_DEBUG_NAME = "SeDebugPrivilege"
175
+ SE_AUDIT_NAME = "SeAuditPrivilege"
176
+ SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege"
177
+ SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege"
178
+ SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege"
179
+ SE_UNDOCK_NAME = "SeUndockPrivilege"
180
+ SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege"
181
+ SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege"
182
+ SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege"
183
+ SE_IMPERSONATE_NAME = "SeImpersonatePrivilege"
184
+ SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege"
185
+
186
+ ACCESS_MIN_MS_ACE_TYPE = 0x0
187
+ ACCESS_ALLOWED_ACE_TYPE = 0x0
188
+ ACCESS_DENIED_ACE_TYPE = 0x1
189
+ SYSTEM_AUDIT_ACE_TYPE = 0x2
190
+ SYSTEM_ALARM_ACE_TYPE = 0x3
191
+ ACCESS_MAX_MS_V2_ACE_TYPE = 0x3
192
+ ACCESS_ALLOWED_COMPOUND_ACE_TYPE = 0x4
193
+ ACCESS_MAX_MS_V3_ACE_TYPE = 0x4
194
+ ACCESS_MIN_MS_OBJECT_ACE_TYPE = 0x5
195
+ ACCESS_ALLOWED_OBJECT_ACE_TYPE = 0x5
196
+ ACCESS_DENIED_OBJECT_ACE_TYPE = 0x6
197
+ SYSTEM_AUDIT_OBJECT_ACE_TYPE = 0x7
198
+ SYSTEM_ALARM_OBJECT_ACE_TYPE = 0x8
199
+ ACCESS_MAX_MS_OBJECT_ACE_TYPE = 0x8
200
+ ACCESS_MAX_MS_V4_ACE_TYPE = 0x8
201
+ ACCESS_MAX_MS_ACE_TYPE = 0x8
202
+ ACCESS_ALLOWED_CALLBACK_ACE_TYPE = 0x9
203
+ ACCESS_DENIED_CALLBACK_ACE_TYPE = 0xA
204
+ ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE = 0xB
205
+ ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE = 0xC
206
+ SYSTEM_AUDIT_CALLBACK_ACE_TYPE = 0xD
207
+ SYSTEM_ALARM_CALLBACK_ACE_TYPE = 0xE
208
+ SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE = 0xF
209
+ SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE = 0x10
210
+ ACCESS_MAX_MS_V5_ACE_TYPE = 0x10
211
+ OBJECT_INHERIT_ACE = 0x1
212
+ CONTAINER_INHERIT_ACE = 0x2
213
+ NO_PROPAGATE_INHERIT_ACE = 0x4
214
+ INHERIT_ONLY_ACE = 0x8
215
+ INHERITED_ACE = 0x10
216
+ VALID_INHERIT_FLAGS = 0x1F
217
+ SUCCESSFUL_ACCESS_ACE_FLAG = 0x40
218
+ FAILED_ACCESS_ACE_FLAG = 0x80
219
+
220
+ # Standard Access Rights
221
+
222
+ DELETE = 0x00010000
223
+ READ_CONTROL = 0x20000
224
+ WRITE_DAC = 0x40000
225
+ WRITE_OWNER = 0x80000
226
+ SYNCHRONIZE = 0x100000
227
+ STANDARD_RIGHTS_REQUIRED = 0xf0000
228
+ STANDARD_RIGHTS_READ = 0x20000
229
+ STANDARD_RIGHTS_WRITE = 0x20000
230
+ STANDARD_RIGHTS_EXECUTE = 0x20000
231
+ STANDARD_RIGHTS_ALL = 0x1F0000
232
+ SPECIFIC_RIGHTS_ALL = 0xFFFF
233
+ ACCESS_SYSTEM_SECURITY = 0x1000000
234
+ MAXIMUM_ALLOWED = 0x2000000
235
+ GENERIC_READ = 0x80000000
236
+ GENERIC_WRITE = 0x40000000
237
+ GENERIC_EXECUTE = 0x20000000
238
+ GENERIC_ALL = 0x10000000
239
+
240
+ # Enum SidNameUse
241
+
242
+ SidTypeUser = 1
243
+ SidTypeGroup = 2
244
+ SidTypeDomain = 3
245
+ SidTypeAlias = 4
246
+ SidTypeWellKnownGroup = 5
247
+ SidTypeDeletedAccount = 6
248
+ SidTypeInvalid = 7
249
+ SidTypeUnknown = 8
250
+ SidTypeComputer = 9
251
+
252
+ # Enum TokenInformationClass
253
+
254
+ TokenUser = 1
255
+ TokenGroups = 2
256
+ TokenPrivileges = 3
257
+ TokenOwner = 4
258
+ TokenPrimaryGroup = 5
259
+ TokenDefaultDacl = 6
260
+ TokenSource = 7
261
+ TokenType = 8
262
+ TokenImpersonationLevel = 9
263
+ TokenStatistics = 10
264
+ TokenRestrictedSids = 11
265
+ TokenSessionId = 12
266
+ TokenGroupsAndPrivileges = 13
267
+ TokenSessionReference = 14
268
+ TokenSandBoxInert = 15
269
+ TokenAuditPolicy = 16
270
+ TokenOrigin = 17
271
+ TokenElevationType = 18
272
+ TokenLinkedToken = 19
273
+ TokenElevation = 20
274
+ TokenHasRestrictions = 21
275
+ TokenAccessInformation = 22
276
+ TokenVirtualizationAllowed = 23
277
+ TokenVirtualizationEnabled = 24
278
+ TokenIntegrityLevel = 25
279
+ TokenUIAccess = 26
280
+ TokenMandatoryPolicy = 27
281
+ TokenLogonSid = 28
282
+ MaxTokenInfoClass = 29
283
+
284
+ # Enum WellKnownSidType
285
+
286
+ WinNullSid = 0
287
+ WinWorldSid = 1
288
+ WinLocalSid = 2
289
+ WinCreatorOwnerSid = 3
290
+ WinCreatorGroupSid = 4
291
+ WinCreatorOwnerServerSid = 5
292
+ WinCreatorGroupServerSid = 6
293
+ WinNtAuthoritySid = 7
294
+ WinDialupSid = 8
295
+ WinNetworkSid = 9
296
+ WinBatchSid = 10
297
+ WinInteractiveSid = 11
298
+ WinServiceSid = 12
299
+ WinAnonymousSid = 13
300
+ WinProxySid = 14
301
+ WinEnterpriseControllersSid = 15
302
+ WinSelfSid = 16
303
+ WinAuthenticatedUserSid = 17
304
+ WinRestrictedCodeSid = 18
305
+ WinTerminalServerSid = 19
306
+ WinRemoteLogonIdSid = 20
307
+ WinLogonIdsSid = 21
308
+ WinLocalSystemSid = 22
309
+ WinLocalServiceSid = 23
310
+ WinNetworkServiceSid = 24
311
+ WinBuiltinDomainSid = 25
312
+ WinBuiltinAdministratorsSid = 26
313
+ WinBuiltinUsersSid = 27
314
+ WinBuiltinGuestsSid = 28
315
+ WinBuiltinPowerUsersSid = 29
316
+ WinBuiltinAccountOperatorsSid = 30
317
+ WinBuiltinSystemOperatorsSid = 31
318
+ WinBuiltinPrintOperatorsSid = 32
319
+ WinBuiltinBackupOperatorsSid = 33
320
+ WinBuiltinReplicatorSid = 34
321
+ WinBuiltinPreWindows2000CompatibleAccessSid = 35
322
+ WinBuiltinRemoteDesktopUsersSid = 36
323
+ WinBuiltinNetworkConfigurationOperatorsSid = 37
324
+ WinAccountAdministratorSid = 38
325
+ WinAccountGuestSid = 39
326
+ WinAccountKrbtgtSid = 40
327
+ WinAccountDomainAdminsSid = 41
328
+ WinAccountDomainUsersSid = 42
329
+ WinAccountDomainGuestsSid = 43
330
+ WinAccountComputersSid = 44
331
+ WinAccountControllersSid = 45
332
+ WinAccountCertAdminsSid = 46
333
+ WinAccountSchemaAdminsSid = 47
334
+ WinAccountEnterpriseAdminsSid = 48
335
+ WinAccountPolicyAdminsSid = 49
336
+ WinAccountRasAndIasServersSid = 50
337
+ WinNTLMAuthenticationSid = 51
338
+ WinDigestAuthenticationSid = 52
339
+ WinSChannelAuthenticationSid = 53
340
+ WinThisOrganizationSid = 54
341
+ WinOtherOrganizationSid = 55
342
+ WinBuiltinIncomingForestTrustBuildersSid = 56
343
+ WinBuiltinPerfMonitoringUsersSid = 57
344
+ WinBuiltinPerfLoggingUsersSid = 58
345
+ WinBuiltinAuthorizationAccessSid = 59
346
+ WinBuiltinTerminalServerLicenseServersSid = 60
347
+ WinBuiltinDCOMUsersSid = 61
348
+ WinBuiltinIUsersSid = 62
349
+ WinIUserSid = 63
350
+ WinBuiltinCryptoOperatorsSid = 64
351
+ WinUntrustedLabelSid = 65
352
+ WinLowLabelSid = 66
353
+ WinMediumLabelSid = 67
354
+ WinHighLabelSid = 68
355
+ WinSystemLabelSid = 69
356
+ WinWriteRestrictedCodeSid = 70
357
+ WinCreatorOwnerRightsSid = 71
358
+ WinCacheablePrincipalsGroupSid = 72
359
+ WinNonCacheablePrincipalsGroupSid = 73
360
+ WinEnterpriseReadonlyControllersSid = 74
361
+ WinAccountReadonlyControllersSid = 75
362
+ WinBuiltinEventLogReadersGroup = 76
363
+ WinNewEnterpriseReadonlyControllersSid = 77
364
+ WinBuiltinCertSvcDComAccessGroup = 78
365
+
366
+ # Enum AclInformationClass
367
+
368
+ AclRevisionInformation = 1
369
+ AclSizeInformation = 2
370
+
371
+ API.new('AccessCheck', 'PLLPPLPP', 'B', 'advapi32')
372
+ API.new('AccessCheckAndAuditAlarm', 'SLPPPLPIPPP', 'B', 'advapi32')
373
+ API.new('AccessCheckByType', 'PPLLPLPPPPP', 'B', 'advapi32')
374
+ API.new('AccessCheckByTypeAndAuditAlarm', 'SLSSPPLLLPLLIPPP', 'B', 'advapi32')
375
+ API.new('AccessCheckByTypeResultList', 'PPLLPLPPPPP', 'B', 'advapi32')
376
+ API.new('AccessCheckByTypeResultListAndAuditAlarm', 'SLSSLPLLLPLLIPPP', 'B', 'advapi32')
377
+ API.new('AddAccessAllowedAce', 'PLLP', 'B', 'advapi32')
378
+ API.new('AddAccessAllowedAceEx', 'PLLLP', 'B', 'advapi32')
379
+ API.new('AddAccessAllowedObjectAce', 'PLLLPPP', 'B', 'advapi32')
380
+ API.new('AddAccessDeniedAce', 'PLLP', 'B', 'advapi32')
381
+ API.new('AddAccessDeniedAceEx', 'PLLLP', 'B', 'advapi32')
382
+ API.new('AddAccessDeniedObjectAce', 'PLLLPPP', 'B', 'advapi32')
383
+ API.new('AddAce', 'PLLLL', 'B', 'advapi32')
384
+ API.new('AddAuditAccessAce', 'PLLPII', 'B', 'advapi32')
385
+ API.new('AddAuditAccessAceEx', 'PLLLPII', 'B', 'advapi32')
386
+ API.new('AddAuditAccessObjectAce', 'PLLLPPPII', 'B', 'advapi32')
387
+ API.new('AdjustTokenGroups', 'LLPLPP', 'B', 'advapi32')
388
+ API.new('AdjustTokenPrivileges', 'LLPLPP', 'B', 'advapi32')
389
+ API.new('AllocateAndInitializeSid', 'PLLLLLLLLLP', 'B', 'advapi32')
390
+ API.new('AllocateLocallyUniqueId', 'P', 'B', 'advapi32')
391
+ API.new('AreAllAccessesGranted', 'LL', 'B', 'advapi32')
392
+ API.new('AreAnyAccessesGranted', 'LL', 'B', 'advapi32')
393
+ API.new('CheckTokenMembership', 'LPP', 'B', 'advapi32')
394
+ API.new('CopySid', 'LLP', 'B', 'advapi32')
395
+ API.new('ConvertSidToStringSid', 'LP', 'B', 'advapi32')
396
+ API.new('ConvertSecurityDescriptorToStringSecurityDescriptor', 'PLLPP', 'B', 'advapi32')
397
+ API.new('ConvertStringSecurityDescriptorToSecurityDescriptor', 'PLPP', 'B', 'advapi32')
398
+ API.new('ConvertStringSidToSid', 'LP', 'B', 'advapi32')
399
+ API.new('CreateRestrictedToken', 'LLLPLPLPP', 'B', 'advapi32')
400
+ API.new('DeleteAce', 'PL', 'B', 'advapi32')
401
+ API.new('DuplicateToken', 'LPP', 'B', 'advapi32')
402
+ API.new('DuplicateTokenEx', 'LLPLLP', 'B', 'advapi32')
403
+ API.new('EqualPrefixSid', 'PP', 'B', 'advapi32')
404
+ API.new('EqualSid', 'PP', 'B', 'advapi32')
405
+ API.new('FindFirstFreeAce', 'PP', 'B', 'advapi32')
406
+ API.new('FreeSid', 'P', 'L', 'advapi32')
407
+ API.new('GetAce', 'LLP', 'B', 'advapi32')
408
+ API.new('GetAclInformation', 'PPLI', 'B', 'advapi32')
409
+ API.new('GetFileSecurity', 'PLPLP', 'B', 'advapi32')
410
+ API.new('GetFileSecurityA', 'PLPLP', 'B', 'advapi32')
411
+ API.new('GetFileSecurityW', 'PLPLP', 'B', 'advapi32')
412
+ API.new('GetLengthSid', 'P', 'L', 'advapi32')
413
+ API.new('GetSecurityDescriptorControl', 'PPP', 'B', 'advapi32')
414
+ API.new('GetSecurityDescriptorDacl', 'PPPP', 'B', 'advapi32')
415
+ API.new('GetSecurityDescriptorGroup', 'PPI', 'B', 'advapi32')
416
+ API.new('GetSecurityDescriptorLength', 'P', 'L', 'advapi32')
417
+ API.new('GetSecurityDescriptorOwner', 'PPI', 'B', 'advapi32')
418
+ API.new('GetSecurityDescriptorRMControl', 'PP', 'L', 'advapi32')
419
+ API.new('GetSecurityDescriptorSacl', 'PIPI', 'B', 'advapi32')
420
+ API.new('GetSecurityInfo', 'LLLPPPPP', 'L', 'advapi32')
421
+ API.new('GetTokenInformation', 'LLPLP', 'B', 'advapi32')
422
+ API.new('GetSidIdentifierAuthority', 'P', 'L', 'advapi32')
423
+ API.new('GetSidLengthRequired', 'I', 'L', 'advapi32')
424
+ API.new('GetSidSubAuthority', 'PL', 'L', 'advapi32')
425
+ API.new('GetSidSubAuthorityCount', 'P', 'L', 'advapi32')
426
+ API.new('GetUserObjectSecurity', 'LPPLP', 'B', 'user32')
427
+ API.new('GetWindowsAccountDomainSid', 'PPP', 'B', 'advapi32')
428
+ API.new('InitializeAcl', 'PLL', 'B', 'advapi32')
429
+ API.new('InitializeSecurityDescriptor', 'PL', 'B', 'advapi32')
430
+ API.new('InitializeSid', 'PPI', 'B', 'advapi32')
431
+ API.new('IsTokenRestricted', 'L', 'B', 'advapi32')
432
+ API.new('IsValidAcl', 'P', 'B', 'advapi32')
433
+ API.new('IsValidSecurityDescriptor', 'P', 'B', 'advapi32')
434
+ API.new('IsValidSid', 'P', 'B', 'advapi32')
435
+ API.new('LookupAccountName', 'PPPPPPP', 'B', 'advapi32')
436
+ API.new('LookupAccountSid', 'PLPPPPP', 'B', 'advapi32')
437
+ API.new('LookupPrivilegeDisplayName', 'PPPPP', 'B', 'advapi32')
438
+ API.new('LookupPrivilegeName', 'PPPP', 'B', 'advapi32')
439
+ API.new('LookupPrivilegeValue', 'PPP', 'B', 'advapi32')
440
+ API.new('OpenProcessToken', 'LLP', 'B', 'advapi32')
441
+ API.new('OpenThreadToken', 'LLLP', 'B', 'advapi32')
442
+ API.new('SetAclInformation', 'PPLL', 'B', 'advapi32')
443
+ API.new('SetEntriesInAcl', 'LPPP', 'L', 'advapi32')
444
+ API.new('SetFileSecurity', 'PPP', 'B', 'advapi32')
445
+ API.new('SetFileSecurityA', 'PPP', 'B', 'advapi32')
446
+ API.new('SetFileSecurityW', 'PPP', 'B', 'advapi32')
447
+ API.new('SetSecurityDescriptorDacl', 'PIPI', 'B', 'advapi32')
448
+ API.new('SetSecurityDescriptorGroup', 'PPI', 'B', 'advapi32')
449
+ API.new('SetSecurityDescriptorOwner', 'PPI', 'B', 'advapi32')
450
+ API.new('SetSecurityDescriptorRMControl', 'PP', 'L', 'advapi32')
451
+ API.new('SetSecurityDescriptorSacl', 'PIPI', 'B', 'advapi32')
452
+ API.new('SetSecurityInfo', 'LLLPPPP', 'L', 'advapi32')
453
+ API.new('SetThreadToken', 'PL', 'B', 'advapi32')
454
+ API.new('SetTokenInformation', 'LLPL', 'B', 'advapi32')
455
+ API.new('SetUserObjectSecurity', 'LPP', 'B', 'user32')
456
+
457
+ begin
458
+ API.new('CreateWellKnownSid', 'IPPP', 'B', 'advapi32')
459
+ API.new('AddMandatoryAce', 'PLLLP', 'B', 'advapi32')
460
+ API.new('EqualDomainSid', 'PPP', 'B', 'advapi32')
461
+ API.new('FreeInheritedFromArray', 'PIP', 'B', 'advapi32')
462
+ API.new('GetInheritanceSource', 'PLLIPLPPLP', 'L', 'advapi32')
463
+ API.new('IsWellKnownSid', 'PI', 'B', 'advapi32')
464
+ rescue Win32::API::LoadLibraryError
465
+ # Windows XP or later
466
+ end
467
+
468
+ begin
469
+ API.new('AuditComputeEffectivePolicyBySid', 'PPLP', 'B', 'advapi32')
470
+ API.new('AuditComputeEffectivePolicyByToken', 'LPLP', 'B', 'advapi32')
471
+ API.new('AuditEnumerateCategories', 'PP', 'B', 'advapi32')
472
+ API.new('AuditEnumeratePerUserPolicy', 'P', 'B', 'advapi32')
473
+ rescue Win32::API::LoadLibraryError
474
+ # Windows Vista or later
475
+ end
476
+ end
477
+ end