|
Delphi 5, Delphi 7 и своиство System.Win.ComObj.TComServerObject.PerUserRegistr
|
|||
---|---|---|---|
#18+
Всем доброго дня, по доке вроде это свойство описано с XE6. В связи с этим возник вопрос: возможна ли из коробки регистрация Com сделанных в D5 и D7 для текущего пользователя? Сомнения возникли потому что при компиляции такой dll если вписать в export функцию DllInstall то она не находится в стандартных Com юнитах D5 и D7. И параллельно вопрос, если это свойство появилось только в XE6 то как при вызове стандартной DllRegisterServer и DllUnregisterServer передать далее что регистрация производится для текущего пользователя (если они в принципе способны обработать такую регистрацию)? У меня к сожалению нет исходников от D5,D7 с ComServ и ComObj дабы посмотреть самому (или как альтернатива киньте в меня этими файлами дабы смог сам посмотреть). с хе6 и далее работает такая схема: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 12:41 |
|
Delphi 5, Delphi 7 и своиство System.Win.ComObj.TComServerObject.PerUserRegistr
|
|||
---|---|---|---|
#18+
hlopotun, нашел исходники от D7: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9.
начиная с XE6 это выглядит уже так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
а ключевое отличие тут: D7 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
и XE6 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
т.е.: ComServer.GetRegRootAndPrefix(RootKey, RegPrefix); Можно конечно подменить виртуальную UpdateRegistry но по сути это то же что прописать всё в реестре самому. Что при 2х старых (находяшихся в состоянии выпиливания) dll не имеет смысла. Походу регистрации на текущего пользователя из коробки в D7 и D5 нет и надо прописывать в реестре всё руками. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 14:04 |
|
Delphi 5, Delphi 7 и своиство System.Win.ComObj.TComServerObject.PerUserRegistr
|
|||
---|---|---|---|
#18+
может у кого то есть готовая функция прописывания com dll в ветке HKEY_CURENT_USER созданного в D5 или D7 (функции встроенные в dll DllRegisterServer, DllUnregisterServer не поддерживают регистрацию в HKEY_CURENT_USER а DllInstall отсутствует как таковая). По идее можно думаю и в HKEY_LOCAL_MACHINE, я допилю. Главное что бы писала сама в реестр а не использовала встроенные в com dll функции. Сама программа регистрации на 10.4. Попробовал допилить родную из ComObj для регистрации Com dll из стороннего приложения но её надо сочетать с RegisterTypeLibrary а она опять лезер во встроенные RegisterTypeLib и UnRegisterTypeLib которые тоже не поддерживают в D5 и D7 регистрацию в ветке HKEY_CURENT_USER. Ну и опять же, поскольку всё вызывается во внешней программе сбор параметров удручает. Чувствую не успеваю :( Или все выходные погубить, или может кто то выручит. Вот промежуточный результат если кому интересно: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55.
п.с нет чёткого понимания что минимально надо прописывать. Попробовал сравнить реестр до и после регистрации через RegSvr32 в HKEY_LOCAL_MACHINE, получилось 256 изменённых или добавленных параметров, что то не верится что все они необходимы. Думаю основные параметры эти: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
но опасаюсь что это не все. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 18:29 |
|
Delphi 5, Delphi 7 и своиство System.Win.ComObj.TComServerObject.PerUserRegistr
|
|||
---|---|---|---|
#18+
да, действительно не всё. Регистрируются ещё всё, что подцеплено через встроенную tlb. Наверное самое простое решение это взять разницу до и после регистрации dll, заменить в ней HKLM на HKCU и напрямую записать в реестр. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 22:15 |
|
|
start [/forum/topic.php?fid=58&msg=40118909&tid=2036794]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
339ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 438ms |
0 / 0 |