win32-registry 0.0.1 → 0.1.1
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.
- checksums.yaml +4 -4
- data/README.md +8 -6
- data/lib/win32/registry.rb +21 -18
- data/win32-registry.gemspec +29 -0
- metadata +8 -30
- checksums.yaml.gz.sig +0 -0
- data/Rakefile +0 -8
- data.tar.gz.sig +0 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1396ebc5ba526e5867f258135cd598509f4d2cb36485b9f23754e720473c325e
|
|
4
|
+
data.tar.gz: 0fd1e2c9aa77f1a90384470ef57f87495a19f90f76fa83974f05eb4603374426
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a067e81077ffa91c31890cb4aabebc6181da27573cca9efcd2249b345743a840fc9a020318160d6f5776075a8cf6fc00d84dedbcd3072be4d3713c78217d40eb
|
|
7
|
+
data.tar.gz: dfb871c7e4ca6f5d52fca6b5ed60a548a55bfa253c32453836b827f16af8be20caedbf9a6c2efe60e4c9e1e70d28869b4307b15f0c005770292bd1aa875ef2a3
|
data/README.md
CHANGED
|
@@ -10,11 +10,15 @@ Other versions of the gem can be installed in addition like so:
|
|
|
10
10
|
|
|
11
11
|
Install the gem and add to the application's Gemfile by executing:
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
```bash
|
|
14
|
+
bundle add win32-registry
|
|
15
|
+
```
|
|
14
16
|
|
|
15
17
|
If bundler is not being used to manage dependencies, install the gem by executing:
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
```bash
|
|
20
|
+
gem install win32-registry
|
|
21
|
+
```
|
|
18
22
|
|
|
19
23
|
## Usage
|
|
20
24
|
|
|
@@ -38,10 +42,8 @@ If bundler is not being used to manage dependencies, install the gem by executin
|
|
|
38
42
|
end
|
|
39
43
|
```
|
|
40
44
|
|
|
41
|
-
Be sure to use
|
|
42
|
-
|
|
43
|
-
This is in contrast to file paths, which accept forward and backward slashs at will on Windows.
|
|
44
|
-
|
|
45
|
+
Be sure to use backslashes "\\" as the path separator. Forward slashes "/" will not work.
|
|
46
|
+
This is in contrast to file paths, which accept forward and backward slashes at will on Windows.
|
|
45
47
|
|
|
46
48
|
## Development
|
|
47
49
|
|
data/lib/win32/registry.rb
CHANGED
|
@@ -178,7 +178,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
178
178
|
buff = WCHAR_NUL * 1024
|
|
179
179
|
lang = 0
|
|
180
180
|
begin
|
|
181
|
-
len = FormatMessageW.call(0x1200,
|
|
181
|
+
len = FormatMessageW.call(0x1200, nil, code, lang, buff, 1024, nil)
|
|
182
182
|
msg = buff.byteslice(0, len * WCHAR_SIZE)
|
|
183
183
|
msg.delete!(WCHAR_CR)
|
|
184
184
|
msg.chomp!
|
|
@@ -198,7 +198,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
198
198
|
#
|
|
199
199
|
class PredefinedKey < Registry
|
|
200
200
|
def initialize(hkey, keyname)
|
|
201
|
-
@hkey = hkey
|
|
201
|
+
@hkey = Fiddle::Pointer.new(hkey)
|
|
202
202
|
@parent = nil
|
|
203
203
|
@keyname = keyname
|
|
204
204
|
@disposition = REG_OPENED_EXISTING_KEY
|
|
@@ -238,7 +238,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
238
238
|
"long RegDeleteKeyW(void *, void *)",
|
|
239
239
|
"long RegFlushKey(void *)",
|
|
240
240
|
"long RegCloseKey(void *)",
|
|
241
|
-
"long
|
|
241
|
+
"long RegQueryInfoKeyW(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *)",
|
|
242
242
|
].each do |fn|
|
|
243
243
|
cfunc = extern fn, :stdcall
|
|
244
244
|
const_set cfunc.name.intern, cfunc
|
|
@@ -285,7 +285,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
285
285
|
end
|
|
286
286
|
|
|
287
287
|
def make_wstr(str)
|
|
288
|
-
str.encode(WCHAR)
|
|
288
|
+
(str+"\0").encode(WCHAR)
|
|
289
289
|
end
|
|
290
290
|
|
|
291
291
|
def OpenKey(hkey, name, opt, desired)
|
|
@@ -298,14 +298,14 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
298
298
|
result = packhandle(0)
|
|
299
299
|
disp = packdw(0)
|
|
300
300
|
check RegCreateKeyExW.call(hkey, make_wstr(name), 0, 0, opt, desired,
|
|
301
|
-
|
|
301
|
+
nil, result, disp)
|
|
302
302
|
[ unpackhandle(result), unpackdw(disp) ]
|
|
303
303
|
end
|
|
304
304
|
|
|
305
305
|
def EnumValue(hkey, index)
|
|
306
306
|
name = WCHAR_NUL * Constants::MAX_KEY_LENGTH
|
|
307
307
|
size = packdw(Constants::MAX_KEY_LENGTH)
|
|
308
|
-
check RegEnumValueW.call(hkey, index, name, size,
|
|
308
|
+
check RegEnumValueW.call(hkey, index, name, size, nil, nil, nil, nil)
|
|
309
309
|
name.byteslice(0, unpackdw(size) * WCHAR_SIZE)
|
|
310
310
|
end
|
|
311
311
|
|
|
@@ -313,7 +313,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
313
313
|
name = WCHAR_NUL * Constants::MAX_KEY_LENGTH
|
|
314
314
|
size = packdw(Constants::MAX_KEY_LENGTH)
|
|
315
315
|
wtime = ' ' * 8
|
|
316
|
-
check RegEnumKeyExW.call(hkey, index, name, size,
|
|
316
|
+
check RegEnumKeyExW.call(hkey, index, name, size, nil, nil, nil, wtime)
|
|
317
317
|
[ name.byteslice(0, unpackdw(size) * WCHAR_SIZE), unpackqw(wtime) ]
|
|
318
318
|
end
|
|
319
319
|
|
|
@@ -321,9 +321,9 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
321
321
|
type = packdw(0)
|
|
322
322
|
size = packdw(0)
|
|
323
323
|
name = make_wstr(name)
|
|
324
|
-
check RegQueryValueExW.call(hkey, name,
|
|
324
|
+
check RegQueryValueExW.call(hkey, name, nil, type, nil, size)
|
|
325
325
|
data = "\0".b * unpackdw(size)
|
|
326
|
-
check RegQueryValueExW.call(hkey, name,
|
|
326
|
+
check RegQueryValueExW.call(hkey, name, nil, type, data, size)
|
|
327
327
|
[ unpackdw(type), data[0, unpackdw(size)] ]
|
|
328
328
|
end
|
|
329
329
|
|
|
@@ -360,7 +360,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
360
360
|
maxvaluelen = packdw(0)
|
|
361
361
|
secdescs = packdw(0)
|
|
362
362
|
wtime = ' ' * 8
|
|
363
|
-
check
|
|
363
|
+
check RegQueryInfoKeyW.call(hkey, 0, 0, 0, subkeys, maxsubkeylen, 0,
|
|
364
364
|
values, maxvaluenamelen, maxvaluelen, secdescs, wtime)
|
|
365
365
|
[ unpackdw(subkeys), unpackdw(maxsubkeylen), unpackdw(values),
|
|
366
366
|
unpackdw(maxvaluenamelen), unpackdw(maxvaluelen),
|
|
@@ -372,7 +372,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
372
372
|
# Replace %\w+% into the environment value of what is contained between the %'s
|
|
373
373
|
# This method is used for REG_EXPAND_SZ.
|
|
374
374
|
#
|
|
375
|
-
# For detail, see expandEnvironmentStrings[
|
|
375
|
+
# For detail, see expandEnvironmentStrings[https://learn.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-expandenvironmentstringsa] \Win32 \API.
|
|
376
376
|
#
|
|
377
377
|
def self.expand_environ(str)
|
|
378
378
|
str.gsub(Regexp.compile("%([^%]+)%".encode(str.encoding))) {
|
|
@@ -430,7 +430,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
430
430
|
# If block is given, the key is closed automatically.
|
|
431
431
|
def self.open(hkey, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED)
|
|
432
432
|
subkey = subkey.chomp('\\')
|
|
433
|
-
newkey = API.OpenKey(hkey.hkey, subkey, opt, desired)
|
|
433
|
+
newkey = API.OpenKey(hkey.instance_variable_get(:@hkey), subkey, opt, desired)
|
|
434
434
|
obj = new(newkey, hkey, subkey, REG_OPENED_EXISTING_KEY)
|
|
435
435
|
if block_given?
|
|
436
436
|
begin
|
|
@@ -457,7 +457,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
457
457
|
# If block is given, the key is closed automatically.
|
|
458
458
|
#
|
|
459
459
|
def self.create(hkey, subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED)
|
|
460
|
-
newkey, disp = API.CreateKey(hkey.hkey, subkey, opt, desired)
|
|
460
|
+
newkey, disp = API.CreateKey(hkey.instance_variable_get(:@hkey), subkey, opt, desired)
|
|
461
461
|
obj = new(newkey, hkey, subkey, disp)
|
|
462
462
|
if block_given?
|
|
463
463
|
begin
|
|
@@ -479,7 +479,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
479
479
|
# initialize
|
|
480
480
|
#
|
|
481
481
|
def initialize(hkey, parent, keyname, disposition)
|
|
482
|
-
@hkey = hkey
|
|
482
|
+
@hkey = Fiddle::Pointer.new(hkey)
|
|
483
483
|
@parent = parent
|
|
484
484
|
@keyname = keyname
|
|
485
485
|
@disposition = disposition
|
|
@@ -487,9 +487,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
487
487
|
ObjectSpace.define_finalizer self, @@final.call(@hkeyfinal)
|
|
488
488
|
end
|
|
489
489
|
|
|
490
|
-
#
|
|
491
|
-
attr_reader :hkey
|
|
492
|
-
# Win32::Registry object of parent key, or nil if predefeined key.
|
|
490
|
+
# Win32::Registry object of parent key, or nil if predefined key.
|
|
493
491
|
attr_reader :parent
|
|
494
492
|
# Same as subkey value of Registry.open or
|
|
495
493
|
# Registry.create method.
|
|
@@ -497,6 +495,11 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
497
495
|
# Disposition value (REG_CREATED_NEW_KEY or REG_OPENED_EXISTING_KEY).
|
|
498
496
|
attr_reader :disposition
|
|
499
497
|
|
|
498
|
+
# Returns key handle value.
|
|
499
|
+
def hkey
|
|
500
|
+
@hkey.to_i
|
|
501
|
+
end
|
|
502
|
+
|
|
500
503
|
#
|
|
501
504
|
# Returns if key is created ((*newly*)).
|
|
502
505
|
# (see Registry.create) -- basically you call create
|
|
@@ -568,7 +571,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
|
|
|
568
571
|
# For each value it yields key, type and data.
|
|
569
572
|
#
|
|
570
573
|
# key is a String which contains name of key.
|
|
571
|
-
# type is a type
|
|
574
|
+
# type is a type constant kind of Win32::Registry::REG_*
|
|
572
575
|
# data is the value of this key.
|
|
573
576
|
#
|
|
574
577
|
def each_value
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
Gem::Specification.new do |spec|
|
|
3
|
+
spec.name = "win32-registry"
|
|
4
|
+
spec.version = "0.1.1"
|
|
5
|
+
spec.authors = ["U.Nakamura"]
|
|
6
|
+
spec.email = ["usa@garbagecollect.jp"]
|
|
7
|
+
|
|
8
|
+
spec.summary = %q{Provides an interface to the Windows Registry in Ruby}
|
|
9
|
+
spec.description = spec.summary
|
|
10
|
+
spec.homepage = "https://github.com/ruby/win32-registry"
|
|
11
|
+
spec.required_ruby_version = ">= 2.6.0"
|
|
12
|
+
|
|
13
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
|
14
|
+
spec.metadata["source_code_uri"] = spec.homepage
|
|
15
|
+
|
|
16
|
+
# Specify which files should be added to the gem when it is released.
|
|
17
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
18
|
+
excludes = %w[
|
|
19
|
+
bin/ test/ spec/ features/ rakelib/
|
|
20
|
+
.git* .mailmap appveyor Rakefile Gemfile
|
|
21
|
+
]
|
|
22
|
+
git_files = %w[git ls-files -z --] + excludes.map {|x| ":^/#{x}"}
|
|
23
|
+
spec.files = IO.popen(git_files, chdir: __dir__, &:read).split("\x0")
|
|
24
|
+
spec.bindir = "exe"
|
|
25
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
|
26
|
+
spec.require_paths = ["lib"]
|
|
27
|
+
|
|
28
|
+
spec.add_dependency "fiddle", "~> 1.0"
|
|
29
|
+
end
|
metadata
CHANGED
|
@@ -1,38 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: win32-registry
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- U.Nakamura
|
|
8
|
+
autorequire:
|
|
8
9
|
bindir: exe
|
|
9
|
-
cert_chain:
|
|
10
|
-
-
|
|
11
|
-
-----BEGIN CERTIFICATE-----
|
|
12
|
-
MIIEBDCCAmygAwIBAgIBAzANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB1sYXJz
|
|
13
|
-
L0RDPWdyZWl6LXJlaW5zZG9yZi9EQz1kZTAeFw0yNDAyMjgxOTMxNDdaFw0yNTAy
|
|
14
|
-
MjcxOTMxNDdaMCgxJjAkBgNVBAMMHWxhcnMvREM9Z3JlaXotcmVpbnNkb3JmL0RD
|
|
15
|
-
PWRlMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAwum6Y1KznfpzXOT/
|
|
16
|
-
mZgJTBbxZuuZF49Fq3K0WA67YBzNlDv95qzSp7V/7Ek3NCcnT7G+2kSuhNo1FhdN
|
|
17
|
-
eSDO/moYebZNAcu3iqLsuzuULXPLuoU0GsMnVMqV9DZPh7cQHE5EBZ7hlzDBK7k/
|
|
18
|
-
8nBMvR0mHo77kIkapHc26UzVq/G0nKLfDsIHXVylto3PjzOumjG6GhmFN4r3cP6e
|
|
19
|
-
SDfl1FSeRYVpt4kmQULz/zdSaOH3AjAq7PM2Z91iGwQvoUXMANH2v89OWjQO/NHe
|
|
20
|
-
JMNDFsmHK/6Ji4Kk48Z3TyscHQnipAID5GhS1oD21/WePdj7GhmbF5gBzkV5uepd
|
|
21
|
-
eJQPgWGwrQW/Z2oPjRuJrRofzWfrMWqbOahj9uth6WSxhNexUtbjk6P8emmXOJi5
|
|
22
|
-
chQPnWX+N3Gj+jjYxqTFdwT7Mj3pv1VHa+aNUbqSPpvJeDyxRIuo9hvzDaBHb/Cg
|
|
23
|
-
9qRVcm8a96n4t7y2lrX1oookY6bkBaxWOMtWlqIprq8JZXM9AgMBAAGjOTA3MAkG
|
|
24
|
-
A1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQ4h1tIyvdUWtMI739xMzTR
|
|
25
|
-
7EfMFzANBgkqhkiG9w0BAQsFAAOCAYEArBmHSfnUyNWf3R1Fx0mMHloWGdcKn2D2
|
|
26
|
-
BsqTApXU2nADiyppIqRq4b9e7hw342uzadSLkoQcEFOxThLRhAcijoWfQVBcsbV/
|
|
27
|
-
ZsCY1qlUTIJuSWxaSyS4efUX+N4eMNyPM9oW/sphlWFo0DgI34Y9WB6HDzH+O71y
|
|
28
|
-
R7PARke3f4kYnRJf5yRQLPDrH9UYt9KlBQm6l7XMtr5EMnQt0EfcmZEi9H4t/vS2
|
|
29
|
-
haxvpFMdAKo4H46GBYNO96r6b74t++vgQSBTg/AFVwvRZwNSrPPcBfb4xxeEAhRR
|
|
30
|
-
x+LU7feIH7lZ//3buiyD03gLAEtHXai0Y+/VfuWIpwYJAl2BO/tU7FS/dtbJq9oc
|
|
31
|
-
dI36Yyzy+BrCM0WT4oCsagePNb97FaNhl4F6sM5JEPT0ZPxRx0i3G4TNNIYziVos
|
|
32
|
-
5wFER6XhvvLDFAMh/jMg+s7Wd5SbSHgHNSUaUGVtdWkVPOer6oF0aLdZUR3CETkn
|
|
33
|
-
5nWXZma/BUd3YgYA/Xumc6QQqIS4p7mr
|
|
34
|
-
-----END CERTIFICATE-----
|
|
35
|
-
date: 2024-10-03 00:00:00.000000000 Z
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2025-10-31 00:00:00.000000000 Z
|
|
36
12
|
dependencies:
|
|
37
13
|
- !ruby/object:Gem::Dependency
|
|
38
14
|
name: fiddle
|
|
@@ -58,14 +34,15 @@ files:
|
|
|
58
34
|
- BSDL
|
|
59
35
|
- COPYING
|
|
60
36
|
- README.md
|
|
61
|
-
- Rakefile
|
|
62
37
|
- lib/win32/registry.rb
|
|
63
38
|
- sig/win32/registry.rbs
|
|
39
|
+
- win32-registry.gemspec
|
|
64
40
|
homepage: https://github.com/ruby/win32-registry
|
|
65
41
|
licenses: []
|
|
66
42
|
metadata:
|
|
67
43
|
homepage_uri: https://github.com/ruby/win32-registry
|
|
68
44
|
source_code_uri: https://github.com/ruby/win32-registry
|
|
45
|
+
post_install_message:
|
|
69
46
|
rdoc_options: []
|
|
70
47
|
require_paths:
|
|
71
48
|
- lib
|
|
@@ -80,7 +57,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
80
57
|
- !ruby/object:Gem::Version
|
|
81
58
|
version: '0'
|
|
82
59
|
requirements: []
|
|
83
|
-
rubygems_version: 3.
|
|
60
|
+
rubygems_version: 3.5.11
|
|
61
|
+
signing_key:
|
|
84
62
|
specification_version: 4
|
|
85
63
|
summary: Provides an interface to the Windows Registry in Ruby
|
|
86
64
|
test_files: []
|
checksums.yaml.gz.sig
DELETED
|
Binary file
|
data/Rakefile
DELETED
data.tar.gz.sig
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
C���Cg |N�bN��U��%����#䖟W�̕��싙zͻY#�IѪ�7��n��/�P6[,6�K�Q�^�ENb�sdky���zި�st4�O�&P�������%�ΓCR��Q�Nj���u�URIc�2,Jhb+Na37��WAx<�����+����h��`�hJ�.,����$*�ad������]��ds�&�S��aۤ2/4�s��U�m��������X�sc���|>����%�m��A�gcl�m�W$)f� �+���z�y��T�o��a��>%oA�pBښ��:!�n|�����gg������3\�^d��.dJx�JCk�K�=��v�%�����x�MZ=�#!ȶq�p���k��o܅
|
metadata.gz.sig
DELETED
|
Binary file
|