[Erledigt] RegCreateKeyEx fehler unter Vista
-
Ich habe Dir doch den Link mit allen Verweisen schon gepostet oder?
http://blog.m-ri.de/index.php/2006/12/12/vista-und-die-notwendigkeit-eines-manifestes-fur-die-uac/
Ich habe Dich auch noch mal gebeten meine Informationen zu lesen, oder?Dein Codeist Blödsinn weil er daseigentlcihe Problem unter Vista eben nicht angeht.
In Kurzform:
Dein Programm verhält sich ganz normal wie gewohnt auf einem XP Rechner, wenn Du ihm ein Vista Manifest gibst. So schwierig?
-
ne mein code funktioniert
wenn ich das programm, als admin starte, dann wird in HKEY_LOCAL_MACHINE geschrieben, wenn als normaler user, dann in HKEY_CURRENT_USER, mehr wollte ich ja nicht. Und ich möchte bei dem benutzer auch nicht verlangen, dass das programm mit adminrechten ausgeführt werden soll (dazu ist doch der Vista manifest?)EDIT: Ich überprüfe halt nicht den returnwert von RegCreateKeyEx, sondern lese den Eintrag nochmal aus...
-
neoexpert schrieb:
ne mein code funktioniert
wenn ich das programm, als admin starte, dann wird in HKEY_LOCAL_MACHINE geschrieben, wenn als normaler user, dann in HKEY_CURRENT_USER, mehr wollte ich ja nicht. Und ich möchte bei dem benutzer auch nicht verlangen, dass das programm mit adminrechten ausgeführt werden soll (dazu ist doch der Vista manifest?)EDIT: Ich überprüfe halt nicht den returnwert von RegCreateKeyEx, sondern lese den Eintrag nochmal aus...
Ich habe nicht gesagt, dass Dein Code nicht funktioniert, sondern dass er Blödsinn ist.
Die Virtualisierung wird Dir an anderen Gelegenheiten lustige Streiche spielen, wenn Du kein Manifest hast. Punkt!PS: Wenn Du keine Lust hast auf meine Hinweise einzugehen und meinst alles besser wissen zu müssen, dann brauchst Du nicht mehr fragen und wir können diesen Thread hier beenden. Wenn Du kein Experte bist - wie Dein Usergroup-Name ja impliziert -, dann solltest Du vielleicht auf Leute hören, die hier evtl. mehr Erfahrung haben
-
Naja wie auch immer, ich bin selber auf die Lösung gekommen, und mein Programm läuft wie ich es haben wollte. Was gibts denn hier noch zu meckern? Wo können denn Probleme auftretten?
Die Virtualisierung wird Dir an anderen Gelegenheiten lustige Streiche spielen, wenn Du kein Manifest hast. Punkt!
Könntest du mir vielleicht erklären was du mit Virtualisierung meinst?
EDIT: Ich habe eigentlich genau beschrieben was ich haben wollte.
-
neoexpert schrieb:
Naja wie auch immer, ich bin selber auf die Lösung gekommen, und mein Programm läuft wie ich es haben wollte. Was gibts denn hier noch zu meckern? Wo können denn Probleme auftretten?
Die Virtualisierung wird Dir an anderen Gelegenheiten lustige Streiche spielen, wenn Du kein Manifest hast. Punkt!
Könntest du mir vielleicht erklären was du mit Virtualisierung meinst?
EDIT: Ich habe eigentlich genau beschrieben was ich haben wollte.
1. Geht es mit nicht um das was Du beschrieben hast, es geht mir darum dass Du die Antworten hast und wir nicht weiter reden brauchen, wenn Deine Anwendung kein Manifest hat.
2. Wenn Dir nicht klar ist was Virtualisierung (VirtualStore) unter Vista bedeutet, dann kann ich nur wieder auf mein Blog verweisen:
http://blog.m-ri.de/index.php/2006/12/12/vista-und-die-notwendigkeit-eines-manifestes-fur-die-uac/
http://blog.m-ri.de/index.php/2007/02/10/der-virtualstore-und-seine-schattenseiten/
3. Ich werde jetzt nicht mehr weiter posten zu dieser Frage. Mir ist nicht klar, warum Du Dich streubst Deinem Programm ein Vista-Manifest zu verpassen.
-
Sorry, wenn ich dich irgendwie sauer gemacht habe. Aber ich möchte nicht dass mein Programm nach Administrator-Rechten Fragt (deshalb soll es ja auch bei wenigen rechten die daten in HKEY_CURRENT_USER speichern). Danke dir für Antworten!
-
neoexpert schrieb:
Sorry, wenn ich dich irgendwie sauer gemacht habe. Aber ich möchte nicht dass mein Programm nach Administrator-Rechten Fragt (deshalb soll es ja auch bei wenigen rechten die daten in HKEY_CURRENT_USER speichern). Danke dir für Antworten!
Du hast immer noch nicht verstanden was ein AsInvoker Manifest tut! Es fragt definitiv nicht nach Adminrechten!
-
na das ist aber seltsam:
http://www.vb-magazin.de/forums/blogs/janm/archive/2006/10/28/6330.aspx
Man könnte auch sagen, dass damit erweiterte Rechte verlangt werden können, und genau das wollte ich ja nicht.
-
Ohhhh Mannn!
Dann lies! Es geht um asInvoker!
Du hast alle wichtigen Links. Ich wünsche Dir weiterhin viel Spaß beim Programmieren und Lesen von Dokumenationen.
-
Warum regst du dich denn so auf? Mein Problem ist schon lange gelöst und deine hilfe habe ich dafür nicht gebraucht. Du weisst ja gar nicht wofür mein Programm gut ist. Ich möchte keinen Manifest in meinem Program haben.
Und außerdem hast du folgendes geschrieben:Ich werde jetzt nicht mehr weiter posten zu dieser Frage.
-
Ich nehm alles zurück. Tut mir leid, ich hatte am Anfang nicht verstanden, worum es geht. Ich wollte nur schnell eine Lösung haben, mein Code hat auch gut geklappt. Aber jetzt habe ich verstanden was du meinst. Also wenn man die Manifestdatei einbindet, dann könnte man z.B. für bestimmte Programme die virtualisierung deaktivieren?
Wie kann ich denn jetzt meinem Programm einen Manifest hinzufügen? Einfach mitlinken oder wie?
-
Die Links hast Du bereits.
Das primitivste ist eine Datei mit der Extension Manifest in das selbe Verzeichnis zu legen...
-
Also in das selbe verzeichniss wo die ausführbare liegt? das ist aber doof, ich möchte nähmlich das Programm auch per netzwerk versenden, und es wäre umständlich immer zwei dateien zu versenden. Man könnte ja auch die Datei automaitisch beim ausführen des Programms anlegen, aber das wäre ja auch nicht sehr elegant. Wie würderst du es machen? Ich schreibe meine Programme mit dem Borland C++ builder 6
-
Dann musst Du das Manifest eben in der RC Datei einbetten.
Was benutzt Du denn für ein VS?
http://msdn.microsoft.com/en-us/library/ms235542(VS.80).aspx
http://msdn.microsoft.com/en-us/library/ms235591(VS.80).aspxSimple Erklärung für Manifeste grundsätzlich, die ja schon für XP notwednig sind hier:
http://www.codeproject.com/KB/winsdk/xptheme.aspx
-
Hallo! Ich habe den Borland c++ builder 6
Da habe ich eine rc-Datei mit folgendem inhalt dem Projekt hinzugefügt:Manifest 24 "client.manifest"
in das selbe verzeichniss die datei "client.manifest" mit folgendem inhalt:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3"> <v3:security> <v3:requestedPrivileges> <v3:requestedExecutionLevel level="highestAvailable" /> </v3:requestedPrivileges> </v3:security> </v3:trustInfo> </assembly>
ist das so richtig?
also in der exe-Datei finde ich auch diesen text, virtualisierung bleibt aber trotzdem an
-
ähm, allerdings habe ich nochmal deinen letzten link angeguckt (also die seite auf die er verlinkt) und festgestellt das in dem beispiel dort folgende zeile sich finden lässt:
1 24 DISCARDABLE "client.manifest"
und dann gings.
was bedeutet denn die?
edit: ich wollte mich nochmal entschuldigen, dass ich nicht direkt auf dich gehört habe, so wäre mein problem direkt gelöst.
-
Diese Zeile fügt die XML Datei in die EXE als Ressource ein. Dadurch kann Vista feststeellen in welchem Kontext die EXE laufen soll.
-
hmmm, ja
was kann man denn noch so in dieser xml-datei festlegen?