Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Skrócony regulamin

Nie idzie zarejestrować OCX na nowszych systemach

Idź do strony 1, 2  Następny

 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Biblioteki
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mikmas



Dołączył: 26 Maj 2005
Posty: 5617
Skąd: From Alex Stadt

PostWysłany: Pią Sty 27, 2012 10:36 am      Temat postu: Nie idzie zarejestrować OCX na nowszych systemach Odpowiedz z cytatem Pisownia

Mam poważny problem z zarejestrowaniem ocxa, bo bez praw admina nie przechodzi regsvr32. Da się to jakoś ominąć? Jest to dla mnie MEGA ważne. Wie ktoś jak to ominąć? Czemu exeki mogę normalnie odpalać, a zarejestrować ocx-a już nie? Co w nim takiego szkodliwego jest i jak ewentualnie to wyeliminować?


PS. Nie ma możliwości użycia innej technologii niż ocx, gdyż program, który to "wciąga" tylko te obsługuje

_________________
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS d- s---:--->+:+ a-->--- C++(+++) U-- P+ L-- E--
W++ N+ o-- K- w++(+++) O--- M-(--) V-- PS PE++ Y
PGP- t 5 X++ R tv- b+ DI- D+++(++++) G++ e h* r+ y?
------END GEEK CODE BLOCK------
Alternatywny komunikator GG
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora Numer GG Tlen
~MaTriX
Gość





PostWysłany: Pią Sty 27, 2012 11:22 am      Temat postu: Odpowiedz z cytatem Pisownia

Cytat:
When you use the regsvr32.exe program to register a VB6/VBA add-in dll, two things happen:

- The DLL is registered as ActiveX (COM) component on the machine, using the HKEY_LOCAL_MACHINE registry entry. That means that to register the add-in you need to be a member of the "Administrators" or "Advanced Users" groups.
- The DLL is registered as add-in for some host, such as VB6 or the VBA editor, using the HKEY_CURRENT_USER registry entry. That means that the add-in is registered only for the logged user, not for all users.

If you receive the error code 0x80004005 when using regsvr32.exe, it can be caused by these known reasons:

- You are not an administrator of your machine or a power user. For example, using Windows XP, a user member of the "Users" group will not be able to register the add-in, while a user member of the "Advanced Users" will succeed.
- Your installation of VB5 / VB6 / VBA / Office is corrupted (this is a very rare case). According to reports of users, reinstalling Visual Basic (or simply the last service pack that you were using) or Office should fix the problem.

If you want to register the add-in for a non-admin user, you have 2 options:

Add the non-admin user to the "Administrators" group, log-on with that user, register the dll with regsvr32.exe and remove that user from the "Administrators" group.
Register the add-in using an admin user (that will register the dll as COM component in the machine) and using regedit.exe export (File, Export... menu) the following registry key to a .reg file:

- For Visual Basic 6.0: HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\6.0\AddIns\MZTools3.Connect
- For VBA: HKEY_CURRENT_USER\Software\Microsoft\VBA\VBE\6.0\AddIns\MZTools3VBA.Connect

Then, log-on using the non-admin user and import or merge the .reg file into the Windows registry. That will register the dll as add-in for the non-admin user.


Takie tam znalezione w internecie
Powrót do góry
marcin_an
Site Admin


Dołączył: 26 Maj 2005
Posty: 17278
Skąd: z drugiej strony Kabla

PostWysłany: Pią Sty 27, 2012 12:29 pm      Temat postu: Odpowiedz z cytatem Pisownia

mimas:
Instalacja OCX jest zmianą konfiguracji systemowej i jako taka powinna być przeprowadzana tylko przez administratorów. Zatem system działa prawidłowo. Jeżeli chcesz zmodyfikować system i nie masz stosownych uprawnień, to poproś o zmianę admina.

_________________
Matematyka to taki twór, który pozwala opisać sokowirówkę jako urządzenie pobierające ujemne odpadki i produkujące z nich sok.
"Lameria atakuje" | RTFM | UMLet - edytor UML inaczej | Wykłady ks.Pawlukiewicza
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
hejmus



Dołączył: 26 Maj 2005
Posty: 2135

PostWysłany: Pią Sty 27, 2012 12:59 pm      Temat postu: Odpowiedz z cytatem Pisownia

A RegFree COM próbowałeś? http://msdn.microsoft.com/en-us/library/ms973913.aspx
_________________
kompilacja Gentoo na Pentium MMX 233MHz - niezapomniane przeżycia ;)
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
mikmas



Dołączył: 26 Maj 2005
Posty: 5617
Skąd: From Alex Stadt

PostWysłany: Pią Sty 27, 2012 1:47 pm      Temat postu: Odpowiedz z cytatem Pisownia

Dzięki za odpowiedzi :). To, co hejmus podesłałeś - nie wiem, czy ten program to łyknie (bardzo pobieżnie przeczytałem, o so chozi). Ogólnie język, w którym wykorzystuję tego ocxa jest dość ubogi i z "bajerów" jedyne co ma, to obsługę ActiveX
_________________
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS d- s---:--->+:+ a-->--- C++(+++) U-- P+ L-- E--
W++ N+ o-- K- w++(+++) O--- M-(--) V-- PS PE++ Y
PGP- t 5 X++ R tv- b+ DI- D+++(++++) G++ e h* r+ y?
------END GEEK CODE BLOCK------
Alternatywny komunikator GG
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora Numer GG Tlen
hejmus



Dołączył: 26 Maj 2005
Posty: 2135

PostWysłany: Pią Sty 27, 2012 2:09 pm      Temat postu: Odpowiedz z cytatem Pisownia

Przecież on nie musi o tym wiedzieć, wystarczy dopisać manifest i powinno działać.
_________________
kompilacja Gentoo na Pentium MMX 233MHz - niezapomniane przeżycia ;)
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
mikmas



Dołączył: 26 Maj 2005
Posty: 5617
Skąd: From Alex Stadt

PostWysłany: Pon Sty 30, 2012 1:52 pm      Temat postu: Odpowiedz z cytatem Pisownia

No właśnie manifest odpada, bo nie mam dostępu do programu docelowego. Jest tam swojego rodzaju język skryptowy, który ma zaimplementowane używanie activex (coś jak javascript). Patrzyłem, co właściwie się dzieje podczas rejestracji i jest ona mega prosta. Wystarczy dodać do HKCR nazwę klasy, w moim przypadku SDD.Ambient, w niej podklucz Clsid i odpowiedni klucz. Następnie wystarczy zaimportować coś takiego:
Kod:
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{CF8A44D0-6838-4CF2-BCF5-72809BF6FD13}]
@="SDD.Ambient"

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{CF8A44D0-6838-4CF2-BCF5-72809BF6FD13}\Implemented Categories]

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{CF8A44D0-6838-4CF2-BCF5-72809BF6FD13}\Implemented Categories\{40FC6ED5-2438-11CF-A3DB-080036F12502}]

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{CF8A44D0-6838-4CF2-BCF5-72809BF6FD13}\InprocServer32]
@="C:\\SDD\\SDD.ocx"
"ThreadingModel"="Apartment"

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{CF8A44D0-6838-4CF2-BCF5-72809BF6FD13}\ProgID]
@="SDD.Ambient"

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{CF8A44D0-6838-4CF2-BCF5-72809BF6FD13}\Programmable]

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{CF8A44D0-6838-4CF2-BCF5-72809BF6FD13}\TypeLib]
@="{CD9AB53D-6B78-47C4-9938-F4DA3103BF6C}"

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{CF8A44D0-6838-4CF2-BCF5-72809BF6FD13}\VERSION]
@="1.0"

Jednak zwykły user nie ma praw do tworzenia węzłów w HKCR :(. Da się coś na to poradzić? Sprawa jest bardzo ważna i bardzo zależy mi na rozwiązaniu tego problemu

_________________
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS d- s---:--->+:+ a-->--- C++(+++) U-- P+ L-- E--
W++ N+ o-- K- w++(+++) O--- M-(--) V-- PS PE++ Y
PGP- t 5 X++ R tv- b+ DI- D+++(++++) G++ e h* r+ y?
------END GEEK CODE BLOCK------
Alternatywny komunikator GG
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora Numer GG Tlen
Bartosz Wójcik



Dołączył: 30 Sty 2012
Posty: 1

PostWysłany: Pon Sty 30, 2012 3:16 pm      Temat postu: Odpowiedz z cytatem Pisownia

Ja polecam zrobienie tego z prostego setupa (np. InnoSetup posiada taką opcję) odpalanego z prawami admina, innym rozwiązaniem jest zbindowanie OCX-a do aplikacji i poprzez system hooków emulowanie rejestracji tego komponentu w systemie (MoleBox etc.)
_________________
www.pelock.com | software copy protection
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
mikmas



Dołączył: 26 Maj 2005
Posty: 5617
Skąd: From Alex Stadt

PostWysłany: Pon Sty 30, 2012 4:23 pm      Temat postu: Odpowiedz z cytatem Pisownia

Nie ma instalatora do tego, bo to język skryptowy i on musi też załatwić kwestię instalacji

Dodane przez moderatora (łączenie postów)

Problem rozwiązany, ocx się już ładnie rejestruje bez praw admina. Wymaga jednak wywołania wyeksportowanej funkcji DllInstall, co oczywiście nie działa - byłbym wdzięczny za dalsze wskazówki. Thx wielkie dla hejmusa, który z cierpliwością przeprowadził mnie na GG przez morze czerwonych hexów ;)

Używaj przycisku "zmień" do edycji postów!

_________________
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS d- s---:--->+:+ a-->--- C++(+++) U-- P+ L-- E--
W++ N+ o-- K- w++(+++) O--- M-(--) V-- PS PE++ Y
PGP- t 5 X++ R tv- b+ DI- D+++(++++) G++ e h* r+ y?
------END GEEK CODE BLOCK------
Alternatywny komunikator GG
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora Numer GG Tlen
marcin_an
Site Admin


Dołączył: 26 Maj 2005
Posty: 17278
Skąd: z drugiej strony Kabla

PostWysłany: Wto Sty 31, 2012 3:27 pm      Temat postu: Odpowiedz z cytatem Pisownia

DllInstall to jest funkcja, którą wywołuje ci regsrv32 (i to jest w zasadzie jego jedyne zadanie). Czyli napisałeś drugiego regsrv32, który nadal wymaga roota, bo - jak pisałem - próbujesz zmieniać konfigurację systemu operacyjnego, a to może wykonać tylko root! Ile razy trzeba to powtórzyć, żebyś zrozumiał?

Może istnieje jakaś metoda, żeby zarejestrować dla pojedynczego użytkownika lub ogłupić loadera, żeby ładował bezpośrednio z pliku. Może można napisać hooki dla wszystkich funkcji obsługi COM i udawać ładowanie własnego OCXa, który nie jest zarejestrowany. I w tę stronę bym szukał, jeśli koniecznie chcesz się męczyć i robić rozwiązanie, które i tak pewnie padnie przy aktualizacji systemu, a nie jak zdobyć roota bez roota.

_________________
Matematyka to taki twór, który pozwala opisać sokowirówkę jako urządzenie pobierające ujemne odpadki i produkujące z nich sok.
"Lameria atakuje" | RTFM | UMLet - edytor UML inaczej | Wykłady ks.Pawlukiewicza
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Biblioteki Wszystkie czasy w strefie CET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.20268 sekund, zapytan = 7
contact

| Darmowe programy i porady Jelcyna | VB4all | Tansze zakupy w Helionie |