powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Программно заменить системный файл
14 сообщений из 14, страница 1 из 1
Программно заменить системный файл
    #39320653
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файл вида C:\Windows\System32\drivers\*.sys

Дабы не делать из темы помойку, на левые вопросы отвечу сразу.
Не вирус. Штатный MS драйвер по сути не менявшийся с 1999г.
MS умудрился его непреднамеренно испортить в Windows10 где-то в начале года с очередным обновлением (в изначальном оф. релизе проблем не было).
Я с MS общаться напрямую не умею (да и клал он). Но есть люди, которые вроде как вышли на их горе-драйвероделателей.
Чего из этого выйдет пока не ясно, по идее должны исправить но хз.
Текущим решением является тупо взятие файла из Win8.1 (либо Win10 до того как испортили) и муванье оного в текущий билд.
Проблема с цифровой подписью при этом как бы возникает, но в целом решаема (несколько усугубляется тем, что эти файлы подписаны предполагаю через каталог .cat - естественно своего билда а не напрямую, где лежит пока не нашел).
Еще конечно риск перезаписи системой при каком-либо будущем апдейте, это понятно.
Но рассматриваем разные варианты, в том числе поганые.

И вернемся к сути вопроса.

Особенности:
Owner=TrustedInstaller
Админ прав на замену не имеет
Плюс еще в штатном режиме системы "Используется другим приложением".

Алгоритм "ручками" такой:
1) Меняем Owner=TrustedInstaller -> Owner=Administrators
2) Даем Administrators полный доступ
3) Перегружаем OS в безопасный режим
4) Заменяем файл на требуемый
5) Перегружаем OS в обычный режим
По хорошему еще:
6) 7) первые два пункта в обратной последовательности, т.е. отнять права у админа и восстановить TrustedInstaller

С первыми двумя пунктами (владелец и права) у меня лично как бы проблем нет (при условии что прога запушена под админом естественно).
А вот насчет программной замены файла через перезагрузку (а иначе система его не отпустит) - не сталкивался.
Безопасный режим понятно не нужен (если программно).
А нужен механизм типа того что делает Windows Update, а он как-то "заряжает" файлы на замену сразу после перезагрузки системы.
Есть идеи?
...
Рейтинг: 0 / 0
Программно заменить системный файл
    #39321129
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://technet.microsoft.com/ru-ru/sysinternals/pendmoves
ответы можно поискать тут, можно вроде через PowerShell еще
...
Рейтинг: 0 / 0
Программно заменить системный файл
    #39321169
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes, тут коротко о магии
...
Рейтинг: 0 / 0
Программно заменить системный файл
    #39321176
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Штатный MS драйвер
что за драйвер и что испортили?
Дмитрий77Я с MS общаться напрямую не умею
ничего сверхестественного в этом нет
...
Рейтинг: 0 / 0
Программно заменить системный файл
    #39321209
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилДмитрий77Штатный MS драйвер
что за драйвер и что испортили?
Не знаю что у ТС испортили, у меня стал вылетать эксель при генерации через COM на форматировании вывода на бумагу (.ActiveSheet.PageSetup ...), полечил сменой дефолтного принтера. Дефолтным стоял старенький Canon расшаренный на другом компе. До обновления винды проблем не было.

Много чего перепортили этим обновлением. Даже планировщик умудрились сломать .
...
Рейтинг: 0 / 0
Программно заменить системный файл
    #39321219
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилДмитрий77Штатный MS драйвер
что за драйвер и что испортили?
modem.sys
Читай если интересно:
56K Modem missing Unimodem Audio Device after update to Windows 10 Build 10586
Первой (описание проблемы) и последней (типа решение на коленках) страницы для понимания достаточно, все остальное - плач пострадавших.
Смысл, что с этим багом ни один голосовой модем (неважно какой производитель и что у него в драйвере самого модема) не будет делать голос через TAPI.

ИзопропилДмитрий77Я с MS общаться напрямую не умею
ничего сверхестественного в этом нет
И как это делать? Чтобы это возымело эффект?
Эффектом должно быть очередное обновление, устраняющее проблему.
...
Рейтинг: 0 / 0
Программно заменить системный файл
    #39321292
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserRoman Mejtes, тут коротко о магии

Наверно даже лучше вот это:
How to replace in-use files at Windows restart

1.Start Registry Editor (Regedt32.exe).
2.Locate the following key in the Windows registry:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager

3.Create a new value by using the following information:

Value name: PendingFileRenameOperations Data type : REG_MULTI_SZ Value data: \??\c:\temp\win32k.sys !\??\c:\winnt\system32\win32k.s
Note that the value data is typed on two separate lines.
4.Quit Registry Editor.
5.Restart the computer.

Хотя счас перечитал твою ссылку, тоже самое.

Тем более это выполняется очевидно от имени System,
а System кстати имеет "полные права" на интересуемый файл.
Т.е. менять владельца и права на файл не надо, гимора меньше.
Будет настроение, попробую.
Если это сработает, то можно сделать и программно.

Метод только этот (замена системного файла) дюже дерьмоватый.
Риск обновления более новым файлом (после принудительной замены)
не так страшен
как риск остаться вообще без модема (что сильно хуже)(а не только без его голосовых функций) если в каком нибудь будущем билде трюк с заменой файла не сработает, старый файл напр. окажется несовместимым (вряд ли конечно, MS с этими старыми драйверами только тупо меняет "версии", иногда что-нибудь случайно портят как в данном случае). Поэтому все же основные ставки на то что MS таки исправит баг (но за 9 месяцев пока не исправил! плохо).


До кучи, м.б. кто знает?
C:\Windows\System32\drivers\modem.sys
Где искать файл каталога (.cat) который отвечает за цифровую подпись файла (сам файл не подписан).
...
Рейтинг: 0 / 0
Программно заменить системный файл
    #39321334
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

повеселил . Vanessa доставляет ))
...
Рейтинг: 0 / 0
Программно заменить системный файл
    #39321367
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилповеселил . Vanessa доставляет ))
то то и оно
люди уже год почти на стенку лезут и чет им там невесело, а ты говоришь "ничего сверхестественного"

слабая надежда только на вот это (6-я страница)
http://answers.microsoft.com/en-us/windows/forum/windows_10-hardware/56k-modem-missing-unimodem-audio-device-after/7a53af94-21fe-4352-80ec-b27fb3dc5886?page=6

charlestekWell for some reason, I wasn't listening to my own advice that normally the volunteer moderators can't pass this to the proper people, or there maybe a backlog of stuff Microsoft cares less about.

In any case, my initial request went to a VP who used to run the .Net division, who usually is good at knowing someone to find the right person/department, so this got passed to a few people and one of these people said they would ensure that this gets to the right person, but it may take a number of days .

I indicated that the target person should read this forum thread, so at least we have been self documenting the issue in detail.

So like I said, fingers crossed, but I'm not celebrating yet.
...
Рейтинг: 0 / 0
Программно заменить системный файл
    #39321537
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserRoman Mejtes, тут коротко о магии
Я попытался:
MoveFileEx function
Ключ то оно в реестре создает,
но в зависимости от пути может вообще не сработать,
далее конкретно MoveFileEx умничает, т.е. переименовывает System32 в SysWow64 при записи в реестр (ну в 64-битной компиляции не переименовывает).
Но самое поганое, это то что если и удалось переименовать modem.sys -> modem_back.sys и подсунуть новый modem.sys, то использоваться будет modem_back.sys, драйвер грузится до этого горе-переименователя при старте.

Хотя отсюда рецепт (без "безопасных" режимов):

1) переименовать modem.sys -> modem_back.sys
2) подкинуть новый modem.sys
3) перегрузить систему
4) удалить modem_back.sys

Или еще проще(без перезагрузки)
1) "отключить" все модемы в системе ("отключить" в диспетчере устройств, devcon.exe или SetupDi..-функции это умеют)
2) заменить файл
3) "включить" все модемы

Энто все работает.

Ну и замену владельца и прав на файл (желательно с обратной процедурой) никто не отменял.

Как-то так, а это все уже программно из-под админа решаемо.
...
Рейтинг: 0 / 0
Программно заменить системный файл
    #39321539
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Дмитрий771) переименовать modem.sys -> modem_back.sys
1.1) скопировать права с modem_back.sys
2) подкинуть новый modem.sys
2.1) дать скопированные права на modem.sys
3) перегрузить систему
4) удалить modem_back.sys
...
Рейтинг: 0 / 0
Программно заменить системный файл
    #39321540
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77MS умудрился его непреднамеренно испортить в Windows10 где-то в начале года с очередным обновлением (в изначальном оф. релизе проблем не было).Отказаться от поддержки своей программы в Windows 10, сославшись на факт ошибочных действий со стороны Microsoft?
...
Рейтинг: 0 / 0
Программно заменить системный файл
    #39321550
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КДмитрий77MS умудрился его непреднамеренно испортить в Windows10 где-то в начале года с очередным обновлением (в изначальном оф. релизе проблем не было).Отказаться от поддержки своей программы в Windows 10, сославшись на факт ошибочных действий со стороны Microsoft?
Ну скорее от поддержки оборудования, несовместимого с вин10
...
Рейтинг: 0 / 0
Программно заменить системный файл
    #39321580
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Дмитрий771) переименовать modem.sys -> modem_back.sys
1.1) скопировать права с modem_back.sys
2) подкинуть новый modem.sys
2.1) дать скопированные права на modem.sys
3) перегрузить систему
4) удалить modem_back.sys


Не, так не получится.
Первые два пункта по любому должны быть:
1) Меняем Owner=TrustedInstaller -> Owner=Administrators
2) Даем Administrators полный доступ

Иначе не переименуешь.

Последние два
N-1)Отнимаем у Administrators полный доступ
N)Меняем Owner=Administrators->Owner=TrustedInstaller

Но последние 2 можно и не делать (на совести того кто меняет файл), на работоспособность не повлияют.

И перезагрузка не нужна как я сказал, девайсы отключаются, файл не используется и его можно поменять без переименований.
Потом включаются. Всё.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Программно заменить системный файл
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]