windows-pr 1.2.2 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
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