windows-pr 1.1.3 → 1.2.0

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 (123) hide show
  1. data/CHANGES +15 -0
  2. data/MANIFEST +65 -65
  3. data/README +149 -149
  4. data/Rakefile +37 -52
  5. data/doc/conversion_guide.txt +37 -37
  6. data/lib/windows/clipboard.rb +2 -0
  7. data/lib/windows/com.rb +2 -0
  8. data/lib/windows/com/accessibility.rb +12 -10
  9. data/lib/windows/com/automation.rb +149 -147
  10. data/lib/windows/com/variant.rb +24 -22
  11. data/lib/windows/console.rb +114 -112
  12. data/lib/windows/debug.rb +35 -33
  13. data/lib/windows/device_io.rb +248 -246
  14. data/lib/windows/directory.rb +2 -0
  15. data/lib/windows/error.rb +2 -0
  16. data/lib/windows/eventlog.rb +2 -0
  17. data/lib/windows/file.rb +264 -262
  18. data/lib/windows/file_mapping.rb +25 -23
  19. data/lib/windows/filesystem.rb +2 -0
  20. data/lib/windows/gdi/bitmap.rb +65 -63
  21. data/lib/windows/gdi/device_context.rb +46 -44
  22. data/lib/windows/gdi/metafile.rb +40 -38
  23. data/lib/windows/gdi/painting_drawing.rb +115 -113
  24. data/lib/windows/handle.rb +2 -0
  25. data/lib/windows/library.rb +2 -0
  26. data/lib/windows/limits.rb +34 -31
  27. data/lib/windows/mailslot.rb +2 -0
  28. data/lib/windows/memory.rb +2 -0
  29. data/lib/windows/msvcrt/buffer.rb +75 -73
  30. data/lib/windows/msvcrt/directory.rb +31 -29
  31. data/lib/windows/msvcrt/file.rb +47 -45
  32. data/lib/windows/msvcrt/io.rb +62 -60
  33. data/lib/windows/msvcrt/string.rb +2 -0
  34. data/lib/windows/msvcrt/time.rb +169 -167
  35. data/lib/windows/national.rb +580 -578
  36. data/lib/windows/network/management.rb +525 -523
  37. data/lib/windows/network/snmp.rb +92 -90
  38. data/lib/windows/network/winsock.rb +128 -126
  39. data/lib/windows/nio.rb +2 -0
  40. data/lib/windows/ntfs/winternl.rb +96 -82
  41. data/lib/windows/path.rb +143 -141
  42. data/lib/windows/pipe.rb +42 -40
  43. data/lib/windows/process.rb +2 -0
  44. data/lib/windows/registry.rb +171 -126
  45. data/lib/windows/security.rb +479 -477
  46. data/lib/windows/security/authentication.rb +32 -30
  47. data/lib/windows/service.rb +142 -140
  48. data/lib/windows/shell.rb +171 -169
  49. data/lib/windows/socket.rb +86 -0
  50. data/lib/windows/sound.rb +39 -37
  51. data/lib/windows/synchronize.rb +133 -131
  52. data/lib/windows/system_info.rb +4 -2
  53. data/lib/windows/thread.rb +2 -0
  54. data/lib/windows/time.rb +48 -46
  55. data/lib/windows/tool_helper.rb +36 -34
  56. data/lib/windows/unicode.rb +2 -0
  57. data/lib/windows/volume.rb +61 -59
  58. data/lib/windows/window.rb +81 -79
  59. data/lib/windows/window/classes.rb +59 -57
  60. data/lib/windows/window/dialog.rb +91 -89
  61. data/lib/windows/window/menu.rb +102 -100
  62. data/lib/windows/window/message.rb +297 -295
  63. data/lib/windows/window/properties.rb +20 -18
  64. data/lib/windows/window/timer.rb +19 -17
  65. data/lib/windows/wsa.rb +102 -0
  66. data/test/tc_clipboard.rb +41 -41
  67. data/test/tc_com.rb +32 -32
  68. data/test/tc_com_automation.rb +15 -15
  69. data/test/tc_console.rb +108 -108
  70. data/test/tc_debug.rb +48 -48
  71. data/test/tc_device_io.rb +29 -29
  72. data/test/tc_directory.rb +25 -25
  73. data/test/tc_error.rb +38 -50
  74. data/test/tc_eventlog.rb +58 -58
  75. data/test/tc_file.rb +67 -67
  76. data/test/tc_file_mapping.rb +38 -38
  77. data/test/tc_filesystem.rb +27 -27
  78. data/test/tc_gdi_bitmap.rb +25 -25
  79. data/test/tc_gdi_metafile.rb +23 -23
  80. data/test/tc_handle.rb +36 -36
  81. data/test/tc_library.rb +37 -37
  82. data/test/tc_limits.rb +34 -34
  83. data/test/tc_mailslot.rb +22 -22
  84. data/test/tc_memory.rb +44 -44
  85. data/test/tc_msvcrt_buffer.rb +59 -68
  86. data/test/tc_msvcrt_directory.rb +96 -98
  87. data/test/tc_msvcrt_file.rb +80 -80
  88. data/test/tc_msvcrt_io.rb +48 -48
  89. data/test/tc_msvcrt_string.rb +94 -93
  90. data/test/tc_msvcrt_time.rb +19 -29
  91. data/test/tc_national.rb +38 -38
  92. data/test/tc_network_management.rb +32 -32
  93. data/test/tc_network_snmp.rb +31 -31
  94. data/test/tc_network_winsock.rb +34 -34
  95. data/test/tc_nio.rb +32 -32
  96. data/test/tc_ntfs_winternl.rb +33 -18
  97. data/test/tc_path.rb +90 -90
  98. data/test/tc_pipe.rb +53 -53
  99. data/test/tc_process.rb +24 -24
  100. data/test/tc_registry.rb +29 -29
  101. data/test/tc_security.rb +104 -104
  102. data/test/tc_security_authentication.rb +34 -34
  103. data/test/tc_service.rb +57 -57
  104. data/test/tc_shell.rb +34 -34
  105. data/test/tc_socket.rb +20 -0
  106. data/test/tc_sound.rb +37 -37
  107. data/test/tc_synchronize.rb +75 -75
  108. data/test/tc_system_info.rb +33 -43
  109. data/test/tc_thread.rb +29 -29
  110. data/test/tc_time.rb +32 -32
  111. data/test/tc_tool_helper.rb +29 -29
  112. data/test/tc_unicode.rb +62 -62
  113. data/test/tc_volume.rb +47 -47
  114. data/test/tc_window.rb +45 -45
  115. data/test/tc_window_classes.rb +33 -33
  116. data/test/tc_window_dialog.rb +33 -33
  117. data/test/tc_window_menu.rb +29 -29
  118. data/test/tc_window_message.rb +33 -33
  119. data/test/tc_window_properties.rb +29 -29
  120. data/test/tc_window_timer.rb +29 -29
  121. data/test/tc_wsa.rb +19 -0
  122. data/windows-pr.gemspec +1 -1
  123. metadata +13 -7
@@ -1,477 +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
- 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
+ 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