COM Interop bez regazmu

Jestem ograniczonym użytkownikiem i muszę napisać makro programu Outlook, które wyświetla bibliotekę C# w Outlooku 2003 i 2007.

W ogóle nie mam uprawnień administratora, nawet w czasie instalacji, więc nie mogę uruchomić Regasma i nie mogę (zakładam) napisać zarządzanego dodatku.

Czy jest jakiś sposób na wywołanie kodu. Net z VBA w tym scenariuszu, czy są jakieś inne rozwiązania?

Jest to tylko do użytku osobistego, więc brzydki hack jest całkowicie akceptowalny (tak długo, jak to działa)

Author: SLaks, 2009-08-30

5 answers

Rozwiązałem to uruchamiając regasm z opcją /regfile i zamieniając HKLM na HKCU w wynikowym pliku .reg.

 17
Author: SLaks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-23 12:07:05

Jest RegistrationServices.RegisterAssembly . NET API (które moim zdaniem jest używane przez RegAsm.exe).

Jest też RegOverridePredefKey API Win32, niepozorne, ale bardzo przydatne, które pozwala na remap HKEY_CLASSES_ROOT (używane przez RegisterAssembly) do HKEY_CURRENT_USER\Software\Classes.

Sprytny program może używać zarówno RegistrationServices.RegisterAssembly jak i RegOverridePredefKey do rejestracji zestawu dla klientów COM Pod HKEY_CURRENT_USER.

Sam tego nie próbowałem, ale uważam, że to całkiem wykonalne.

Aktualizacja, najwyraźniej to podejście Działa .

 6
Author: noseratio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:24:27

Rejestracja obiektu COM (ex. ActiveX control) i uczynienie go widocznym dla wszystkich użytkowników w systemie wymaga uprawnień administracyjnych.

Jeżeli jednak widoczność dla wszystkich użytkowników nie jest potrzebna (lub niemożliwa z powodu ograniczonego ograniczenia użytkownika) to obiekt COM może być zarejestrowany tylko dla konkretnego użytkownika.

Zazwyczaj odbywa się to poprzez rejestrację obiektu w HKCU zamiast HKLM. Dotyczy to" zwykłych " obiektów COM i tych wystawionych przez. NET COM Interop.

Inne bardziej drobnoziarniste podejścia również wychodzi, wspomniany już RegFree COM, który adresuje konkretny plik wykonywalny.

Tak więc, biorąc pod uwagę wszystkie powyższe rozwiązanie, aby przechwycić wszystkie informacje do pliku reg i zastąpić HKLM HKCU powinno działać(nie ładnie, ale tak samo jak narzędzia).

 5
Author: okigan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-22 18:27:54

Znalazłem możliwe Rozwiązanie , ale nie mam czasu, aby go jeszcze wypróbować.

 1
Author: SLaks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-13 02:46:08

Niestety ze względu na sposób działania COM nie byłoby możliwe zainstalowanie obiektu COM (interop lub w inny sposób) bez uprawnień administratora.

Kiedy rejestrujesz obiekt com, zapisuje on kilka wpisów do HKEY_CLASSES_ROOT, który jest kluczem poziomu Maszyny i dlatego wymaga uprawnień administratora.

Teraz, ponieważ powiedziałeś, że hakerskie rozwiązanie jest dopuszczalne tutaj są pewne możliwe kroki, które możesz podjąć, aby je uruchomić; jednak jeśli nie masz praw administratora, zakładam, że jest to nie twoja maszyna i najprawdopodobniej maszyna robocza. Te kroki mogą cię zwolnić. Standardowe zrzeczenie się odpowiedzialności i takie tam: to nie moja wina, że jesteś kretynem i dajesz się pozwać/zwolnić/zastrzelić/napadnąć / itp.

Najpierw musisz dowiedzieć się, jakie klucze rejestru należy dodać. Upewnij się, że robisz to na "czystym" komputerze, na którym host nie widział wcześniej twojego komponentu (lub takiego, który nie ma kluczy reg). Zainstaluj program do monitorowania maszyny, aby przechwycić klucze. tutaj jest link do artykułu [niezwiązanego] MS, w którym polecają niektóre aplikacje, które właśnie to robią.

Teraz z uruchomionym monitorem install dodajesz. Powinieneś teraz być w stanie uzyskać dziennik, jakie klucze muszą być utworzone. Za pomocą dziennika Utwórz pliki eksportu rejestru.

Teraz tutaj robi się to trudne. Zasadniczo to, co zrobisz, to boot the machine from a BartPE image and mount the registry and run your scripts; however the key paths will be incorporated so the scripts will nie działa "po wyjęciu z pudełka".

MS ma artykuł TechNet (ale link ma w nim parens, więc nie gra tu ładnie) więc Google to powinien być pierwszy wynik.

Po przeczytaniu tego artykułu zobaczysz, że rejestr maszyn zostanie zamontowany jako podklucz HKEY_LOCAL_MACHINE. To, co musisz zrobić, to zmienić eksport rejestru, aby dopasować nową ścieżkę. Po zakończeniu tego kroku powinieneś być w stanie uruchomić z obrazu BartPE, zamontować rejestr, a następnie zaimportuj swoje skrypty, odmontuj UL, a następnie uruchom ponownie. Zakładając, że skopiowałeś pliki do właściwej ścieżki ,to "powinno" działać.

Powodzenia.
 0
Author: Andrew Burns,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-09 15:47:56