Seite 1 von 1

Zugriff auf Windows-Registrierung auch Win7 [erledigt]

Verfasst: So, 03. Jul 2011 17:48
von Werner_Bayern
Servus,

wie macht ihr das? Mit der regclass von Thomas Braun funktioniert das bei mir nicht unter Win7 64bit, sogar Zugriffe auf den Schlüssel "HKEY_CURRENT_USER\Control Panel\Desktop" funktioniert nicht, ein

Code: Alles auswählen

cWallPaper := oReg:GetValue( "Wallpaper")
aus seinem Beispiel liefert NIL.

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: So, 03. Jul 2011 20:01
von georg
Hallo, Werner -


also, ich entschuldige mich auch sofort für die Frage ... ist der Schlüssel überhaupt definiert?

Code: Alles auswählen

   oReg := XbpReg():new("HKEY_CLASSES_ROOT\MSComctlLib.SbarCtrl")
   lRegSuccess := oReg:MoveDown("CLSID")
   IF !lRegSuccess
      oXbp:caption := "Not installed"
      lInstalled := .F.
      oGB:setColorBG(GRA_CLR_RED)
   ELSE
      cRegEntry := oReg:getValue("")            // this is the ".default" entry in the registry
      IF cRegEntry <> NIL
         oXbp:caption := "ActiveX control is installed"
Ist ein einfaches Code-Beispiel, das einwandfrei unter Windows 2008 Server R2 (= Windows 7, 64 bit) läuft. Zumindest kommt die Meldung, dass diese ActiveX Control installiert ist. Und auch der Debugger zeigt an, dass Werte zurückgeliefert werden.

Gruss,

Georg

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: So, 03. Jul 2011 20:57
von Werner_Bayern
Servus Georg,

Entschuldigung angenommen :razz:
Ja, der Schlüssel existiert, es gehen auch alle anderen Beispiele aus seiner Class nicht. Der Tommy1 - Eintrag wird nicht angelegt, erscheint aber ganz woanders und die Keys werden auch falsch angelegt.

Oder ist das ein Rechte-Problem?

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: Mo, 04. Jul 2011 7:27
von georg
Guten Morgen, Werner -


mein Beispiel geht natürlich davon aus, dass ich nur lese und nicht schreibe. Vielleicht lässt Du das Programm mal als Administrator laufen?

Ausserdem kann man im Debugger recht schön verfolgen, wie die Zugriffe erfolgen. Aus meiner Erfahrung gehe ich den ganzen Registry-Baum ab, d.h. von HKEY_irgendwas bis zum Zieleintrag, und versuche nicht, den Zielzweig direkt zu öffnen. Vielleicht findest Du ja auf diesem Weg das Problem.


Gruss,

Georg

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: Mo, 04. Jul 2011 9:05
von Werner_Bayern
Danke, werde ich heute im Laufe des Tages testen.

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: Mo, 04. Jul 2011 11:27
von AUGE_OHR
hi,

Seit VISTA gibt es den "VirtualStore" ;)

so wie es "verboten" ist in die Ordner %ProgramFiles% und %SystemRoot% zu schreiben so ist der Zugriff auf die Registry seit VISTA "virtualisiert"

p.s. ein PC mit 32bit OS() wird die 64bit Registry Einträge nicht finden ...

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: Mo, 04. Jul 2011 13:20
von Markus Walter
Hallo Werner,

Dein Problem besteht wohl darin, dass Windows in den 64bit-Versionen zwei getrennte Zweige in der Registry führt und "automatisch" zwischen 64bit- und 32bit-Zugriffen unterscheidet. Dazu dient der Wow6432Node, auf den die 32Bit-Versionen zugreifen. Damit kommst Du zu dem Problem, dass ein 64bit-Prozess in Teilen eine andere Registry "sieht", als ein 32bit-Prozess.

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: Mo, 04. Jul 2011 13:54
von brandelh
Wobei doch Xbase++ Programme immer im 32 Bit Pfad sind. ;-)

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: Mo, 04. Jul 2011 14:45
von georg
Hallo,


falls es noch nicht aufgefallen ist ... dieses Thema geht von einem Pfad aus, der NIX mit 32 oder 64 bit zu tun hat, und daher auch die Node6432 Unterscheidung nicht kennt.

Und auch mein Beispiel in Bezug auf ActiveX Controls bezieht sich auf CLASSES_ROOT, und auch da ist diese Unterscheidung nicht gegeben.


Gruss,

Georg

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: Mo, 04. Jul 2011 21:47
von AUGE_OHR
georg hat geschrieben:falls es noch nicht aufgefallen ist ... dieses Thema geht von einem Pfad aus, der NIX mit 32 oder 64 bit zu tun hat, und daher auch die Node6432 Unterscheidung nicht kennt.

Und auch mein Beispiel in Bezug auf ActiveX Controls bezieht sich auf CLASSES_ROOT, und auch da ist diese Unterscheidung nicht gegeben.
wir reden doch hier von "schreiben" in die Registry ... "lesen" kann jeder User.

Wenn ein User ( nicht Administrator ) ein Programm installiert dann landet es in "VirtualStore" des User und ist somit für andere User nicht zugänglich.

p.s. Win7 / Srv2K8 haben ja kein MsComCtl.OCX.
Das ist auch nicht notwendig den es gibt ja auch die DLL von den Common Controls die man auch "direkt" ansprechen kann.
siehe http://www.xbaseforum.de/viewtopic.php?f=27&t=5254

Code: Alles auswählen

benutzt ot4xb Syntax
   da := ::DrawingArea
   ::hDa := da:GetHWnd()
...
   ::hStatusBar := @user32:CreateWindowExA(0,"msctls_statusbar32",0,;
                   nOr(WS_CHILD, WS_VISIBLE),0,0,0,0,;
                   ::hDa,-1,AppInstance(),0)

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: Di, 05. Jul 2011 5:39
von Martin Altmann
Moin Jimmy,
AUGE_OHR hat geschrieben: ... "lesen" kann jeder User.
sorry - aber das ist Unsinn. Es können auch Leserechte nur für bestimmte User oder Gruppen eingerichtet sein!

Viele Grüße,
Martin

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: Di, 05. Jul 2011 7:19
von georg
Hallo, Jimmy -
AUGE_OHR hat geschrieben: wir reden doch hier von "schreiben" in die Registry ... "lesen" kann jeder User.
lese bitte den ersten Beitrag, ein lesender Zugriff liefert NIL zurück. Das ist das Ausgangsproblem.


Gruss,

Georg


P.S.: Du könntest Dich gerne ein wenig über die andere Statusbar Variante auslassen ...

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: Di, 05. Jul 2011 7:38
von AUGE_OHR
Martin Altmann hat geschrieben:
AUGE_OHR hat geschrieben: ... "lesen" kann jeder User.
sorry - aber das ist Unsinn. Es können auch Leserechte nur für bestimmte User oder Gruppen eingerichtet sein!
ok klar, aber ich meinte es in Zusammenhang als Gegensatz zu "schreiben" in die Registry.
auch klar das ein User ( ausser dem Admin ) gewöhnlich in der Registry nur "seine" Unterzweige lesen kann
... aber "schreiben" geht eben nach HKEY_CLASSES_ROOT\VirtualStore...
georg hat geschrieben:ein lesender Zugriff liefert NIL zurück
klar muss man dann auch den HKEY_CLASSES_ROOT\VirtualStore... Zweig lesen ;)

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: Di, 05. Jul 2011 7:40
von AUGE_OHR
georg hat geschrieben:P.S.: Du könntest Dich gerne ein wenig über die andere Statusbar Variante auslassen ...
yup, aber lass uns das in dem anderen Thread machen.
http://www.xbaseforum.de/viewtopic.php?f=27&t=5254

Re: Zugriff auf Windows-Registrierung auch Win7

Verfasst: Fr, 09. Nov 2012 16:31
von Werner_Bayern
Nur zur Info, hab mich jetzt nochmal damit beschäftigt, funktioniert alles einwandfrei mit der Registry class for Xbase++ von Thomas Braun von 2001.
Hab ein kleines Tool damit machen können, das unter Terminal Server bei allen Usern Einträge setzen / ändern kann. Einige Methoden mussten jedoch angepasst werden, weil die teilweise beim Auslesen von Werten / Keys falsche Zeichen liefern.

Danke an alle.