Сейчас для реализации InitiateSystemShutdownExW используется запрос к wineserver kill_wineserver. При его выполнении wineserver убивается, но остаются связанные с ним процессы: shpigor 16054 1.2 0.4 2927584 9544 ? Sl 12:26 0:00 C:\windows\system32\winedevice.exe MountMgr shpigor 16073 0.8 0.5 2928428 10348 ? Sl 12:26 0:00 C:\windows\system32\winedevice.exe shpigor 16086 0.6 0.4 2927648 9532 ? Sl 12:26 0:00 C:\windows\system32\winedevice.exe Parport shpigor 16094 0.7 0.4 2927584 9532 ? Sl 12:26 0:00 C:\windows\system32\winedevice.exe Usbhub При многократном выполнении InitiateSystemShutdownExW, wine вообще перестает запускаться (возможно заканчиваются pid'ы или какой-то системный ресурс). После такого завершения wineserver'а изменения в winecfg на вкладке "Ключи защиты" не сохраняются. Несмотря на то, что изменения в реестр успешно вносятся, после kill_wineserver они сбрасываются.
Выложил патч. Ошибка была в новом обработчике сервера - kill_wineserver. В нем вызывается kill_lock_owner, которая посылает wineserver'у сигнал SIGINT, но при посылке она ориентируется закрыт ли специальный lock файл. По этому lock файлу определяется pid wineserver'a, а так как kill_lock_owner вызывается из этого же wineserver'а, то проверка lock файла не срабатывает (он оказывается свободным). В результате сигналы не посылаются. Для решения ошибки необходимо создавать дочерний процесс и посылать все сигналы из него.
Принято. WINE@Etersoft 1.0.12 eter5/eter4