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