windows-pr 1.1.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. data/CHANGES +408 -404
  2. data/MANIFEST +65 -65
  3. data/README +149 -149
  4. data/Rakefile +52 -52
  5. data/doc/conversion_guide.txt +37 -37
  6. data/lib/windows/clipboard.rb +59 -59
  7. data/lib/windows/com.rb +190 -189
  8. data/lib/windows/com/automation.rb +147 -147
  9. data/lib/windows/com/variant.rb +22 -22
  10. data/lib/windows/console.rb +112 -112
  11. data/lib/windows/debug.rb +33 -33
  12. data/lib/windows/device_io.rb +246 -246
  13. data/lib/windows/directory.rb +25 -25
  14. data/lib/windows/error.rb +482 -482
  15. data/lib/windows/eventlog.rb +78 -78
  16. data/lib/windows/file.rb +262 -262
  17. data/lib/windows/file_mapping.rb +23 -23
  18. data/lib/windows/filesystem.rb +13 -13
  19. data/lib/windows/gdi/bitmap.rb +63 -63
  20. data/lib/windows/gdi/device_context.rb +44 -44
  21. data/lib/windows/gdi/metafile.rb +38 -38
  22. data/lib/windows/gdi/painting_drawing.rb +113 -113
  23. data/lib/windows/handle.rb +21 -21
  24. data/lib/windows/library.rb +42 -42
  25. data/lib/windows/limits.rb +31 -31
  26. data/lib/windows/mailslot.rb +22 -22
  27. data/lib/windows/memory.rb +126 -126
  28. data/lib/windows/msvcrt/buffer.rb +73 -73
  29. data/lib/windows/msvcrt/directory.rb +29 -29
  30. data/lib/windows/msvcrt/file.rb +45 -45
  31. data/lib/windows/msvcrt/io.rb +71 -71
  32. data/lib/windows/msvcrt/time.rb +167 -167
  33. data/lib/windows/national.rb +578 -578
  34. data/lib/windows/network/management.rb +523 -523
  35. data/lib/windows/network/snmp.rb +90 -90
  36. data/lib/windows/network/winsock.rb +126 -126
  37. data/lib/windows/nio.rb +48 -47
  38. data/lib/windows/ntfs/winternl.rb +96 -96
  39. data/lib/windows/path.rb +141 -141
  40. data/lib/windows/pipe.rb +40 -40
  41. data/lib/windows/process.rb +174 -174
  42. data/lib/windows/registry.rb +126 -126
  43. data/lib/windows/security.rb +477 -477
  44. data/lib/windows/security/authentication.rb +30 -30
  45. data/lib/windows/service.rb +140 -140
  46. data/lib/windows/shell.rb +169 -169
  47. data/lib/windows/sound.rb +37 -37
  48. data/lib/windows/synchronize.rb +131 -131
  49. data/lib/windows/system_info.rb +227 -222
  50. data/lib/windows/thread.rb +62 -62
  51. data/lib/windows/time.rb +46 -46
  52. data/lib/windows/tool_helper.rb +34 -34
  53. data/lib/windows/volume.rb +59 -59
  54. data/lib/windows/window.rb +79 -79
  55. data/lib/windows/window/classes.rb +57 -57
  56. data/lib/windows/window/dialog.rb +89 -89
  57. data/lib/windows/window/menu.rb +100 -100
  58. data/lib/windows/window/message.rb +295 -295
  59. data/lib/windows/window/properties.rb +18 -18
  60. data/lib/windows/window/timer.rb +17 -17
  61. data/test/tc_clipboard.rb +41 -41
  62. data/test/tc_com.rb +32 -32
  63. data/test/tc_com_automation.rb +15 -15
  64. data/test/tc_console.rb +108 -108
  65. data/test/tc_debug.rb +48 -48
  66. data/test/tc_device_io.rb +29 -29
  67. data/test/tc_directory.rb +25 -25
  68. data/test/tc_error.rb +49 -49
  69. data/test/tc_eventlog.rb +58 -58
  70. data/test/tc_file.rb +67 -67
  71. data/test/tc_file_mapping.rb +38 -38
  72. data/test/tc_filesystem.rb +27 -27
  73. data/test/tc_gdi_bitmap.rb +25 -25
  74. data/test/tc_gdi_metafile.rb +23 -23
  75. data/test/tc_handle.rb +36 -36
  76. data/test/tc_library.rb +37 -37
  77. data/test/tc_limits.rb +34 -34
  78. data/test/tc_mailslot.rb +22 -22
  79. data/test/tc_memory.rb +44 -44
  80. data/test/tc_msvcrt_buffer.rb +68 -68
  81. data/test/tc_msvcrt_directory.rb +98 -98
  82. data/test/tc_msvcrt_file.rb +80 -80
  83. data/test/tc_msvcrt_io.rb +48 -48
  84. data/test/tc_msvcrt_string.rb +93 -93
  85. data/test/tc_msvcrt_time.rb +29 -29
  86. data/test/tc_national.rb +38 -38
  87. data/test/tc_network_management.rb +32 -32
  88. data/test/tc_network_snmp.rb +31 -31
  89. data/test/tc_network_winsock.rb +34 -34
  90. data/test/tc_nio.rb +32 -32
  91. data/test/tc_ntfs_winternl.rb +29 -29
  92. data/test/tc_path.rb +90 -90
  93. data/test/tc_pipe.rb +53 -53
  94. data/test/tc_process.rb +24 -24
  95. data/test/tc_registry.rb +29 -29
  96. data/test/tc_security.rb +104 -104
  97. data/test/tc_security_authentication.rb +34 -34
  98. data/test/tc_service.rb +57 -57
  99. data/test/tc_shell.rb +34 -34
  100. data/test/tc_sound.rb +37 -37
  101. data/test/tc_synchronize.rb +75 -75
  102. data/test/tc_system_info.rb +43 -43
  103. data/test/tc_thread.rb +29 -29
  104. data/test/tc_time.rb +32 -32
  105. data/test/tc_tool_helper.rb +29 -29
  106. data/test/tc_volume.rb +47 -47
  107. data/test/tc_window.rb +45 -45
  108. data/test/tc_window_classes.rb +33 -33
  109. data/test/tc_window_dialog.rb +33 -33
  110. data/test/tc_window_menu.rb +29 -29
  111. data/test/tc_window_message.rb +33 -33
  112. data/test/tc_window_properties.rb +29 -29
  113. data/test/tc_window_timer.rb +29 -29
  114. data/windows-pr.gemspec +34 -34
  115. metadata +4 -4
data/lib/windows/pipe.rb CHANGED
@@ -1,40 +1,40 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module Pipe
5
- API.auto_namespace = 'Windows::Pipe'
6
- API.auto_constant = true
7
- API.auto_method = true
8
- API.auto_unicode = true
9
-
10
- NMPWAIT_NOWAIT = 0x00000001
11
- NMPWAIT_WAIT_FOREVER = 0xffffffff
12
- NMPWAIT_USE_DEFAULT_WAIT = 0x00000000
13
-
14
- PIPE_WAIT = 0x00000000
15
- PIPE_NOWAIT = 0x00000001
16
- PIPE_ACCESS_INBOUND = 0x00000001
17
- PIPE_ACCESS_OUTBOUND = 0x00000002
18
- PIPE_ACCESS_DUPLEX = 0x00000003
19
- PIPE_TYPE_BYTE = 0x00000000
20
- PIPE_TYPE_MESSAGE = 0x00000004
21
- PIPE_READMODE_BYTE = 0x00000000
22
- PIPE_READMODE_MESSAGE = 0x00000002
23
- PIPE_CLIENT_END = 0x00000000
24
- PIPE_SERVER_END = 0x00000001
25
-
26
- PIPE_UNLIMITED_INSTANCES = 255
27
-
28
- API.new('CallNamedPipe', 'PPLPLPL', 'B')
29
- API.new('ConnectNamedPipe', 'LP', 'B')
30
- API.new('CreateNamedPipe', 'PLLLLLLL', 'L')
31
- API.new('CreatePipe', 'PPPL', 'B')
32
- API.new('DisconnectNamedPipe', 'L', 'B')
33
- API.new('GetNamedPipeHandleState', 'LPPPPPL', 'B')
34
- API.new('GetNamedPipeInfo', 'LPPPP', 'B')
35
- API.new('PeekNamedPipe', 'LPLPPP', 'B')
36
- API.new('SetNamedPipeHandleState', 'LPPP', 'B')
37
- API.new('TransactNamedPipe', 'LPLPLPP', 'B')
38
- API.new('WaitNamedPipe', 'PL', 'B')
39
- end
40
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module Pipe
5
+ API.auto_namespace = 'Windows::Pipe'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = true
9
+
10
+ NMPWAIT_NOWAIT = 0x00000001
11
+ NMPWAIT_WAIT_FOREVER = 0xffffffff
12
+ NMPWAIT_USE_DEFAULT_WAIT = 0x00000000
13
+
14
+ PIPE_WAIT = 0x00000000
15
+ PIPE_NOWAIT = 0x00000001
16
+ PIPE_ACCESS_INBOUND = 0x00000001
17
+ PIPE_ACCESS_OUTBOUND = 0x00000002
18
+ PIPE_ACCESS_DUPLEX = 0x00000003
19
+ PIPE_TYPE_BYTE = 0x00000000
20
+ PIPE_TYPE_MESSAGE = 0x00000004
21
+ PIPE_READMODE_BYTE = 0x00000000
22
+ PIPE_READMODE_MESSAGE = 0x00000002
23
+ PIPE_CLIENT_END = 0x00000000
24
+ PIPE_SERVER_END = 0x00000001
25
+
26
+ PIPE_UNLIMITED_INSTANCES = 255
27
+
28
+ API.new('CallNamedPipe', 'PPLPLPL', 'B')
29
+ API.new('ConnectNamedPipe', 'LP', 'B')
30
+ API.new('CreateNamedPipe', 'PLLLLLLL', 'L')
31
+ API.new('CreatePipe', 'PPPL', 'B')
32
+ API.new('DisconnectNamedPipe', 'L', 'B')
33
+ API.new('GetNamedPipeHandleState', 'LPPPPPL', 'B')
34
+ API.new('GetNamedPipeInfo', 'LPPPP', 'B')
35
+ API.new('PeekNamedPipe', 'LPLPPP', 'B')
36
+ API.new('SetNamedPipeHandleState', 'LPPP', 'B')
37
+ API.new('TransactNamedPipe', 'LPLPLPP', 'B')
38
+ API.new('WaitNamedPipe', 'PL', 'B')
39
+ end
40
+ end
@@ -1,174 +1,174 @@
1
- require 'windows/api'
2
-
3
- # The Windows module serves as a namespace only.
4
- module Windows
5
- # The Process module includes process related functions and constants,
6
- # including some tool help functions that relate to processes.
7
- module Process
8
- API.auto_namespace = 'Windows::Process'
9
- API.auto_constant = true
10
- API.auto_method = true
11
- API.auto_unicode = true
12
-
13
- # Process access rights
14
-
15
- PROCESS_ALL_ACCESS = 0x1F0FFF
16
- PROCESS_CREATE_PROCESS = 0x0080
17
- PROCESS_CREATE_THREAD = 0x0002
18
- PROCESS_DUP_HANDLE = 0x0040
19
- PROCESS_QUERY_INFORMATION = 0x0400
20
- PROCESS_QUERY_LIMITED_INFORMATION = 0x1000
21
- PROCESS_SET_QUOTA = 0x0100
22
- PROCESS_SET_INFORMATION = 0x0200
23
- PROCESS_SUSPEND_RESUME = 0x0800
24
- PROCESS_TERMINATE = 0x0001
25
- PROCESS_VM_OPERATION = 0x0008
26
- PROCESS_VM_READ = 0x0010
27
- PROCESS_VM_WRITE = 0x0020
28
- SYNCHRONIZE = 1048576
29
- STILL_ACTIVE = 259
30
-
31
- # Process priority flags
32
-
33
- ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000
34
- BELOW_NORMAL_PRIORITY_CLASS = 0x00004000
35
- HIGH_PRIORITY_CLASS = 0x00000080
36
- IDLE_PRIORITY_CLASS = 0x00000040
37
- NORMAL_PRIORITY_CLASS = 0x00000020
38
- REALTIME_PRIORITY_CLASS = 0x00000100
39
-
40
- # Process creation flags
41
-
42
- CREATE_BREAKAWAY_FROM_JOB = 0x01000000
43
- CREATE_DEFAULT_ERROR_MODE = 0x04000000
44
- CREATE_NEW_CONSOLE = 0x00000010
45
- CREATE_NEW_PROCESS_GROUP = 0x00000200
46
- CREATE_NO_WINDOW = 0x08000000
47
- CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000
48
- CREATE_SEPARATE_WOW_VDM = 0x00000800
49
- CREATE_SHARED_WOW_VDM = 0x00001000
50
- CREATE_SUSPENDED = 0x00000004
51
- CREATE_UNICODE_ENVIRONMENT = 0x00000400
52
- DEBUG_ONLY_THIS_PROCESS = 0x00000002
53
- DEBUG_PROCESS = 0x00000001
54
- DETACHED_PROCESS = 0x00000008
55
-
56
- STARTF_USESHOWWINDOW = 0x00000001
57
- STARTF_USESIZE = 0x00000002
58
- STARTF_USEPOSITION = 0x00000004
59
- STARTF_USECOUNTCHARS = 0x00000008
60
- STARTF_USEFILLATTRIBUTE = 0x00000010
61
- STARTF_RUNFULLSCREEN = 0x00000020
62
- STARTF_FORCEONFEEDBACK = 0x00000040
63
- STARTF_FORCEOFFFEEDBACK = 0x00000080
64
- STARTF_USESTDHANDLES = 0x00000100
65
- STARTF_USEHOTKEY = 0x00000200
66
-
67
- LOGON_WITH_PROFILE = 0x00000001
68
- LOGON_NETCREDENTIALS_ONLY = 0x00000002
69
-
70
- SHUTDOWN_NORETRY = 0x00000001
71
-
72
- # Job Object Classes
73
-
74
- JobObjectBasicLimitInformation = 2
75
- JobObjectBasicUIRestrictions = 4
76
- JobObjectSecurityLimitInformation = 5
77
- JobObjectEndOfJobTimeInformation = 6
78
- JobObjectAssociateCompletionPortInformation = 7
79
- JobObjectExtendedLimitInformation = 9
80
- JobObjectGroupInformation = 11
81
-
82
- # Job Limit Flags
83
-
84
- JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001
85
- JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002
86
- JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004
87
- JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008
88
- JOB_OBJECT_LIMIT_AFFINITY = 0x00000010
89
- JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020
90
- JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040
91
- JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080
92
- JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100
93
- JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200
94
- JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400
95
- JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800
96
- JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000
97
- JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000
98
-
99
- # Job Access Rights
100
-
101
- JOB_OBJECT_ASSIGN_PROCESS = 0x0001
102
- JOB_OBJECT_SET_ATTRIBUTES = 0x0002
103
- JOB_OBJECT_QUERY = 0x0004
104
- JOB_OBJECT_TERMINATE = 0x0008
105
- JOB_OBJECT_SET_SECURITY_ATTRIBUTES = 0x0010
106
- JOB_OBJECT_ALL_ACCESS = 0x1F001F
107
-
108
- # Functions
109
-
110
- API.new('AssignProcessToJobObject', 'LL', 'B')
111
- API.new('CreateJobObject', 'PS', 'L')
112
- API.new('CreateProcess', 'PPPPLLLPPP', 'B')
113
- API.new('CreateProcessAsUser', 'LPPLLILPPPP', 'B', 'advapi32')
114
- API.new('CreateProcessWithLogonW', 'PPPLPPLLPPP', 'B', 'advapi32')
115
- API.new('EnumProcesses', 'PLP', 'B', 'psapi')
116
- API.new('ExitProcess', 'L', 'V')
117
- API.new('FreeEnvironmentStrings', 'P', 'B')
118
- API.new('GetCommandLine', 'V', 'P')
119
- API.new('GetCurrentProcess', 'V', 'L')
120
- API.new('GetCurrentProcessId', 'V', 'L')
121
- API.new('GetEnvironmentStrings', 'V', 'L')
122
- API.new('GetEnvironmentVariable', 'PPL', 'L')
123
- API.new('GetExitCodeProcess', 'LP', 'B')
124
- API.new('GetGuiResources', 'LL', 'L', 'user32')
125
- API.new('GetPriorityClass', 'L', 'L')
126
- API.new('GetProcessAffinityMask', 'LPP', 'B')
127
- API.new('GetProcessIoCounters', 'LP', 'B')
128
- API.new('GetProcessPriorityBoost', 'LP', 'B')
129
- API.new('GetProcessShutdownParameters', 'PP', 'B')
130
- API.new('GetProcessTimes', 'LPPPP', 'B')
131
- API.new('GetProcessVersion', 'L', 'L')
132
- API.new('GetProcessWorkingSetSize', 'LPP', 'B')
133
- API.new('GetStartupInfo', 'P', 'V')
134
- API.new('OpenJobObject', 'LIS', 'L')
135
- API.new('OpenProcess', 'LIL', 'L')
136
- API.new('QueryInformationJobObject', 'LLPLP', 'B')
137
- API.new('SetEnvironmentVariable', 'PP', 'B')
138
- API.new('SetInformationJobObject', 'LLPL', 'B')
139
- API.new('SetPriorityClass', 'LL', 'B')
140
- API.new('SetProcessAffinityMask', 'LL', 'B')
141
- API.new('SetProcessPriorityBoost', 'LB', 'B')
142
- API.new('SetProcessShutdownParameters', 'LL', 'B')
143
- API.new('SetProcessWorkingSetSize', 'LLL', 'B')
144
- API.new('TerminateJobObject', 'LL', 'B')
145
- API.new('TerminateProcess', 'LL', 'B')
146
- API.new('WaitForInputIdle', 'LL', 'L', 'user32')
147
- API.new('WTSEnumerateProcesses', 'LLLPP', 'B', 'wtsapi32')
148
-
149
- begin
150
- API.new('GetProcessId', 'L', 'L')
151
- API.new('GetProcessHandleCount', 'LP', 'B')
152
- API.new('IsProcessInJob', 'LLP', 'B')
153
- API.new('IsWow64Process', 'LP', 'B')
154
- rescue Win32::API::LoadLibraryError
155
- # Windows XP or later
156
- end
157
-
158
- # Helper method to determine if you're on a 64 bit version of Windows
159
- def windows_64?
160
- bool = false
161
-
162
- if defined? IsWow64Process
163
- buf = 0.chr * 4
164
- if IsWow64Process(GetCurrentProcess(), buf)
165
- if buf.unpack('I')[0] == 1
166
- bool = true
167
- end
168
- end
169
- end
170
-
171
- bool
172
- end
173
- end
174
- end
1
+ require 'windows/api'
2
+
3
+ # The Windows module serves as a namespace only.
4
+ module Windows
5
+ # The Process module includes process related functions and constants,
6
+ # including some tool help functions that relate to processes.
7
+ module Process
8
+ API.auto_namespace = 'Windows::Process'
9
+ API.auto_constant = true
10
+ API.auto_method = true
11
+ API.auto_unicode = true
12
+
13
+ # Process access rights
14
+
15
+ PROCESS_ALL_ACCESS = 0x1F0FFF
16
+ PROCESS_CREATE_PROCESS = 0x0080
17
+ PROCESS_CREATE_THREAD = 0x0002
18
+ PROCESS_DUP_HANDLE = 0x0040
19
+ PROCESS_QUERY_INFORMATION = 0x0400
20
+ PROCESS_QUERY_LIMITED_INFORMATION = 0x1000
21
+ PROCESS_SET_QUOTA = 0x0100
22
+ PROCESS_SET_INFORMATION = 0x0200
23
+ PROCESS_SUSPEND_RESUME = 0x0800
24
+ PROCESS_TERMINATE = 0x0001
25
+ PROCESS_VM_OPERATION = 0x0008
26
+ PROCESS_VM_READ = 0x0010
27
+ PROCESS_VM_WRITE = 0x0020
28
+ SYNCHRONIZE = 1048576
29
+ STILL_ACTIVE = 259
30
+
31
+ # Process priority flags
32
+
33
+ ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000
34
+ BELOW_NORMAL_PRIORITY_CLASS = 0x00004000
35
+ HIGH_PRIORITY_CLASS = 0x00000080
36
+ IDLE_PRIORITY_CLASS = 0x00000040
37
+ NORMAL_PRIORITY_CLASS = 0x00000020
38
+ REALTIME_PRIORITY_CLASS = 0x00000100
39
+
40
+ # Process creation flags
41
+
42
+ CREATE_BREAKAWAY_FROM_JOB = 0x01000000
43
+ CREATE_DEFAULT_ERROR_MODE = 0x04000000
44
+ CREATE_NEW_CONSOLE = 0x00000010
45
+ CREATE_NEW_PROCESS_GROUP = 0x00000200
46
+ CREATE_NO_WINDOW = 0x08000000
47
+ CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000
48
+ CREATE_SEPARATE_WOW_VDM = 0x00000800
49
+ CREATE_SHARED_WOW_VDM = 0x00001000
50
+ CREATE_SUSPENDED = 0x00000004
51
+ CREATE_UNICODE_ENVIRONMENT = 0x00000400
52
+ DEBUG_ONLY_THIS_PROCESS = 0x00000002
53
+ DEBUG_PROCESS = 0x00000001
54
+ DETACHED_PROCESS = 0x00000008
55
+
56
+ STARTF_USESHOWWINDOW = 0x00000001
57
+ STARTF_USESIZE = 0x00000002
58
+ STARTF_USEPOSITION = 0x00000004
59
+ STARTF_USECOUNTCHARS = 0x00000008
60
+ STARTF_USEFILLATTRIBUTE = 0x00000010
61
+ STARTF_RUNFULLSCREEN = 0x00000020
62
+ STARTF_FORCEONFEEDBACK = 0x00000040
63
+ STARTF_FORCEOFFFEEDBACK = 0x00000080
64
+ STARTF_USESTDHANDLES = 0x00000100
65
+ STARTF_USEHOTKEY = 0x00000200
66
+
67
+ LOGON_WITH_PROFILE = 0x00000001
68
+ LOGON_NETCREDENTIALS_ONLY = 0x00000002
69
+
70
+ SHUTDOWN_NORETRY = 0x00000001
71
+
72
+ # Job Object Classes
73
+
74
+ JobObjectBasicLimitInformation = 2
75
+ JobObjectBasicUIRestrictions = 4
76
+ JobObjectSecurityLimitInformation = 5
77
+ JobObjectEndOfJobTimeInformation = 6
78
+ JobObjectAssociateCompletionPortInformation = 7
79
+ JobObjectExtendedLimitInformation = 9
80
+ JobObjectGroupInformation = 11
81
+
82
+ # Job Limit Flags
83
+
84
+ JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001
85
+ JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002
86
+ JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004
87
+ JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008
88
+ JOB_OBJECT_LIMIT_AFFINITY = 0x00000010
89
+ JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020
90
+ JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040
91
+ JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080
92
+ JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100
93
+ JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200
94
+ JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400
95
+ JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800
96
+ JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000
97
+ JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000
98
+
99
+ # Job Access Rights
100
+
101
+ JOB_OBJECT_ASSIGN_PROCESS = 0x0001
102
+ JOB_OBJECT_SET_ATTRIBUTES = 0x0002
103
+ JOB_OBJECT_QUERY = 0x0004
104
+ JOB_OBJECT_TERMINATE = 0x0008
105
+ JOB_OBJECT_SET_SECURITY_ATTRIBUTES = 0x0010
106
+ JOB_OBJECT_ALL_ACCESS = 0x1F001F
107
+
108
+ # Functions
109
+
110
+ API.new('AssignProcessToJobObject', 'LL', 'B')
111
+ API.new('CreateJobObject', 'PS', 'L')
112
+ API.new('CreateProcess', 'PPPPLLLPPP', 'B')
113
+ API.new('CreateProcessAsUser', 'LPPLLILPPPP', 'B', 'advapi32')
114
+ API.new('CreateProcessWithLogonW', 'PPPLPPLLPPP', 'B', 'advapi32')
115
+ API.new('EnumProcesses', 'PLP', 'B', 'psapi')
116
+ API.new('ExitProcess', 'L', 'V')
117
+ API.new('FreeEnvironmentStrings', 'P', 'B')
118
+ API.new('GetCommandLine', 'V', 'P')
119
+ API.new('GetCurrentProcess', 'V', 'L')
120
+ API.new('GetCurrentProcessId', 'V', 'L')
121
+ API.new('GetEnvironmentStrings', 'V', 'L')
122
+ API.new('GetEnvironmentVariable', 'PPL', 'L')
123
+ API.new('GetExitCodeProcess', 'LP', 'B')
124
+ API.new('GetGuiResources', 'LL', 'L', 'user32')
125
+ API.new('GetPriorityClass', 'L', 'L')
126
+ API.new('GetProcessAffinityMask', 'LPP', 'B')
127
+ API.new('GetProcessIoCounters', 'LP', 'B')
128
+ API.new('GetProcessPriorityBoost', 'LP', 'B')
129
+ API.new('GetProcessShutdownParameters', 'PP', 'B')
130
+ API.new('GetProcessTimes', 'LPPPP', 'B')
131
+ API.new('GetProcessVersion', 'L', 'L')
132
+ API.new('GetProcessWorkingSetSize', 'LPP', 'B')
133
+ API.new('GetStartupInfo', 'P', 'V')
134
+ API.new('OpenJobObject', 'LIS', 'L')
135
+ API.new('OpenProcess', 'LIL', 'L')
136
+ API.new('QueryInformationJobObject', 'LLPLP', 'B')
137
+ API.new('SetEnvironmentVariable', 'PP', 'B')
138
+ API.new('SetInformationJobObject', 'LLPL', 'B')
139
+ API.new('SetPriorityClass', 'LL', 'B')
140
+ API.new('SetProcessAffinityMask', 'LL', 'B')
141
+ API.new('SetProcessPriorityBoost', 'LB', 'B')
142
+ API.new('SetProcessShutdownParameters', 'LL', 'B')
143
+ API.new('SetProcessWorkingSetSize', 'LLL', 'B')
144
+ API.new('TerminateJobObject', 'LL', 'B')
145
+ API.new('TerminateProcess', 'LL', 'B')
146
+ API.new('WaitForInputIdle', 'LL', 'L', 'user32')
147
+ API.new('WTSEnumerateProcesses', 'LLLPP', 'B', 'wtsapi32')
148
+
149
+ begin
150
+ API.new('GetProcessId', 'L', 'L')
151
+ API.new('GetProcessHandleCount', 'LP', 'B')
152
+ API.new('IsProcessInJob', 'LLP', 'B')
153
+ API.new('IsWow64Process', 'LP', 'B')
154
+ rescue Win32::API::LoadLibraryError
155
+ # Windows XP or later
156
+ end
157
+
158
+ # Helper method to determine if you're on a 64 bit version of Windows
159
+ def windows_64?
160
+ bool = false
161
+
162
+ if defined? IsWow64Process
163
+ buf = 0.chr * 4
164
+ if IsWow64Process(GetCurrentProcess(), buf)
165
+ if buf.unpack('I')[0] == 1
166
+ bool = true
167
+ end
168
+ end
169
+ end
170
+
171
+ bool
172
+ end
173
+ end
174
+ end
@@ -1,126 +1,126 @@
1
- require 'windows/file'
2
-
3
- module Windows
4
- module Registry
5
- API.auto_namespace = 'Windows::Registry'
6
- API.auto_constant = true
7
- API.auto_method = true
8
- API.auto_unicode = true
9
-
10
- include Windows::File
11
-
12
- HKEY_CLASSES_ROOT = 0x80000000
13
- KEY_CURRENT_USER = 0x80000001
14
- HKEY_LOCAL_MACHINE = 0x80000002
15
- HKEY_USERS = 0x80000003
16
- HKEY_PERFORMANCE_DATA = 0x80000004
17
- HKEY_PERFORMANCE_TEXT = 0x80000050
18
- HKEY_PERFORMANCE_NLSTEXT = 0x80000060
19
- HKEY_CURRENT_CONFIG = 0x80000005
20
- HKEY_DYN_DATA = 0x80000006
21
-
22
- KEY_QUERY_VALUE = 0x0001
23
- KEY_SET_VALUE = 0x0002
24
- KEY_CREATE_SUB_KEY = 0x0004
25
- KEY_ENUMERATE_SUB_KEYS = 0x0008
26
- KEY_NOTIFY = 0x0010
27
- KEY_CREATE_LINK = 0x0020
28
- KEY_WOW64_32KEY = 0x0200
29
- KEY_WOW64_64KEY = 0x0100
30
- KEY_WOW64_RES = 0x0300
31
-
32
- KEY_READ = (STANDARD_RIGHTS_READ|KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS|
33
- KEY_NOTIFY) & (~SYNCHRONIZE)
34
-
35
- KEY_WRITE = (STANDARD_RIGHTS_WRITE|KEY_SET_VALUE|
36
- KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE)
37
-
38
- KEY_EXECUTE = KEY_READ & (~SYNCHRONIZE)
39
-
40
- KEY_ALL_ACCESS = (STANDARD_RIGHTS_ALL|KEY_QUERY_VALUE|KEY_SET_VALUE|
41
- KEY_CREATE_SUB_KEY|KEY_ENUMERATE_SUB_KEYS|KEY_NOTIFY|
42
- KEY_CREATE_LINK) & (~SYNCHRONIZE)
43
-
44
- REG_OPTION_RESERVED = 0
45
- REG_OPTION_NON_VOLATILE = 0
46
- REG_OPTION_VOLATILE = 1
47
- REG_OPTION_CREATE_LINK = 2
48
- REG_OPTION_BACKUP_RESTORE = 4
49
- REG_OPTION_OPEN_LINK = 8
50
-
51
- REG_LEGAL_OPTION = REG_OPTION_RESERVED|REG_OPTION_NON_VOLATILE|
52
- REG_OPTION_VOLATILE|REG_OPTION_CREATE_LINK|REG_OPTION_BACKUP_RESTORE|
53
- REG_OPTION_OPEN_LINK
54
-
55
- REG_CREATED_NEW_KEY = 1
56
- REG_OPENED_EXISTING_KEY = 2
57
-
58
- REG_STANDARD_FORMAT = 1
59
- REG_LATEST_FORMAT = 2
60
- REG_NO_COMPRESSION = 4
61
-
62
- REG_WHOLE_HIVE_VOLATILE = 1
63
- REG_REFRESH_HIVE = 2
64
- REG_NO_LAZY_FLUSH = 4
65
- REG_FORCE_RESTORE = 8
66
-
67
- REG_FORCE_UNLOAD = 1
68
-
69
- REG_NOTIFY_CHANGE_NAME = 1
70
- REG_NOTIFY_CHANGE_ATTRIBUTES = 2
71
- REG_NOTIFY_CHANGE_LAST_SET = 4
72
- REG_NOTIFY_CHANGE_SECURITY = 8
73
-
74
- REG_LEGAL_CHANGE_FILTER = REG_NOTIFY_CHANGE_NAME|
75
- REG_NOTIFY_CHANGE_ATTRIBUTES|REG_NOTIFY_CHANGE_LAST_SET|
76
- REG_NOTIFY_CHANGE_SECURITY
77
-
78
- REG_NONE = 0
79
- REG_SZ = 1
80
- REG_EXPAND_SZ = 2
81
- REG_BINARY = 3
82
- REG_DWORD = 4
83
- REG_DWORD_LITTLE_ENDIAN = 4
84
- REG_DWORD_BIG_ENDIAN = 5
85
- REG_LINK = 6
86
- REG_MULTI_SZ = 7
87
- REG_RESOURCE_LIST = 8
88
- REG_FULL_RESOURCE_DESCRIPTOR = 9
89
- REG_RESOURCE_REQUIREMENTS_LIST = 10
90
- REG_QWORD = 11
91
- REG_QWORD_LITTLE_ENDIAN = 11
92
-
93
- API.new('RegCloseKey', 'L', 'L', 'advapi32')
94
- API.new('RegConnectRegistry', 'PLP', 'L', 'advapi32')
95
- API.new('RegCreateKey', 'LPP', 'L', 'advapi32')
96
- API.new('RegCreateKeyEx', 'LPLPLLPPP', 'L', 'advapi32')
97
- API.new('RegDeleteKey', 'LP', 'L', 'advapi32')
98
- API.new('RegDeleteValue', 'LP', 'L', 'advapi32')
99
- API.new('RegDisablePredefinedCache', 'V', 'L', 'advapi32')
100
- API.new('RegEnumKey', 'LLPL', 'L', 'advapi32')
101
- API.new('RegEnumKeyEx', 'LLPPPPPP', 'L', 'advapi32')
102
- API.new('RegEnumValue', 'LLPPPPPP', 'L', 'advapi32')
103
- API.new('RegFlushKey', 'L', 'L', 'advapi32')
104
- API.new('RegLoadKey', 'LPP', 'L', 'advapi32')
105
- API.new('RegNotifyChangeKeyValue', 'LILLI', 'L', 'advapi32')
106
- API.new('RegOpenCurrentUser', 'LP', 'L', 'advapi32')
107
- API.new('RegOpenKey', 'LPP', 'L', 'advapi32')
108
- API.new('RegOpenKeyEx', 'LPLLP', 'L', 'advapi32')
109
- API.new('RegOpenUserClassesRoot', 'LLLP', 'L', 'advapi32')
110
- API.new('RegOverridePredefKey', 'LL', 'L', 'advapi32')
111
- API.new('RegQueryInfoKey', 'LPPPPPPPPPPP', 'L', 'advapi32')
112
- API.new('RegQueryMultipleValues', 'LPLPP', 'L', 'advapi32')
113
- API.new('RegQueryValueEx', 'LPPPPP', 'L', 'advapi32')
114
- API.new('RegReplaceKey', 'LPPP', 'L', 'advapi32')
115
- API.new('RegRestoreKey', 'LPL', 'L', 'advapi32')
116
- API.new('RegSaveKey', 'LPP', 'L', 'advapi32')
117
- API.new('RegSetValueEx', 'LPLLPL', 'L', 'advapi32')
118
- API.new('RegUnLoadKey', 'LP', 'L', 'advapi32')
119
-
120
- begin
121
- API.new('RegSaveKeyEx', 'LPPL', 'L', 'advapi32')
122
- rescue Win32::API::LoadLibraryError
123
- # Windows XP or later
124
- end
125
- end
126
- end
1
+ require 'windows/file'
2
+
3
+ module Windows
4
+ module Registry
5
+ API.auto_namespace = 'Windows::Registry'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = true
9
+
10
+ include Windows::File
11
+
12
+ HKEY_CLASSES_ROOT = 0x80000000
13
+ KEY_CURRENT_USER = 0x80000001
14
+ HKEY_LOCAL_MACHINE = 0x80000002
15
+ HKEY_USERS = 0x80000003
16
+ HKEY_PERFORMANCE_DATA = 0x80000004
17
+ HKEY_PERFORMANCE_TEXT = 0x80000050
18
+ HKEY_PERFORMANCE_NLSTEXT = 0x80000060
19
+ HKEY_CURRENT_CONFIG = 0x80000005
20
+ HKEY_DYN_DATA = 0x80000006
21
+
22
+ KEY_QUERY_VALUE = 0x0001
23
+ KEY_SET_VALUE = 0x0002
24
+ KEY_CREATE_SUB_KEY = 0x0004
25
+ KEY_ENUMERATE_SUB_KEYS = 0x0008
26
+ KEY_NOTIFY = 0x0010
27
+ KEY_CREATE_LINK = 0x0020
28
+ KEY_WOW64_32KEY = 0x0200
29
+ KEY_WOW64_64KEY = 0x0100
30
+ KEY_WOW64_RES = 0x0300
31
+
32
+ KEY_READ = (STANDARD_RIGHTS_READ|KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS|
33
+ KEY_NOTIFY) & (~SYNCHRONIZE)
34
+
35
+ KEY_WRITE = (STANDARD_RIGHTS_WRITE|KEY_SET_VALUE|
36
+ KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE)
37
+
38
+ KEY_EXECUTE = KEY_READ & (~SYNCHRONIZE)
39
+
40
+ KEY_ALL_ACCESS = (STANDARD_RIGHTS_ALL|KEY_QUERY_VALUE|KEY_SET_VALUE|
41
+ KEY_CREATE_SUB_KEY|KEY_ENUMERATE_SUB_KEYS|KEY_NOTIFY|
42
+ KEY_CREATE_LINK) & (~SYNCHRONIZE)
43
+
44
+ REG_OPTION_RESERVED = 0
45
+ REG_OPTION_NON_VOLATILE = 0
46
+ REG_OPTION_VOLATILE = 1
47
+ REG_OPTION_CREATE_LINK = 2
48
+ REG_OPTION_BACKUP_RESTORE = 4
49
+ REG_OPTION_OPEN_LINK = 8
50
+
51
+ REG_LEGAL_OPTION = REG_OPTION_RESERVED|REG_OPTION_NON_VOLATILE|
52
+ REG_OPTION_VOLATILE|REG_OPTION_CREATE_LINK|REG_OPTION_BACKUP_RESTORE|
53
+ REG_OPTION_OPEN_LINK
54
+
55
+ REG_CREATED_NEW_KEY = 1
56
+ REG_OPENED_EXISTING_KEY = 2
57
+
58
+ REG_STANDARD_FORMAT = 1
59
+ REG_LATEST_FORMAT = 2
60
+ REG_NO_COMPRESSION = 4
61
+
62
+ REG_WHOLE_HIVE_VOLATILE = 1
63
+ REG_REFRESH_HIVE = 2
64
+ REG_NO_LAZY_FLUSH = 4
65
+ REG_FORCE_RESTORE = 8
66
+
67
+ REG_FORCE_UNLOAD = 1
68
+
69
+ REG_NOTIFY_CHANGE_NAME = 1
70
+ REG_NOTIFY_CHANGE_ATTRIBUTES = 2
71
+ REG_NOTIFY_CHANGE_LAST_SET = 4
72
+ REG_NOTIFY_CHANGE_SECURITY = 8
73
+
74
+ REG_LEGAL_CHANGE_FILTER = REG_NOTIFY_CHANGE_NAME|
75
+ REG_NOTIFY_CHANGE_ATTRIBUTES|REG_NOTIFY_CHANGE_LAST_SET|
76
+ REG_NOTIFY_CHANGE_SECURITY
77
+
78
+ REG_NONE = 0
79
+ REG_SZ = 1
80
+ REG_EXPAND_SZ = 2
81
+ REG_BINARY = 3
82
+ REG_DWORD = 4
83
+ REG_DWORD_LITTLE_ENDIAN = 4
84
+ REG_DWORD_BIG_ENDIAN = 5
85
+ REG_LINK = 6
86
+ REG_MULTI_SZ = 7
87
+ REG_RESOURCE_LIST = 8
88
+ REG_FULL_RESOURCE_DESCRIPTOR = 9
89
+ REG_RESOURCE_REQUIREMENTS_LIST = 10
90
+ REG_QWORD = 11
91
+ REG_QWORD_LITTLE_ENDIAN = 11
92
+
93
+ API.new('RegCloseKey', 'L', 'L', 'advapi32')
94
+ API.new('RegConnectRegistry', 'PLP', 'L', 'advapi32')
95
+ API.new('RegCreateKey', 'LPP', 'L', 'advapi32')
96
+ API.new('RegCreateKeyEx', 'LPLPLLPPP', 'L', 'advapi32')
97
+ API.new('RegDeleteKey', 'LP', 'L', 'advapi32')
98
+ API.new('RegDeleteValue', 'LP', 'L', 'advapi32')
99
+ API.new('RegDisablePredefinedCache', 'V', 'L', 'advapi32')
100
+ API.new('RegEnumKey', 'LLPL', 'L', 'advapi32')
101
+ API.new('RegEnumKeyEx', 'LLPPPPPP', 'L', 'advapi32')
102
+ API.new('RegEnumValue', 'LLPPPPPP', 'L', 'advapi32')
103
+ API.new('RegFlushKey', 'L', 'L', 'advapi32')
104
+ API.new('RegLoadKey', 'LPP', 'L', 'advapi32')
105
+ API.new('RegNotifyChangeKeyValue', 'LILLI', 'L', 'advapi32')
106
+ API.new('RegOpenCurrentUser', 'LP', 'L', 'advapi32')
107
+ API.new('RegOpenKey', 'LPP', 'L', 'advapi32')
108
+ API.new('RegOpenKeyEx', 'LPLLP', 'L', 'advapi32')
109
+ API.new('RegOpenUserClassesRoot', 'LLLP', 'L', 'advapi32')
110
+ API.new('RegOverridePredefKey', 'LL', 'L', 'advapi32')
111
+ API.new('RegQueryInfoKey', 'LPPPPPPPPPPP', 'L', 'advapi32')
112
+ API.new('RegQueryMultipleValues', 'LPLPP', 'L', 'advapi32')
113
+ API.new('RegQueryValueEx', 'LPPPPP', 'L', 'advapi32')
114
+ API.new('RegReplaceKey', 'LPPP', 'L', 'advapi32')
115
+ API.new('RegRestoreKey', 'LPL', 'L', 'advapi32')
116
+ API.new('RegSaveKey', 'LPP', 'L', 'advapi32')
117
+ API.new('RegSetValueEx', 'LPLLPL', 'L', 'advapi32')
118
+ API.new('RegUnLoadKey', 'LP', 'L', 'advapi32')
119
+
120
+ begin
121
+ API.new('RegSaveKeyEx', 'LPPL', 'L', 'advapi32')
122
+ rescue Win32::API::LoadLibraryError
123
+ # Windows XP or later
124
+ end
125
+ end
126
+ end