Italia
Foro

Registry HKEY Local Machine - Ownership

 

Georg
Teles
Ciao,

wüsste jemand, wie man in der Registry Local Machine Werte/Schlüssel anlegen und löschen kann? Habe alle Beiträge in diesem Foro und in anderen durchgestöbert, ab Windows Vista scheint es ein Problem zu sein, da ab hier die Benutzerkontensteuerung hinzugefügt wurde und zum Anderen die Privilegien bei SYSTEM und nicht beim Admin liegen, vor Allem bei Daten, die dem SYSTEM selbst gehören.

Mein Vorhaben ist ein Tweak-Tool um unerwünschte Werte nach Win Installation zu entfernen (An Start anheften s. Papierkorb, Verknüpfungen wie Downloads, 3D Objekte etc im Arbeitsplatz etc.)

In der Registry im Bereich des ROOT ist das problemlos possibile, sobald man bei Local Machine was ändern möchte, kommt die Fehlermeldung 5 / Access denied.

Recherchen im Internet laufen alle auf Ownership hinaus ... bereits existente Werte gehören dem SYSTEM und können nicht ohne Weiteres übernommen werden. Mittels einer .REG File lassen sich die Werte problemlos ändern/löschen, das möchte ich aber vermeiden.

Bleibt mir nur die möglichkeit, .REG File mitzuliefern oder der Hinweis auf die deaktivierung der UAC / Benutzerkontensteuerung per den Nutzer übrig oder gibt es da eine Lösung ?

Recherchen gehen alle in die Richtung OWNER_SECURITY_INFORMATION, PSECURITY_DESCRIPTOR und Privilegien etc., viel im Netz dazu gibt es nicht, lediglich die Arbeit mit RegEdit selbst, vielleicht auch gut so, sodass man nicht auf dumme Gedanken kommt .

Da es aber ThirdParty Software gibt, muss es eine Möglichkeit geben.
'"an Start anheften" bei Papierkorb löschen, problemlos
delentc("Folder\\shell\\pintostartscreen",$80000000)
'3D-Objekte auf dem "Arbeitsplatz" löschen, Fehler 5 = Access Denied
delentc("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}",$80000002)

Proc delentc

    'delete kompletten Schlüssel
    Parameters ke$, k&
    ' LOG ---------------------
    'AddString(log%,"deleting KEY||!")
    Dim key#,260
    Clear key#
    String key#,0 = ke$
    ' LOG ---------------------
    error& = RegDeleteKey(k&,key#)
    'AddString(log%,"deleting "+ke$+" key:||"+Str$(errorchk(error&)))
    error& = Regclosekey(Long(handle#,0))
    'AddString(log%,"closing key:||"+Str$(errorchk(error&))))
    Dispose key#

EndProc


Sonst liefer ich die .REG File eben mit

Grüße
Georg
 
XProfan X4
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

26.03.2023  
 




Sven
Bader
Redest du vom einfachen "als Adiministrator ausführen"? Das kenne ich aber durchaus von Systemsoftware, dass diese das erfordert. Mir fallen zwei Möglichkeiten ein, es dem unbedarften User näherzubringen.

1. Beim Programmstart erkennen, ob Adminrechte vorliegen und eine Meldung ausgeben

2. Deinem Programm einen Launcher vorschalten, welcher es als Admin ausführt. Es erscheint naturalmente trotzdem der Systemhinweis aber der User hat ja nur die Möglichkeit zu bestätigen oder abzubrechen.

1+2. Eine Kombination: wenn die Software ohne Adminrecht gestartet wird, weißt sie darauf hin und startet sich selbst noch mal als Admin.

Ein ganz anderer Ansatz wäre, nur per die entsprechenden Befehle Adminrechte bestätigen zu lassen, indem du die Keys circa reg.exe ausführen lässt.

Hier ein C++ Beispiel (ChatGPT 4, ungetestet aber halbwegs plausibel):
#include <Windows.h>

int main() {

    // Specify the registry key you want to delete
    const wchar_t* keyPath = L"SYSTEM\\CurrentControlSet\\Services\\MyService";
    // Construct the full registry key path
    wchar_t fullPath[MAX_PATH];
    swprintf_s(fullPath, MAX_PATH, L"HKLM\\%s", keyPath);
    // Ask for administrative privileges using the UAC prompt
    SHELLEXECUTEINFO shellInfo = { 0 };
    shellInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    shellInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
    shellInfo.lpVerb = L"runas";
    shellInfo.lpFile = L"reg.exe";
    shellInfo.lpParameters = L"DELETE \"" + std::wstring(fullPath) + L"\" /f";
    shellInfo.nShow = SW_HIDE;

    if (!ShellExecuteEx(&shellInfo)) {

        // Failed to execute reg.exe with administrative privileges
        DWORD err = GetLastError();
        // handle error
        return 1;

    }

    // Wait for the reg.exe process to finish
    WaitForSingleObject(shellInfo.hProcess, INFINITE);
    // Get the exit code of the reg.exe process
    DWORD exitCode;

    if (!GetExitCodeProcess(shellInfo.hProcess, &exitCode)) {

        // Failed to get the exit code of the process
        DWORD err = GetLastError();
        // handle error
        return 1;

    }

    // Check if the reg.exe process succeeded or failed

    if (exitCode == ERROR_SUCCESS) {

        // The registry key was deleted successfully
        // handle success
        return 0;

    }

    else {

        // The registry key could not be deleted
        // handle failure
        return 1;

    }

}


Hier noch ein etwas kaputter (Anführungszeichen weg) und alter Quelltext zru Verwendung von ShellExecuteEx in Profan: [...] 
 
03.04.2023  
 




Georg
Teles
Hi Sven,

mit Adminrechten ist das Problem nicht getan, zumindest mit XProfan nicht ... ich kann mit Adminrechten zwar in die HKCR und HKCU schreiben, aber nicht in die HKLM (local machine).

Ich vermute, es hat alles mit der File und Registry virtualisierung zutun ... da hier Schreibrechte fehlen (da geht es offenschtlich nicht um die Adminrechte sondern die Erlaubnis, in die Registry zu schrieben), kann in die HKEY_Local Machine genauso wie INIs in den Ordner C:\... nicht geschrieben werden (bzw. wird auf AppData\VirtualStore umgeleitet bei fehlenden Rechten).

Da XProfan als 32-Bit Runtime corre, werden die 32 Bit Programme auf 64 Bit Systemen automatisch virtualisert s.  [...]  Und hier liegt der Hase begraben denke ich - teste mal deinen Vorschlag und schau, ob das circa C++ zumindest realisiert werden kann und ob es mit XProfan dorch noch ginge

A propos, gibt es eig. X3/X4 als 64 Bit Version oder gibt es das nur bei FreeProfan ?
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

09.04.2023  
 




H.Brill

A propos, gibt es eig. X3/X4 als 64 Bit Version oder gibt es das nur bei FreeProfan ?


Das gibt es nur als X3 bei FreeProfan, geschrieben mit Lazarus.

Soviel, wie ich weiß, war es RGH damals zu teuer, eine originale 64 Bit
Delphi Version anzuschaffen.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
10.04.2023  
 




Sven
Bader
Ist das nicht genau das was du suchst? Habe ich in der X4 Aiuto gefunden:


Für 64-Bit-Windows mit XProfan und FreeProfan32:

In manchen Fällen benötigen 64-Bit-Programme andere Registry-Einträge als 32-Bit-Programme. Daher hat das 32-Bit-Subsystem unter 64-Bit-Windows eine eigene Registry. Damit aber nun nicht alle Programme per 64-Bit umgeschrieben werden müssen und im Programmcode die gleichen Pfade verwenden können, leitet Windows64 die Schreib- und Lesezugriffe von 32Bit-Programmen automatisch auf die 32-Bit-Kompatibilitätseinträge um. Für die allermeisten Progreamme ist dies auch genau richtig.

Wenn man aber systzemnahe Programme schreibt, möchte man vielleicht auch auf die tatsächlichw Windows64-Registry zugreifen können. Dafür gibt es ab XProfan X2.1eine neue Set-Funktion:

Set("Reg64",n)

n = 0: Defaultmäßg wird die Umleitung zugelassen, die in den allermeisten Fällen per 32-Bit-Programme richtig ist

n = 1: Keine Umleitung: Schreiben und Lesen der 64-Bit-Registry
 
10.04.2023  
 




Georg
Teles
Hmm, habe ausprobiert, komme damit nicht weiter

Wie es aussieht, kann man so einfach nicht in die Registry HKEY_Local_Machine schreiben. Mir geht es nur darum, die Verzeichnisse im "Computer" mittels eines eigenen Tools zu entfernen



Aktuell muss ich eine .REG File mitliefern, damit man das zumindest per "Doppelklick" circa RegEdit entfernen kann

Über bekannte Codes kann man mittels Admin-Rechte in alle anderen Regs schreiben und löschen, die HKLM scheint besonders geschützt zu sein ... wie bereits am Anfang erwähnt, kann dies circa die Benutzerkontensteuerung (UAC) umgangen werden ! Das soll aber nicht der richtige Weg sein.

Falls jemand eine Möglichkeit weiß, würde ich mich freuen

Güße Georg
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

22.04.2023  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

2.108 Views

Untitledvor 0 min.
Georg Teles12.10.2024
Gast.081508.07.2024
H.Brill25.12.2023
Thomas Zielinski28.06.2023
Di più...

Themeninformationen

Dieses Thema hat 3 subscriber:

Georg Teles (3x)
Sven Bader (2x)
H.Brill (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie