Вроде нашел решение:
Есть два способа запуска KMPlayer-а:
1-й. Кликнуть 2 раза в проводнике или в тотале на каком либо фильме. Просто обычный способ запуска файлов.
2-й. Запустить KMPlayer-р через Пуск-Программы-The KMPlayer-KMPlayer.lnk
или любой другой способ. Главное, чтобы просто запускалась программа, без открытия какого либо файла.
Если запустить 2-м способом, то выключение пройдет нормально.
Если 1-м, то вылазит окно. Правда не у всех и не всегда
Вот экспорт реестра ответственного за открытие файлов *.avi (для примера, в остальных тоже самое):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\KMPlayer.avi]
@="KMP - Видеозапись"
[HKEY_CLASSES_ROOT\KMPlayer.avi\CLSID]
@="{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}"
[HKEY_CLASSES_ROOT\KMPlayer.avi\DefaultIcon]
@="\"D:\\Program Files\\KMPlayer\\KIconLib.dll\",2"
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell]
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\Enqueue]
@="Добавить в KMP"
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\Enqueue\command]
@="\"D:\\PROGRA~1\\KMPlayer\\kmplayer.exe\" /ADD \"%1\""
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\Enqueue\DropTarget]
"Clsid"="{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}"
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\open]
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\open\command]
@="\"D:\\PROGRA~1\\KMPlayer\\kmplayer.exe\" \"%1\""
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\open\DropTarget]
"Clsid"="{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}"
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\play]
@="Воспроизвести в KMP"
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\play\command]
@="\"D:\\PROGRA~1\\KMPlayer\\kmplayer.exe\" \"%1\""
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\play\DropTarget]
"Clsid"="{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}"
Все проблема кроется в строчках:
{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}
и
{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}
Я и сам толком не разобрался полностью, но и так понятно что эти GUID-ы связаны с COM объектами.
Эти GUID-ы прописаны для каждого расширения, с которым KMPlayer ассоциирован.
К счастью все их нет надобности удалять. Потому что эти GUID-ы ссылаются на эту часть реестра:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}]
@="KMPlayer"
[HKEY_CLASSES_ROOT\CLSID\{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}\LocalServer32]
@="D:\\PROGRA~1\\KMPlayer\\kmplayer.exe"
[HKEY_CLASSES_ROOT\CLSID\{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}\ProgID]
@="kmplayer.TKMPDropTarget2"
и
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}]
@="KMPlayer"
[HKEY_CLASSES_ROOT\CLSID\{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}\LocalServer32]
@="D:\\PROGRA~1\\KMPlayer\\kmplayer.exe"
[HKEY_CLASSES_ROOT\CLSID\{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}\ProgID]
@="kmplayer.TKMPDropTarget"
Из-за всего этого, если смотреть на дерево процессов в Process Explorer-е то видно, что родительский процесс KMPlayer-а не Explorer.EXE или TOTALCMD.EXE, а svchost.exe. Причем командная строка KMPlayer-а выглядит так: "C:\Program Files\KMPlayer\kmplayer.exe -Embedding".
Видимо путь к открываемому файлу передается средствами COM.
Таким образом достаточно удалить две ветки реестра:
[HKEY_CLASSES_ROOT\CLSID\{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}]
и
[HKEY_CLASSES_ROOT\CLSID\{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}]
и все.
Проще маленьким рег файликом:
Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\CLSID\{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}]
[-HKEY_CLASSES_ROOT\CLSID\{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}]
Вот как дерево выглядит после удаления ключей:
Самое интересное, что удаление этих ключей никак не сказывается на процессе открытия файлов. Зачем это так сделано я так и не нашел в инете. И самое главное почему у других на семерке все работает и без удаления ключей
Есть два способа запуска KMPlayer-а:
1-й. Кликнуть 2 раза в проводнике или в тотале на каком либо фильме. Просто обычный способ запуска файлов.
2-й. Запустить KMPlayer-р через Пуск-Программы-The KMPlayer-KMPlayer.lnk
или любой другой способ. Главное, чтобы просто запускалась программа, без открытия какого либо файла.
Если запустить 2-м способом, то выключение пройдет нормально.
Если 1-м, то вылазит окно. Правда не у всех и не всегда
Вот экспорт реестра ответственного за открытие файлов *.avi (для примера, в остальных тоже самое):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\KMPlayer.avi]
@="KMP - Видеозапись"
[HKEY_CLASSES_ROOT\KMPlayer.avi\CLSID]
@="{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}"
[HKEY_CLASSES_ROOT\KMPlayer.avi\DefaultIcon]
@="\"D:\\Program Files\\KMPlayer\\KIconLib.dll\",2"
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell]
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\Enqueue]
@="Добавить в KMP"
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\Enqueue\command]
@="\"D:\\PROGRA~1\\KMPlayer\\kmplayer.exe\" /ADD \"%1\""
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\Enqueue\DropTarget]
"Clsid"="{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}"
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\open]
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\open\command]
@="\"D:\\PROGRA~1\\KMPlayer\\kmplayer.exe\" \"%1\""
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\open\DropTarget]
"Clsid"="{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}"
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\play]
@="Воспроизвести в KMP"
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\play\command]
@="\"D:\\PROGRA~1\\KMPlayer\\kmplayer.exe\" \"%1\""
[HKEY_CLASSES_ROOT\KMPlayer.avi\shell\play\DropTarget]
"Clsid"="{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}"
Все проблема кроется в строчках:
{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}
и
{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}
Я и сам толком не разобрался полностью, но и так понятно что эти GUID-ы связаны с COM объектами.
Эти GUID-ы прописаны для каждого расширения, с которым KMPlayer ассоциирован.
К счастью все их нет надобности удалять. Потому что эти GUID-ы ссылаются на эту часть реестра:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}]
@="KMPlayer"
[HKEY_CLASSES_ROOT\CLSID\{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}\LocalServer32]
@="D:\\PROGRA~1\\KMPlayer\\kmplayer.exe"
[HKEY_CLASSES_ROOT\CLSID\{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}\ProgID]
@="kmplayer.TKMPDropTarget2"
и
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}]
@="KMPlayer"
[HKEY_CLASSES_ROOT\CLSID\{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}\LocalServer32]
@="D:\\PROGRA~1\\KMPlayer\\kmplayer.exe"
[HKEY_CLASSES_ROOT\CLSID\{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}\ProgID]
@="kmplayer.TKMPDropTarget"
Из-за всего этого, если смотреть на дерево процессов в Process Explorer-е то видно, что родительский процесс KMPlayer-а не Explorer.EXE или TOTALCMD.EXE, а svchost.exe. Причем командная строка KMPlayer-а выглядит так: "C:\Program Files\KMPlayer\kmplayer.exe -Embedding".
Видимо путь к открываемому файлу передается средствами COM.
Таким образом достаточно удалить две ветки реестра:
[HKEY_CLASSES_ROOT\CLSID\{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}]
и
[HKEY_CLASSES_ROOT\CLSID\{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}]
и все.
Проще маленьким рег файликом:
Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\CLSID\{6E7D4AE2-770B-4F0D-9365-FEAD8DED17CD}]
[-HKEY_CLASSES_ROOT\CLSID\{9EB4C4CB-74C2-4BE9-AA5D-8249F16020AD}]
Вот как дерево выглядит после удаления ключей:
Самое интересное, что удаление этих ключей никак не сказывается на процессе открытия файлов. Зачем это так сделано я так и не нашел в инете. И самое главное почему у других на семерке все работает и без удаления ключей