fcl-registry/ru: what changed
Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.
| Old | New | Line | |
|---|---|---|---|
| 1 | - | ||
| 2 | - | ||
| 3 | - | ||
| 4 | - | ||
| 5 | - | ||
| 6 | - | ||
| 7 | - | ||
| 8 | - | ||
| 9 | - | ||
| 1 | + | fcl-registry это модуль [[FCL]], обеспечивает доступ к реестру Windows. | |
| 10 | 2 | ||
| 11 | 3 | ## Термины реестра | |
| 12 | 4 | ||
| 13 | - | ||
| 5 | + | RootKey: куст реестра, в котором вы хотите начать доступ к реестру. Примеры: HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER | |
| 14 | 6 | ||
| 15 | - | ||
| 7 | + | Ключ (key): куть к "каталогу" который содержит отдельные данные. Это немного трудно для понимания, но осталось для совместимости с более ранними версиями реестра. | |
| 16 | 8 | ||
| 17 | - | ||
| 9 | + | Имя/значение: фактическая пара имя/значение в ключе реестра "каталог". Каждый ключ может иметь значение по умолчанию, чье имя '' (пустая строка). | |
| 18 | 10 | ||
| 19 | 11 | ## Пример | |
| 20 | 12 | ||
| 21 | - | ||
| 22 | - | ||
| 13 | + | Пример, который пытается получить значение по умолчанию по адресу HKLM\SOFTWARE\Classes\InnoSetupScriptFile\shell\Compile\Command: | |
| 14 | + | ||
| 15 | + | ``` pascal | |
| 23 | 16 | uses ... registry... | |
| 24 | - | ||
| 25 | - | ||
| 26 | - | ||
| 27 | - | ||
| 28 | - | ||
| 29 | - | ||
| 30 | - | ||
| 31 | - | ||
| 32 | - | ||
| 33 | - | ||
| 34 | - | ||
| 35 | - | ||
| 36 | - | ||
| 37 | - | ||
| 38 | - | ||
| 17 | + | ||
| 18 | + | var | |
| 19 | + | CompileCommand: string=''; | |
| 20 | + | Registry: TRegistry; | |
| 21 | + | begin | |
| 22 | + | Registry := TRegistry.Create; | |
| 23 | + | try | |
| 24 | + | // Navigate to proper "directory": | |
| 25 | + | Registry.RootKey := HKEY_LOCAL_MACHINE; | |
| 26 | + | if Registry.OpenKeyReadOnly('\SOFTWARE\Classes\InnoSetupScriptFile\shell\Compile\Command') then | |
| 27 | + | CompileCommand:=Registry.ReadString(''); //read the value of the default name | |
| 28 | + | finally | |
| 29 | + | Registry.Free; | |
| 30 | + | end; | |
| 31 | + | end; | |
| 39 | 32 | ``` | |
| 40 | 33 | ||
| 41 | 34 | ## Доступ к 64-битному и 32-битнму реестру | |
| 42 | 35 | ||
| 43 | - | ||
| 36 | + | Если вы имеете 64-разрядную Windows, реестр разделен на 64-битную и 32-битную часть (совместимость). По умолчанию, если вы запускаете 32-битный процесс, вы увидите 32-битную часть, а если 64-битное приложение — 64-битную часть. | |
| 44 | 37 | ||
| 45 | 38 | Вы также можете получить доступ к 32-битной части из 64-битных приложений, и наоборот. Из MSDN: <http://msdn.microsoft.com/en-us/library/windows/desktop/aa384129%28v=vs.85%29.aspx> | |
| 46 | 39 | ||
| 47 | - | ||
| 48 | - | ||
| 40 | + | - KEY_WOW64_64KEY: Доступ к 64-битному ключу из 32-битного или 64-битного приложения. | |
| 41 | + | - KEY_WOW64_32KEY: Access a 32-битному ключу из 32-битного или 64-битного приложения. | |
| 49 | 42 | ||
| 50 | - | ||
| 51 | - | ||
| 43 | + | Эти ключи определены в модуле registry , так что вы можете просто использовать их: например, в свойстве Access объекта реестра, вот так: | |
| 44 | + | ||
| 45 | + | ``` pascal | |
| 52 | 46 | Registry := TRegistry.Create; | |
| 53 | - | ||
| 54 | - | ||
| 47 | + | Try | |
| 48 | + | Registry.Access:=Registry.Access or KEY_WOW64_64KEY; | |
| 55 | 49 | ``` | |
| 56 | 50 | ||
| 57 | - | ||
| 58 | - | ||
| 51 | + | или в вызове registry.create, вот так: | |
| 52 | + | ||
| 53 | + | ``` pascal | |
| 59 | 54 | TRegistry.Create(KEY_READ or KEY_WOW64_64KEY); | |
| 60 | 55 | ``` | |
| 61 | 56 | ||
| 62 | 57 | ## Административные права | |
| 63 | 58 | ||
| 64 | 59 | В зависимости от того, что вы хотите читать/писать в реестр, вам может понадобиться повышение прав администратора (Windows Vista+). Смотрите [[IDE Window: Project Options|IDE_Window:_Project_Options#Use_manifest_file_to_set_execution_level_.28Windows_only.29]] | |
| 65 | 60 | ||
| 66 | 61 | ## См. также | |
| 67 | 62 | ||
| 68 | - | ||
| 63 | + | - [[Package List]] | |
| 69 | 64 | ||
| 70 | 65 | --- | |
| 71 | - | ||
| 66 | + | *From the Free Pascal wiki, page "fcl-registry/ru", as it stood on 2020-02-14 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* |
