![]() |
Имопрт Reg-файла
Привет.
Как узнать, что импорт REG-файла прошёл успешно? Допустим, я запускаю батник с таким содержимым. Код:
reg import "C:\Temp\111.reg" Код:
[HKEY_CURRENT_USER\Software\111] Даже если доступ к ключу запрещён, и ничего не вносится. Даже если корневого раздела не существует. Во всех справках говорится, что при сбое будет возвращена единица. Как, вообще, возможно узнать, удачно-ли импортировался Reg-файл? |
если вы не просто ветку создаете (иначе именно reg import лишнее reg add хватит), а и данные в ней, то проверить не пустая ли ветка и естественно ее существование, можно так:
Код:
reg import "C:\Temp\111.reg" в PowerShell легче работать с реестром, а тут что первое в голову пришло то и написал. |
Цитата:
Цитата:
Скрытый текст
![]() Если же исправить Ваш файл не-реестра, добавив в него потребное согласно описанию формата файла реестра, то: Скрытый текст
![]() |
Я имеею ввиду, что допустим, доступ к разделу запрещён.
Соответстсвенно, записано ничего не будет. Но возвратиться 0, которое говорит об успехе. |
Другое дело, что толку в этом мало: ну, предположим, узнали мы, что некая часть данных не была успешно импортирована в реестр — и что? Чтобы реально отслеживать что-то, нужны единичные операции с каждым отдельным разделом и параметром, и ведение лога на каждый чих.
|
Нет там потоков. STDOUT в Regedit.exe не поддерживается.
|
Цитата:
Скрытый текст
![]() Я запретил полный доступ группе Everyone (Все) к разделу реестра HKEY_CURRENT_USER\Software\111. Результат попытки импорта файла реестра посредством reg.exe Вы видите. Что не так? |
Ну вот допустим.
Код:
for %%f in (*.reg) do reg import "%%f" В 111.txt я хочу увидеть успех или ошибку. Как такое сделать? |
Cytus, а Вы для начала определитесь, что есть успех и что есть ошибка. Затем перенаправьте стандарный поток ошибок в стандартный поток вывода (поскольку reg.exe для информирования использует именно стандартный поток ошибок, а не стандартный поток вывода (стандартный поток вывода используется, например, для reg.exe query и т.п.):
Скрытый текст
![]() А ещё лучше будет примерно так: Код:
@echo off Result.txt
Код:
[C:\Мои проекты\0218\0001.reg]: |
У меня доступ к ключу закрыт.
Ничего не вносится. Но пишет "Операция успешно завершена". ХР-система. |
Код:
reg query "HKEY_CURRENT_USER\Software\111" >nul 2>&1 &CALL echo %^errorlevel% |
Cytus
Вам Iska уже намекнул, что ваш исходно приведенный вроде бы reg-файл на самом деле не является файлом реестра: в нём отсутствует заголовок reg-файла. |
|
Вопрос закрыт. Всем, спасибо, за участие.
|
Цитата:
1. Что-то из советов помогло? 2. Сами решили (и как решили)? 2. Плюнули на это дело? — Я свою проблему решил. — А как? — Я решил, что это не проблема. |
Плюнул. Там ничего не придумаешь, потому как ни regedit.exe ни reg.exe не пишут в stdout.
|
Cytus,
в windows хватает косяков в reg import ошибка выйдет, если именно сам импорт не пройдет из-за того что файл не reg или подобное глобальное, а так можно сравнить с брошенным по мишени камнем. Попали или нет, дело такое, а камень брошен - импорт произошел. Надо проверять (после импорта) именно наличие данных, пример в п2 или другим подобным или удобным способом. |
alpap, ну, вот у меня именно что так: если раздел недоступен из-за отсутствия прав — reg.exe import возвращает ненулевой код возврата.
А по-хорошему — надо проверять создание каждого раздела и каждого параметра, и делать сие, разумеется, придётся в WSH/PoSH. |
Цитата:
|
Время: 00:57. |
Время: 00:57.
© OSzone.net 2001-