AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Windows 7 64Bit Redirection

Ein Thema von amigage · begonnen am 10. Nov 2010 · letzter Beitrag vom 29. Nov 2010
Antwort Antwort
Seite 3 von 3     123
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#21

AW: Windows 7 64Bit Redirection

  Alt 15. Nov 2010, 07:35
@Dezipaitor:
Könntest Du mir mal Deine exe hier anbieten? Ich arbeitet derzeit ohne die Jedi-Komponenten und würde sicher gehen wollen, dass diese funktionieren, bevor ich sie mir installiere.

Ich habe bei den Jedi Komponenten sowieso keinen Überblick, welche ich da wann benötige. Aber das ist ein anderes Thema
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#22

AW: Windows 7 64Bit Redirection

  Alt 15. Nov 2010, 09:45
Die JEDI API muss nicht installiert werden. Einfach die Pfade inkludieren.

Und hier gibt es eine Übersicht:
http://wiki.delphi-jedi.org/index.php?title=Main_Page
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
gore

Registriert seit: 9. Jun 2006
Ort: Magdeburg
29 Beiträge
 
Delphi 7 Professional
 
#23

AW: Windows 7 64Bit Redirection

  Alt 15. Nov 2010, 11:47
64Bit Redirection? Wieso immer gleich mit Kanonen auf Spatzen schießen? Die erste Antwort von jfheins ist Microsoft konform.

Zitat:
32-bit applications can access the native system directory by substituting %windir%\Sysnative for %windir%\System32. WOW64 recognizes Sysnative as a special alias used to indicate that the file system should not redirect the access. This mechanism is flexible and easy to use, therefore, it is the recommended mechanism to bypass file system redirection. Note that 64-bit applications cannot use the Sysnative alias as it is a virtual directory not a real one.

Solange man mit Delphi keine 64bit Programme erzeugen kann, reicht folgendes:
  if IsProcess32OnWin64(GetCurrentProcess) then Exe:='%WinDir%\Sysnative\osk.exeelse Exe:='%WinDir%\system32\osk.exe';

IsProcess32OnWin64 ist gleichbedeutend mit Deiner Is64BitViaRegistry (und ist auch Microsoft konform).
Delphi-Quellcode:
function IsProcess32OnWin64(ProcessHandle:THandle):boolean;
type
  TIsWow64Process = function(Handle: THandle; var Res: BOOL): BOOL; stdcall; // Type of IsWow64Process API fn
var
  IsWow64Result: BOOL; // Result from IsWow64Process
  IsWow64Process: TIsWow64Process; // IsWow64Process fn reference
begin
  result:=false;
  IsWow64Process := GetProcAddress( GetModuleHandle('kernel32.dll'), 'IsWow64Process' );
  if Assigned(IsWow64Process) then begin
    if IsWow64Process(ProcessHandle,IsWow64Result) AND IsWow64Result then result:=true;
  end; // google: Running 32-bit Applications (Windows)
end;

function IsProcess64bit(ProcessHandle:THandle):boolean;
begin
  result:= IsWin64bit AND not IsProcess32OnWin64(ProcessHandle);
end;
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: Windows 7 64Bit Redirection

  Alt 15. Nov 2010, 18:41
@gore
Danke für den Hinweis, aber wenn ich das mit Sysnative umsetze, erhalte ich von Shellexecute() die Rückmeldung 3 (Datei nicht gefunden). Also rufe ich generell '%WinDir%\system32\osk.exe' auf.

@all
Aber - und jetzt wird es verrückt - ich habe eine nachvollziehbare, aber nicht praktikable Lösung gefunden.

Ich habe zwei Schaltflächen:
1. Schaltfläche ist Version 1 mit ChangeFSRedirection()
2. Schaltfläche ist Version 2 mit IsProcess32OnWin64 von gore
  • Klick auf Schaltfläche 2 -> Shellexecute = 5; Windows meldet: Could not start On-Screen Keyboard.
  • Klick auf Schaltfläche 1 -> Shellexecute = 42; Und plötzlich startet die Bildschirmtastatur
  • bei jedem weiteren Klick auf Schaltfläche 1 oder 2 startet die BST wieder mit 42

Danach schließe ich das kleine Testprogramm:
  • Ich starte mit Klick auf Schaltfläche 1 -> Shellexecute = 5; nichts passiert (so wie bisher)
  • Klick auf Schaltfläche 2 -> Shellexecute = 5; nichts passiert (so wie bisher)
  • bei jedem weiteren Klick auf Schaltfläche 1 oder 2 passiert nichts

Ich kann mir das Verhalten nicht erklären. Also habe ich versucht, eine Mischung von beidem zu erstellen, aber dann habe ich wieder Shellexecute() mit Rückgabe von 5.

Delphi-Quellcode:
  IsProcess32OnWin64(GetCurrentProcess); // von gore

  ChangeFSRedirection(true); // Redirect stoppen
  Path := CreateCorrectWinDir('%WinDir%\system32\osk.exe');
  Memo1.Lines.Add('start von ' + Path);
  isStarted := ShellExecute(0, 'open', PChar(Path), '', '', SW_SHOWNORMAL);
  Memo1.Lines.Add('isStarted : ' + IntToStr(isStarted));
  ChangeFSRedirection(false); // Redirect wieder starten
Ich bin echt am Verzweifeln. Langsam muss ich davon ausgehen, dass an meinen frisch installierten, englischen Windows 7 64 Bit irgendetwas nicht funktioniert.

Könntet Ihr daher bitte noch einmal mein Testprogramm (bereits kompiliert) probieren und mir Eure Ergebnisse unter Eurem Windows 7 64Bit durchgeben?
Angehängte Dateien
Dateityp: zip Project1.zip (258,5 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#25

AW: Windows 7 64Bit Redirection

  Alt 15. Nov 2010, 18:59
Probier mal die angehängte Version
Angehängte Dateien
Dateityp: zip RunningOSK.zip (498,7 KB, 28x aufgerufen)
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#26

AW: Windows 7 64Bit Redirection

  Alt 15. Nov 2010, 19:59
Solange man mit Delphi keine 64bit Programme erzeugen kann, reicht folgendes:
  if IsProcess32OnWin64(GetCurrentProcess) then Exe:='%WinDir%\Sysnative\osk.exeelse Exe:='%WinDir%\system32\osk.exe';
Auch bis zum Ende gelesen zum Thema SysNative?

IsProcess32OnWin64 ist gleichbedeutend mit Deiner Is64BitViaRegistry (und ist auch Microsoft konform).
Leider nein. Ich habe auch auf 32bit-Systemen schon die Wow...Node gesehen. Da setzt man sich in die Nesseln. Lieber die Methode mit MSDN-Library durchsuchenIsWow64Process (wie in deinem Beitrag) oder MSDN-Library durchsuchenGetNativeSystemInfo (s.o.).
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#27

AW: Windows 7 64Bit Redirection

  Alt 16. Nov 2010, 00:40
Vergiß alles, ich hab mich gerade damit etwas beschäftigt.
Unter XE kann man Osk.exe einfach ausführen. Im 64bit Explorer geht es nicht.

Hier wird geraten, dass .NET mit abgeschalteten Redirection nicht funktioniert. Das Shell zeugs mit ShellExecute geht alles außerdem über COM, denn ich bekomme, wenn ich
CoInitializeEx(nil, COINIT_APARTMENTTHREADED or COINIT_DISABLE_OLE1DDE); verwende, eine Prozedur wurde (im Modul) nicht gefunden. D.h. das alles ist in Windows ganz tief drin, denn osk.exe ist ja auch in der WhiteList für AutoElevation.
Delphi scheint da irgendetwas mit .NET inuts zu haben, damit es funktioniert.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#28

AW: Windows 7 64Bit Redirection

  Alt 16. Nov 2010, 10:15
Also wieder Start bei 0

Könntet Ihr bitte einmal meine osk.zip ausprobieren, ob ihr den o.g. Ablauf auch bei Euch bestätigen könnt.

Danke.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#29

AW: Windows 7 64Bit Redirection

  Alt 16. Nov 2010, 16:42
Mit FreePascal eine kleine 64bit App bauen, die das für dich macht. Vielleicht gehts so.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#30

AW: Windows 7 64Bit Redirection

  Alt 29. Nov 2010, 17:37
Wie man das 64Bit OnScreenKeyboard starten kann.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz