Сейчас на форуме: asfa, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Возможно ли сменить GUID в shell extension без перекомпиляции?
Посл.ответ Сообщение

Ранг: 19.4 (новичок), 11thx
Активность: 0.020
Статус: Участник

Создано: 25 октября 2013 19:56
· Личное сообщение · #1

Решил приспособить расширение контекстного меню NppShell_05.dll от Notepad++ к Sublime Text 3. В hex редакторе переписал, то что нужно (notepad++ на sublime и т. п.) - расширение работает, но только с оригинальным GUID. Если меняю на другой (полученный в GuidGen.exe) - то не работает.
Возможно ли чего-то сделать, может ещё чего поменять надо в dll, или это занятие хернёй и лучше забить?

Вот плоды эксперимента, на всякий случай:

1a16_25.10.2013_EXELAB.rU.tgz - dlls.7z




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 25 октября 2013 20:54
· Личное сообщение · #2

если уверены что только GUID,
откройте в IDA, найдите GUID, перебейте в любом хекс редакторе этот GUID
profit



Ранг: 1.0 (гость), 2thx
Активность: 0=0
Статус: Участник

Создано: 25 октября 2013 21:55
· Личное сообщение · #3

elch
Если другой GUID, то его надо регистрировать в реестре, так же как оригинал.



Ранг: 19.4 (новичок), 11thx
Активность: 0.020
Статус: Участник

Создано: 25 октября 2013 22:28 · Поправил: elch
· Личное сообщение · #4

reversecode пишет:
перебейте в любом хекс редакторе этот GUID
profit

Делал уже так, выше написал - не работает. В CLSID ключ создаётся, но в контекстном меню ничего нет. Возвращаю guid от Npp - всё работает.
Тут то ли винде не нравится новый гуид, то ли ещё где-то в библиотеке его надо менять (нашёл только одно место, где и менял).


Tilks пишет:
Если другой GUID, то его надо регистрировать в реестре, так же как оригинал.

Регистрироваться - всё регистрируется, а толку нет: http://s1.bild.me/bilder/260513/5355240_0.png




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 25 октября 2013 22:46
· Личное сообщение · #5

что то я не понял, Sublime Text 3 вообще поддерживает расширение контекстного меню?



Ранг: 1.0 (гость), 2thx
Активность: 0=0
Статус: Участник

Создано: 25 октября 2013 23:57
· Личное сообщение · #6

А у меня, не один из 3х в архиве, не хочет регистрироватся без Npp. (regsvr32 SublimeShell.dll) Ответ одинаковий для всех. http://img96.imageshack.us/img96/7051/wwyd.png



Ранг: 19.4 (новичок), 11thx
Активность: 0.020
Статус: Участник

Создано: 26 октября 2013 00:12 · Поправил: elch
· Личное сообщение · #7

Tilks пишет:
А у меня, не один из 3х в архиве, не хочет регистрироватся без Npp.

У меня так: http://s017.radikal.ru/i433/1310/c1/52cf4caaebca.gif

Может и тут где-то собака порылась, хз. Я и так уже, помимо того что regsvr32 добавляет, все параметры в реестре продублировал для саблайма, что было как у npp, кроме App Paths. Попробую ещё и это добавить, только сомневаюсь, что поможет. Как видно на гифке, с npp'шным guid всё прекрасно работает, с левым - нет.



Ранг: 1.0 (гость), 2thx
Активность: 0=0
Статус: Участник

Создано: 26 октября 2013 01:18 · Поправил: Tilks
· Личное сообщение · #8

elch npp же open source, может стоит посмотреть по коду, или даже собрать эту dll, подправив под свои нужды.
А чем плох простой метод интеграции в реестр. Например:
Code:
  1.  [HKEY_CLASSES_ROOT\*\shell\Open with Notepad\command]
  2. @="c:\windows\notepad.exe %1"




Ранг: 19.4 (новичок), 11thx
Активность: 0.020
Статус: Участник

Создано: 26 октября 2013 01:48 · Поправил: elch
· Личное сообщение · #9

Tilks
В том, что у меня есть, из исходников собрать не получается, а студию ставить не охота, для этого.
Второй метод известен, но в XP пункт меню будет без иконки, что не айс.

p.s. рег-файлы для этого стараюсь не использовать, батник по типу такого универсальней:
Code:
  1. @echo off
  2. cls
  3. %~d0
  4. cd "%~dp0"
  5. reg query HKCR\^*\shell | findstr /"AkelPad" >NUL
  6. if not errorlevel 1 (
  7. reg delete HKCR\^*\shell\AkelPad />NUL
  8. cls
  9. echo.
  10. echo Интеграция с оболочкой отключена. Нажмите любую клавишу для выхода . . .
  11. pause >NUL
  12. ) else (
  13. reg add HKCR\^*\shell\AkelPad /Icon /"%cd%\AkelPad.exe,0" />NUL
  14. reg add HKCR\^*\shell\AkelPad\command /ve /""%cd%\AkelPad.exe" "%%1"" />NUL
  15. rem reg add HKCR\Unknown\shell /ve /d open />NUL
  16. rem reg add HKCR\Unknown\shell\open\command /ve /""%cd%\AkelPad.exe" "%%1"" />NUL
  17. cls
  18. echo.
  19. echo Интеграция с оболочкой включена. Нажмите любую клавишу для выхода . . .
  20. pause >NUL
  21. )


p.p.s. Закрыть наверно топик надо, а то в этих извращениях всё-равно никто не поможет. Придётся студию ставить.

p.p.p.s. Со студией - за 10 минут исходник переделал и собрал - всё работает. Действительно, извращением было в winhex'e чёто править.

| Сообщение посчитали полезным: DenCoder
 eXeL@B —› Вопросы новичков —› Возможно ли сменить GUID в shell extension без перекомпиляции?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати