Programm findet nicht existierende Registry schlüssel

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von eisenerz.

    Programm findet nicht existierende Registry schlüssel

    Hallo zusammen,

    ich habe gestern etwas merkwürdiges festgestellt:
    Ich habe mit meinem Programm einen Schlüssel in der Registry angelegt (in HKLM). Der Registrierungseditor zeigte mir diesen jedoch nicht an. Mein Programm konnte aber nach einem Neustart des Programms weiterhin den Wert lesen. Wie kann ich diesen Wert löschen b.z.w. wieso taucht der im regedit nicht auf (Andere Programme finden den Schlüssel auch nicht)?

    Danke im Voraus!

    eisenerz schrieb:

    wieso taucht der im regedit nicht auf (

    Weil du auf Registrie Werte zugreifst, auf die du nicht zugreifen SOLLST! Windows7 virtualisiert dann den Zugriff und stellt für genau dein Programm eine "Pseudo-Registry" bereit. Die befindet sich irgendwo im Programmordner deiner Anwendung (afaik)

    Was lernen wir daraus: Fummel nicht an Sachen rum, die MS dir verbietet ...

    msdn.microsoft.com/en-us/libra…op/aa965884(v=vs.85).aspx
    This form of virtualization is an interim application compatibility technology; Microsoft intends to remove it from future versions of the Windows operating system as more applications are made compatible with Windows Vista and later versions of Windows. Therefore, it is important that your application does not become dependent on the behavior of registry virtualization in the system.
    Warum soll ich da nicht dran "rumfummeln"? Ich möchte doch nur in der Registry einen neuen Schlüssel anlegen (mit Adminrechten), welcher für alle Benutzer gilt. Ich darf mit meinem Programm doch wohl auch in HKLM\Software\Microsoft\Windows\CurrentVersion\Run den Autostart aufräumen oder ergänzen (konnte ich auch mit anderen Programmen mit VB 2010 und Windows 7) oder nicht?

    Trotzdem Danke!

    Kann ich diese Visualisierung auch deaktivieren (für das Programm), so dass es bei fehlenden Berechtigungen eine Ausnahme wirft und, wenn die Berechtigungen da sind, einfach normal die Befehle ausführt?
    Ich habe einen "requestedExecutionLevel"-Knoten mit den Werten level="highestAvailable" und uiAccess="false" angelegt. Jedoch wird die scheinbar Registrierungsvirtualisierung weiterhin verwendet. Jedoch wurde in der app.manifest ein auskommentierter Text
    Durch Angeben des requestedExecutionLevel-Knotens wird die Datei- und Registrierungsvirtualisierung deaktiviert.

    eingefügt.