Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

  • Autor

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...

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.

  • Autor

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 ;)

  • Autor

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 ;)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.