Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

In einem OCX das ich geschrieben haben verwende ich in der DLLRegisterServer Funktion RegOverridePredefKey um einen Schlüssel in der Registry umzukopieren:


hLib = LoadLibrary("Advapi32.dll");


if (hLib)
{
pRegOverridePredefKey = (TRegOverridePredefKey) GetProcAddress(hLib,"RegOverridePredefKey");
if (pRegOverridePredefKey)
{
RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\Classes"), 0, KEY_ALL_ACCESS, &hKeyCurrentUser);
pRegOverridePredefKey(HKEY_CLASSES_ROOT, hKeyCurrentUser);
RegCloseKey(hKeyCurrentUser);
}
FreeLibrary(hLib);
}
[/PHP]

In einem anderem Programm wird diese Registrierungsfunktion jetzt aufgerufen und an einer späteren Stelle ShellExecute um ein Programm zu starten.

Dieser Aufruf von ShellExecute funktioniert aber solange nicht wie RegOverridePredefKey vorher aufgerufen wird. Entferne ich den Aufruf dann klappt auch ShellExecute :confused:

Dabei ist es egal was ich per ShellExecute starten will, selbst c:\windows\notepad.exe funktioniert hinterher nicht mehr.

Hat jemand eine Idee woran das liegen könnte?

Geschrieben

31 ist SE_ERR_NOASSOC. ShellExecute weiß also nicht, wie es .exe-Dateien ausführen soll. Das ist die Folge davon, dass du HKEY_CLASSES_ROOT umgehängt hast, denn da steht das drin. In HKCU\Software\Classes steht es nicht.

Geschrieben

Versteh ich jetzt nicht so ganz. Soweit ich RegOverridePredefKey verstanden habe kopiert der lediglich einen Schlüssel sammt Unterschlüsseln woanders hin.

Oder sagt die Funktion Windows auch das es nicht mehr in HKEY_CLASSES_ROOT sondern in HKCU\Software\Classes gucken soll?

Dann fände ich es aber komisch das wenn ich mein Programm beende und wieder starte ohne den Aufruf von RegOverridePredefKey, ShellExecute wieder klappt...

Geschrieben
Versteh ich jetzt nicht so ganz. Soweit ich RegOverridePredefKey verstanden habe kopiert der lediglich einen Schlüssel sammt Unterschlüsseln woanders hin.

Das ist falsch, es wird nichts kopiert, sondern nur eine Abbildungen angelegt, mit der Änderungen an einem Teil der Registry abgefangen werden können.

Lies Dir den Anmerkungs-Teil der Doku zu der Funktion noch einmal durch.

Geschrieben

Den Tipp hatte ich vor einiger Zeit per google irgendwo gefunden, damit lässt sich das ActiveX Steuerelement auch registrieren wenn man keine Admin Rechte hat, bzw wird der entsprechende Eintrag in der Registry dann unter HKCU erstellt wo man drauf zugreifen kann.

Wie das allerding genau funktioniert weiß ich nicht ;)

Geschrieben

So hab mir das alles nochmal genau angeguckt und denke jetzt habe ich verstanden wie das funktioniert.

RegOverridePredefKey sagt dem aktuellem Prozess das er nicht mehr unter HKEY_CLASSES_ROOT gucken soll sondern unter HKEY_CURRENT_USER\Software\Classes. Weil der aktuelle Benutzer da ja immer Schreibrechte hat kann sich das OCX da auch registrieren wenn man kein Admin ist.

Da aber meine Anwendung jetzt immer da rein guckt anstatt in HCR fehlen ja die ganzen Informationen aus HCR. Also muss ich, sobald ich das OCX nicht mehr brauche das wieder zurück setzen (oder mal ausprobieren ob ich es direkt nach der Registration zurücksetzten kann und er es trotzdem auch unter HCU findet).

Ein Glück das das nur für den aktuellen Prozess und nicht Systemweit ist ;)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...