AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programme ausführen, Win+R

Ein Thema von netpilots · begonnen am 2. Apr 2013 · letzter Beitrag vom 4. Apr 2013
Antwort Antwort
netpilots

Registriert seit: 13. Nov 2004
Ort: Zürich
33 Beiträge
 
Delphi 6 Enterprise
 
#1

AW: Programme ausführen, Win+R

  Alt 4. Apr 2013, 01:22
Dein Hinweis ist was Wert, vielen Dank.
Wenn es nicht funktioniert ist es der regedit.exe *32 ; also der 32 Bit im C:\Windows\SysWOW64 Verzeichnis.
Wenn alles richtig angezeigt wird ist es der im C:\Windows Verzeichnis : also die 64 Bit Ausführung.
Jetzt werde ich explizit den 64 Bit ausführen. Schreibe dann ob es wirklich daran lag. Ich bin mir jetzt schon sicher dass es so ist aber testen muss ich ja trotzdem.

Ich schreibs gleich hier als Nachtrag rein.
Es hat noch nicht so funktioniert wie ich möchte.
Dies funktioniert:
Registry Einträge in der, sagen wir mal x64 Registry, bearbeiten geht mit der Einleitung.
Code:
Reg := TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_64KEY);
Regedit (x64) ausführen klappt nicht. Beide Beispiele öffnen das 32Bit Regedit.

So erwartete ich dass Regedit x64 ausgeführt wird, tut es aber nicht.
Code:
ShellExecute(Handle,'open', PChar('C:\Windows\Regedit.exe'), nil, nil, SW_SHOWNORMAL);
So erwartete ich dass Regedit x86 ausgeführt wird, tut es wie erwartet, nützt mir aber nichts.
Code:
ShellExecute(Handle,'open', PChar('C:\Windows\SysWOW64\Regedit.exe'), nil, nil, SW_SHOWNORMAL);

Ist da was zu machen, so wie einem das mit TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_64KEY) gelingt?

Geändert von netpilots ( 4. Apr 2013 um 10:29 Uhr) Grund: Nachtrag
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#2

AW: Programme ausführen, Win+R

  Alt 4. Apr 2013, 10:57
Auch wenn ich weiterhin nicht verstehe, warum du regedit.exe von deinem Programm aus starten können willst, ist das Starten von 64 Bit Programmen von 32 Bit Programmen aus etwas aufwendiger als der Zugriff auf die 64 Bit Registry-Zweige, Stichwort Wow64DisableWow64FsRedirection (hinterher das Wow64RevertWow64FsRedirection nicht vergessen!).

MfG Dalai
  Mit Zitat antworten Zitat
netpilots

Registriert seit: 13. Nov 2004
Ort: Zürich
33 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: Programme ausführen, Win+R

  Alt 4. Apr 2013, 21:53
Man kann bestimmt vom Programm aus alles in der Registry machen was man auch mit Regedit machen kann. Dazu ist eigentlich kein Bedarf da.
Die ursprüngliche Idee war, mit Delphi Code was in der Registry machen und dann der Einfachheit halber mit Regedit kontrollieren. Damit man nicht 'Regedit' schreiben muss oder einen Link klickt sollte Regedit gleich vom Programm aus zu öffnen sein.

Jetzt wo klar wurde dass es nicht so einfach ist ein 64Bit Programm aus einer 32Bit Anwendung zu starten interessiert es erst recht.
Werde mal schauen ob ich mit deinem Hinweis weiter kommen.

Schon mal vielen Dank und liebe Grüsse - Netpilots

Die Lösung welche zu funktionieren scheint.

In der entsprechenden Unit, vor oder nach

'implementation'
'{$R *.dfm}'

diesen Code einfügen.

Code:
var Wow64FsEnableRedirection: LongBool;
Function Wow64DisableWow64FsRedirection(Var Wow64FsEnableRedirection: LongBool): LongBool; StdCall; External 'Kernel32.dll' Name 'Wow64DisableWow64FsRedirection';
Function Wow64RevertWow64FsRedirection(Wow64FsEnableRedirection: LongBool): LongBool; StdCall; External 'Kernel32.dll' Name 'Wow64RevertWow64FsRedirection';
Dann im Teil wo man ein x64 Programm (in unseren Fall regedit.exe) unter dieser 32Bit Anwendung starten möchte.
Code:
 if IsWOW64 then
  begin
   if Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection) then
    begin
      ShellExecute(Handle,'open', PChar('Regedit.exe'), nil, nil, SW_SHOWNORMAL);
      Wow64RevertWow64FsRedirection(Wow64FsEnableRedirection);
    end;
  end;
Quelle welche für diesen Code verwendet wurde: http://embarcadero.newsgroups.archiv...007109312.html

Hätte noch Beispiele aus DelphiPraxis aber mit viel mehr Code: http://www.delphipraxis.net/155861-w...direction.html

Geändert von netpilots ( 5. Apr 2013 um 00:00 Uhr) Grund: Nachtrag
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz