windows-pr 1.1.3 → 1.2.0

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