Autor Beitrag
trm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Do 10.02.11 14:10 
Hallo,

laut einem Eintrag im msdn ( msdn.microsoft.com/e...45%28v=VS.85%29.aspx ) sollte es möglich sein, bestimmte Abhängigkeiten im luafenden Betrieb eines Programmes an die Platform zu binden.
In meinem Fall versuche ich immer noch eine Lösung für PROCESS_ALL_ACCESS unter WindowsXP zu nutzen, wenn das Programm mit Delphi7 unter Windows7 kompiliert wird.

Jedoch: wie setze ich NTDDI_VERSION ein, bzw. wie definiere ich das korrekt?

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 10.02.11 14:53 
Das hast du falsch verstanden. Das macht im Grunde das gleiche wie in Delphi:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
{$IFDEF VER130} // Delphi 5
RaiseLastWin32Error;
{$ELSE}
RaiseLastOSError;
{$ENDIF}
Nur dass es dort nicht darum geht für eine bestimmte Delphiversion zu kompilieren, sondern für ein bestimmtes Betriebssystem.

Da du in Delphi die Headerdateien ohnehin nicht direkt nutzt und sich das auch ohnehin nicht zur Laufzeit auswirkt (sondern du feste Exen mit den Funktionen für ein bestimmtes OS bekommst), bringt dir das für deinen Zweck nichts.
trm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Do 10.02.11 17:57 
Hallo Sebastian,

so etwas in der Art hatte ich vermutet. Danke für die Aufklärung.

Nun jedoch noch einmal zurück zu dem Problem, vielleicht kannst Du mir helfen.

Hier ein Crosspost-Hinweis: codekicker.de/fragen...WinXP-Win7-Vista/829

Ist es denn nun möglich, dass ich ACCESS_ALL nutzen kann - oder nicht?
Diesen Aspekt verstehe ich nicht so richtig.

Verstanden habe ich, dass ab WinVista der Wert von dem Refernezwert sich geändert hat.
Laut diesem Blog: nsylvain.blogspot.co...n32winnt-mayhem.html ist es so, dass man den Wert ändern soll - passend zu jedem Betriebssystem.

Das hatte ich auch versucht. Ich hatte bei meinem Programm, mit welchem ich auf Speicherbereiche eines Spieles zugreifen möchte, die Definition von PROCESS_ALL_ACCESS umgangen und direkt die Werte eingetragen (blogs.msdn.com/b/old...8/02/27/7912126.aspx).

ausblenden Quelltext
1:
2:
3:
4:
5:
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ 0xFFFF)
#else
 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ 0xFFF)
#endif


Im Endeffekt sollte das doch sicher heißen, dass ich prüfen muss, auf welcher Platform das Programm läuft, um dann das richtige Flag zu nutzen - oder der einfacheit halber, wenn das Handle ungültig ist, das Flag austauschen.

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 10.02.11 18:04 
user profile icontrm hat folgendes geschrieben Zum zitierten Posting springen:
Im Endeffekt sollte das doch sicher heißen, dass ich prüfen muss, auf welcher Platform das Programm läuft, um dann das richtige Flag zu nutzen
Richtig.

user profile icontrm hat folgendes geschrieben Zum zitierten Posting springen:
- oder der einfacheit halber, wenn das Handle ungültig ist, das Flag austauschen.
Schlechte Idee, wahrscheinlich bekommst du ein Handle, aber eins mit zu wenig Rechten...