Bazaprogram.ru

Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ntcreatefile api как исправить

Набор обновлений UpdatePack-XPSP3-Rus Live 19.11.15

UpdatePack Live для обновления установленной системы Windows XP SP3 Rus

Ключевой особенностью набора является наличие тех же обновлений, какие содержит UpdatePack-XPSP3-Rus. Дополнительно включены обновления тех продуктов, которые являются частью операционной системы: Windows Media Player 9-11 и Internet Explorer 6-8, а также исправления ошибок локализации. Возможна установка полных версий IE8 и WMP11, дополнительных программ и обновлений; все подробности в FAQ.

Mini-FAQ:

1. Q: Каким образом можно максимально автоматизировать процесс установки набора обновлений?
A: Для этого можно использовать следующие ключи или их комбинации:
• Ключ /reboot для автоматической перезагрузки, если она потребуется.
• Ключ /S для полностью тихой установки без окон и сообщений. Регистр имеет значение.
• Ключ /silent для пассивной установки — видно прогресс, но установка полностью автоматическая.
• Ключ /noflash пропускает установку более новой версии Adobe Flash.

2. Q: Где можно найти журнал установки?
A: Протокол установки обновлений записывается в файл %WinDir%UpdatePack.log. Также его можно просмотреть в диалоговом окне после установки.

3. Q: Каким образом можно выполнить свои программы или твики?
A: Для этого предназначены два пакетных файла, которыми можно выполнить любые внешние команды:
• Если рядом с набором есть UpdatePackStart.cmd — он будет выполнен перед установкой обновлений, UpdatePackFinish.cmd — после.
• По умолчанию консольные окна будут показаны. Чтобы их скрыть, первая строка в cmd-файле должна начинаться с «:hide» (без кавычек).
• Набор обновлений отслеживает код выхода из cmd-файлов, на случай необходимости перезагрузки. Этот код равен 3010 (команда exit 3010).

4. Q: Можно ли автоматически установить Service Pack 3?
A: Если в той же папке есть файл WindowsXP-KB936929-SP3-x86-RUS.exe и в системе установлен SP1/SP2, то SP3 будет предложен к установке.

5. Q: А что если часть обновлений уже установлена в системе?
A: Все корректно установленные обновления будут пропущены, установятся только необходимые.

6. Q: Возможно ли установить IE8 и WMP11 средствами самого набора обновлений?
A: Для этого присутствуют следующие возможности:
• Чтобы установить IE8, запустите набор с ключом /ie8, или добавьте слово ie8 в любую часть имени файла набора (например UpdatePackLiveie8.exe).
• Чтобы установить WMP11, поместите в папку с набором файл wmp11-windowsxp-x86-ru-ru.exe.
• Если вы хотите применить свои твики после установки IE8 или WMP11, расположите в папке с набором файлы ie8.reg и wmp11.reg соответственно.

Набор обновлений UpdatePack-XPSP3-Rus Live 19.11.15 : 155 комментариев

Нашел способ, как исправить отображение неправильных ошибок. Например, сейчас отображаются:
Выполнение приложения завершено после нажатия клавиш CTRL+C.
Или:
Сбой функции NtCreateFile API. Эта ошибка никогда не должна возвращаться приложению, она является заглушкой для применения во внутренних процедурах отображения ошибок перенаправителя Windows Lan Manager.
А нужно:
Точка входа в процедуру %name% не найдена в библиотеке DLL %name%.
И:
Приложению не удалось запуститься, поскольку %name% не был найден. Повторная установка приложения может исправить эту проблему.

Открыть файл ntdll.dll в Resource hacker.
— Перейти в папку «Message Table».
— Скопировать весь текст в редактор, который имеет функцию блочного копирования (например, AkelPad, EmEditor).
— Скопировать текст правой колонки, начиная со строки 0x8020000B, до строки 0xC0150012.
— Вставить этот текст начиная со строки 0xC0000001 до строки 0xC0150013 (сдвинуть на одну строку вниз).
— Скопировать текст из строки 0xC020000C в строку 0x8020000B.
— Перенести весь полученый текст в Resource hacker, сохранить ntdll.dll.

Для начала напишите, как воспроизвести проблему — какую программу запускать, чтобы было видно неправильную ошибку, и какая должна быть.

Ошибку, что не хватает dll я вызвал запуском 32 битной сборки ffmpeg отсюда: https://ffmpeg.zeranoe.com/builds/
Должно написать: Приложению не удалось запуститься, поскольку bcrypt.dll не был найден. Повторная установка приложения может исправить эту проблему.
А пишет: Сбой функции NtCreateFile API. Эта ошибка никогда не должна возвращаться приложению, она является заглушкой для применения во внутренних процедурах отображения ошибок перенаправителя Windows Lan Manager.

В принципе пойдет любая, которая требует внешний dll, или программа, которая вызывает функцию, которой нет в ХР.
Вот отсюда я взял инструкцию: https://msfn.org/board/topic/171814-posready-2009-updates-ported-to-windows-xp-sp3-enu/page/203/?tab=comments#comment-1166938

Вообще в файле ntdll.dll более ста строк сообщений, и бОльшая часть из них оказалась сдвинута на строку вверх. В основном они достаточно специфичны, поэтому практически никогда не отображаются, но вот что нет dll или нет точки входа попадаются чаще. Судя по сообщениям на форуме MSFN, ошибка появилась не так давно, в одном из обновлений была добавлена новая ошибка, но почему то она оказалась не на своем месте.

Читать еще:  Link 2020 как исправить

Спасибо, проверю.
Проблему подтверждаю.

помогите мне! Я загрузил себе файл UpdatePack7R2 для Windows 7 SP1 и Server 2008 R2 SP1.
Открываю его и мне пишет, что нужно скачать сервис пак 1. В итогу как мне обновить систему? Что за пак?

У вас Windows 7 без сервис-пака. Скачайте его и установите. Потом сможете ставить UpdatePack7R2.
https://www.microsoft.com/ru-ru/download/details.aspx? > Вас интересует файл

windows6.1-KB976932-X86.exe — для 32-битной системы
или
windows6.1-KB976932-X64.exe — для 64-битной

А вы не могли бы выложить ваш уже правленый ntdll.dll на любой удобный для вас обменник?

Can I install in XP SP3 ENU (English US)

Можно ли сделать так, чтобы файл shell32.dll при установке данного пакета обновлений НЕ обновлялся (затирая мой)?

Обновления подразумевают замену файлов более новыми версиями.

Подходит ли этот пак обновлений для win2003 server r2 ?

Если вы найдёте в описании упоминание этой системы, то подойдёт.

simplix , будут ли ещё наборы обновлений для windows xp если её поддержка завершена полностью даже для версии для терминалов ?

Доброго времени суток. Интересный вопрос, так же интересно, как вы это себе представляете? По вашему Simplex должен взять поддержку ХР на себя?

Is there an English version?

@Dylan Taylor,
Actually these MS updates goes in Russian out there. Simplix doesn’t care for English version. It was discussed back.

А можно ли сей пакет как-то интегрировать в дистрибутив Windows XP?

ссылка на WMP 11 не работает.

Очень хотелось бы видеть вариант подобного пакета для английской Windows XP.
Для нее существует неофициальный SP4, но его сложно ставить и он очень громоздкий.

simplix forum

Страниц: 1 … 10 11 12 13 14 … 38

#276 27.07.2016 13:02:06

Re: UpdatePack-XPSP3-Rus Live 19.11.15

simplix
На моём опыте проблем после пропатчивания (аккуратного) выявлено не было — главное, не повышать использование памяти (изменённые ресурсы использовать того же формата и размера).
Сборку делаю для тех, кто перешёл с 7ки на XP из-за слабой машины/ноута, но очень привык к её интерфейсу.
Ну ладно, в любом случае, спасибо. Может, как-нибудь разберу все хотфиксы сам.

#277 12.08.2016 14:53:21

Re: UpdatePack-XPSP3-Rus Live 19.11.15

UpdatePack-XPSP3-Rus Live версия 16.8.12

• Добавлен KB3175443 из Windows XP Embedded (IE8, заменяет KB3170106)
• Добавлен KB3177725 из Windows XP Embedded (заменяет KB3168965)
• Добавлен KB3178034 из Windows XP Embedded
• Adobe Flash 22.0.0.209-210 ActiveX & Plugin

#278 17.09.2016 18:46:41

Re: UpdatePack-XPSP3-Rus Live 19.11.15

UpdatePack-XPSP3-Rus Live версия 16.9.17

• Добавлен KB3175024 из Windows XP Embedded (заменяет KB3153171)
• Добавлен KB3177186 из Windows XP Embedded
• Добавлен KB3177723 из Windows XP Embedded (заменяет KB3162835)
• Добавлен KB3184122 из Windows XP Embedded
• Добавлен KB3185319-v2 из Windows XP Embedded (IE8, заменяет KB3175443)
• Добавлен KB3185911 из Windows XP Embedded (заменяет KB3177725)
• Adobe Flash 23.0.0.162 ActiveX & Plugin

#279 18.09.2016 18:32:44

Re: UpdatePack-XPSP3-Rus Live 19.11.15

#280 21.09.2016 03:14:28

Re: UpdatePack-XPSP3-Rus Live 19.11.15

Приветствую уважаемых знатоков и всех читателей форума!
Есть проблема

— Установил XP на древних комп
— Переправил реестр на PosReady
— Благополучно обновился через автообновление
— Установил антивирус Microsoft с этого сайта, автоматически обновил его

Жил не тужил, но постоянно лезло обновление, которое никак не могло самостоятельно установиться. Тогда я решил накатить поверх обновленной системы UpdatePack-XPSP3-Rus Live 16.9.17. То злополучное обновление установилось, равно как и множество других и всё бы хорошо, но перестал обновляться автоматически антивирус, вываливая окно с ошибкой 0x80244019; Так же ошибка светится при попытке найти обновления на http://www.update.microsoft.com/microso … aspx?ln=ru
Последнее меня мало интересует, но антивирус хочется обновлять 😉
Кто подскажет, в чём соль?

Как я понял из описания и логов, UpdatePack-XPSP3-Rus Live устанавливает
Windows Update Agent 7.6.7600.257

Вручную установил Windows Update Agent 7.6.7600.256 с ключом wusetup.exe /wuforce
обновление антивируса снова заработало! Но при заходе на сайт обновления Майкрософт всё равно обновления проверять не хочет, предлагает сразу закачать и установить файл, после чего пресловутая ошибка 0x80244019 появляется снова ;(

Читать еще:  Как проверить неисправный блок питания

Лог ошибок сохранил отдельно, могу скинуть. Заранее спасибо.

Отредактировано serg7 (21.09.2016 03:45:01)

Windows Native Applications и сервис Acronis Active Restore

Сегодня продолжаем рассказ о том, как мы вместе с ребятами из Университета Иннополис разрабатываем технологию Active Restore, чтобы позволить пользователю как можно раньше начать работу на своей машине после сбоя. Речь пойдет о нативных приложениях Windows, включая особенности их создания и запуска. Под катом – немного о нашем проекте, а также практическое руководство как писать нативные приложения.

В прошлых постах мы уже рассказывали о том, что такое Active Restore, и как студенты из Иннополиса разрабатывают сервис. Сегодня я хочу остановиться на нативных приложениях, до уровня которых мы хотим “закопать” наш сервис активного восстановления. Если все получится, то мы сможем:

  • Намного раньше запустить сам сервис
  • Намного раньше связаться с облаком, в котором лежит бэкап
  • Намного раньше понять, в каком режиме находится система – нормальной загрузки или восстановления
  • Намного меньше файлов восстанавливать заранее
  • Позволить пользователю приступить к работе еще быстрее.

Что вообще такое нативное приложение?

Чтобы ответить на этот вопрос, давайте взглянем на последовательность вызовов, которые совершает система, например, если программист в своем приложении пытается создать файл.


Pavel Yosifovich — Windows Kernel Programming (2019)

Программист использует функцию CreateFile, которая объявлена в заголовочном файле fileapi.h и реализована в Kernel32.dll. Однако сама эта функция не занимается созданием файла, она лишь проверяет аргументы на входе и вызывает функцию NtCreateFile (приставка Nt как раз свидетельствует о том, что функция нативная). Данная функция объявлена в заголовочном файле winternl.h и реализована в ntdll.dll. Она производит подготовку к прыжку в ядерное пространство, после чего совершает системный вызов для создания файла. В данном случае получается, что Kernel32 – всего лишь обертка для Ntdll. Одна из причин для чего это сделано, Microsoft таким образом имеет возможность изменять функции нативного мира, но при этом не трогать стандартные интерфейсы. Microsoft не рекомендует напрямую вызывать нативные функции и не документирует большую часть из них. Кстати, недокументированные функции можно найти тут.

Основное преимущество нативных приложений заключается в том, что ntdll загружается в систему значительно раньше kernel32. Это логично, ведь kernel32 требует наличия ntdll для работы. Как следствие, приложения, использующие нативные функции, могут начать работу значительно раньше.

Таким образом, Windows Native Applications – это программы, способные запускаться на раннем этапе загрузки Windows. Они используют ТОЛЬКО функции из ntdll. Пример такого приложения: autochk который исполняет chkdisk utility для проверки диска на ошибки еще до запуска основных сервисов. Именно на таком уровне мы и хотим видеть наш Active Restore.

Что нам понадобится?

Что же в коде?

Давайте немного потренируемся и для примера напишем небольшое приложение которое:

  1. Выводит сообщение на экран
  2. Аллоцирует немного памяти
  3. Ждет ввода с клавиатуры
  4. Освобождает занятую память

В нативных приложениях точкой входа является не main или winmain, а функция NtProcessStartup, так как мы фактически напрямую запускаем новые процесс в системе.

Начнем с вывода сообщения на экран. Для этого у нас есть нативная функция NtDisplayString, которая в качестве аргумента принимает указатель на объект структуры UNICODE_STRING. Инициализировать его нам поможет RtlInitUnicodeString. В результате, для вывода текста на экран мы можем написать вот такую небольшую функцию:

Так как нам доступны только функции из ntdll, и других библиотек в памяти просто еще нет, у нас обязательно возникнут проблемы с тем как аллоцировать память. Оператора new ещё не существует (потому что он родом из слишком высокоуровнего мира C++), также нет функции malloc (для нее нужны библиотеки runtime C). Можно конечно пользоваться лишь стэком. Но если нам нужно динамически аллоцировать память, делать это придется в куче (т.е. heap). Поэтому давайте создадим для себя кучу и будем брать из нее память когда нам потребуется.

Для этой задачи подойдет функция RtlCreateHeap. Далее, используя RtlAllocateHeap и RtlFreeHeap, мы будем занимать и освобождать память когда нам это будет нужно.

Перейдем к ожиданию ввода с клавиатуры.

Читать еще:  Как исправить документ

Все что нам нужно – это использовать NtReadFile на открытом устройстве, и ждать, пока клавиатура не вернет нам какое либо нажатие. В случае, если нажата клавиша ESC, мы продолжим работу. Чтобы открыть устройство, нам потребуется вызвать функцию NtCreateFile (открыть нужно будет DeviceKeyboardClass0). Также мы вызовем NtCreateEvent, чтобы инициализировать объект для ожидания. Мы самостоятельно объявим структуру KEYBOARD_INPUT_DATA, которая представляет данные клавиатуры. Это облегчит нам работу.

Работа нативного приложения завершается вызовом функции NtTerminateProcess, потому что мы просто убиваем свой собственный процесс.

Весь код нашего небольшого приложения:

PS: Мы можем запросто использовать в коде функцию DbgBreakPoint() для остановки в дебаггере. Правда нужно будет подключить WinDbg к виртуальной машине для кернельной отладки. Инструкцию как это сделать можно найти тут или просто использовать VirtualKD.

Компиляция и сборка

Самый простой способ собрать нативное приложение – это использовать DDK (Driver Development Kit). Нам нужна именно древняя седьмая версия, так как более поздние версии имеют несколько иной подход и тесно работают с Visual Studio. Если же использовать DDK, то нашему проекту нужны всего лишь Makefile и sources.

Ваш Makefile будет точно таким же, на sources же давайте остановимся чуть подробнее. В данном файле указываются исходники вашей программы (файлы .c), опции сборки и другие параметры.

  • TARGETNAME – имя исполняемого файла, который должен получиться в итоге.
  • TARGETTYPE – тип исполняемого файла, это может быть драйвер (.sys), тогда значение поля должно быть DRIVER, если библиотека (.lib), то значение LIBRARY. В нашем случае нужен исполняемый файл (.exe), поэтому мы устанавливаем значение PROGRAM.
  • UMTYPE – возможные значения этого поля: console для консольного приложения, windows для работы в оконном режиме. Но нам необходимо указать nt, чтобы получить нативное приложение.
  • BUFFER_OVERFLOW_CHECKS – проверка стэка на переполнение буфера, к сожалению не наш случай, выключаем.
  • MINWIN_SDK_LIB_PATH – данное значение ссылается на переменную SDK_LIB_PATH, не стоит переживать что у вас не объявлена подобная системная переменная, в момент когда мы запустим checked build из DDK, данная переменная будет объявлена и будет указывать на необходимые библиотеки.
  • SOURCES – список исходников вашей программы.
  • INCLUDES – заголовочные файлы, которые необходимы для сборки. Тут обычно указывают путь к файлам, которые идут в комплекте с DDK, но вы можете указать дополнительно любые другие.
  • TARGETLIBS – список библиотек, которые необходимо линковать.
  • USE_NTDLL – обязательное поле, которое необходимо установить в положение 1. По вполне очевидным причинам.
  • USER_C_FLAGS – любые флаги, которые вы сможете использовать в препроцессорных директивах при подготовке кода приложения.

Итак для сборки нам необходимо запустить x86 (или x64) Checked Build, сменить рабочий каталог на папку с проектом и выполнить команду Build. Результат на скриншоте показывает что у нас собрался один исполняемый файл.

Данный файл не получится так просто запустить, система ругается и отправляет нас думать о своем поведении со следующей ошибкой:

Как запустить нативное приложение?

В момент старта autochk последовательность запуска программ определяется значением ключа реестра:

Менеджер сессии поочередно исполняет программы из этого списка. Сами же исполняемые файлы менеджер сессии ищет в директории system32. Формат значения ключа реестра следующий:

Значение должно быть в шестнадцатеричном формате, а не в привычном ASCII, следовательно ключ, представленный выше, будет иметь формат:

Чтобы конвертировать название, можно использовать онлайн-сервис, например, этот.

Получается, чтобы запустить нативное приложение, нам необходимо:

  1. Скопировать исполняемый файл в папку system32
  2. Добавить в реестр ключ
  3. Перезагрузить машину

Для удобства вот вам готовый скрипт для установки нативного приложения:

После установки и перезагрузки еще до появления экрана выбора пользователей мы получим следующую картину:

На примере вот такого маленького приложения мы убедились, что запустить приложение на уровне Windows Native вполне возможно. Дальше мы с ребятами из Университета Иннополис продолжим строить сервис, который будет инициировать процесс взаимодействия с драйвером намного раньше, чем в предыдущей версии нашего проекта. А с появлением оболочки win32 логично будет передать управление полноценному сервису, который уже был разработан (об этом подробнее здесь).

В очередной статье мы коснемся еще одного компонента сервиса Active Restore, а именно UEFI драйвера. Подписывайтесь на наш блог, чтобы не пропустить следующий пост.

Ссылка на основную публикацию
Adblock
detector