Исправление выбранных регионов файла
При исправлении файлов с содержимым переменной может потребоваться сохранить выбранные регионы целевого файла, чтобы предотвратить потерю критически важных сведений. Например, некоторые приложения встраивают информацию о пользователях в исполняемый файл. Так как содержимое целевого файла может зависеть от компьютера, на котором установлено приложение, становится трудно определить, является ли конкретный файл допустимым целевым объектом для исправления. Сведения о пользователе, записанные в целевом файле, также могут быть перезаписаны исправлением.
При создании файла свойств создания исправлений (PCP) с Msimsp.exe и PATCHWIZ.DLLможно указать, что сведения в определенных регионах целевого файла игнорируются во время исправления. Вы также можете указать, что информация в других частях целевого файла сохраняется и копируется в смещенное местоположение в обновленном файле. Вы указываете, какие регионы целевого файла следует игнорировать и какие сохранять при создании таблиц TargetFiles OptionalData, ExternalFilesи FamilyFileRanges.
Используйте столбец RetainOffsets таблицы TargetFiles OptionalData и столбцы RetainOffsets и RetainLengths таблицы FamilyFileRanges, чтобы скопировать информацию из целевого файла в диапазон смещения обновленного файла. Сведения в этом диапазоне сохраняются. Укажите длину диапазона с помощью столбцов RetainLengths таблицы FamilyFileRanges. Длина сохраненного диапазона совпадает с целевыми и обновленными файлами. Укажите смещение диапазона в целевом файле с помощью столбца RetainOffsets таблицы TargetFiles OptionalData. Укажите смещение диапазона в обновленном файле с помощью столбца RetainOffsets таблицы FamilyFileRanges. Таким образом, диапазон сохраненного целевого файла определяется как значение из RetainOffsets в таблице TargetFiles OptionalData плюс RetainLengths. Эта информация копируется в файл обновления в диапазоне, заданном значением RetainOffsets в таблицах FamilyFileRanges, а также RetainLengths. Можно указать несколько диапазонов, но порядок длины должен соответствовать порядку смещения.
Используйте таблицу TargetFiles OptionalData, чтобы игнорировать диапазон целевого файла. Сведения в этом диапазоне целевого файла по-прежнему могут быть перезаписаны патчем. Укажите смещение диапазона в столбце IgnoreOffsets и его длину в столбце IgnoreLengths. Можно указать несколько диапазонов, но порядок длины должен соответствовать порядку смещения.
Значения в столбцах длины и смещения могут быть десятичными или шестнадцатеричными. PATCHWIZ.DLL обрабатывает значение как шестнадцатеричное, если оно префиксируется значением "0x". Столбцы являются строковыми столбцами, поэтому PATCHWIZ.DLL преобразует значения в ULONG. Столбец длины указывает длину в байтах.