OpenProcess schlägt fehl



  • Warum schlägt OpenProcess fehl aber GetLastError ergibt 0?
    Wenn ich statt PROCESS_ALL_ACCESS einen anderen nehme geht es. Aber früher konnte ich auch schon immer PROCESS_ALL_ACCESS verwenden. Sehr seltsam. Das ist jedenfalls der Code.

    Process2 = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pidfromprogram);
    			  if(hackProcess == NULL){
    			      MessageBox(hDlg, TEXT("Error!"), szAppName, MB_ICONERROR);
    				  				  char lolbuff[100];
    				  sprintf(lolbuff, "%d", GetLastError());
    				  MessageBox(0,lolbuff,lolbuff,0);}
    


  • nicht windoof vista verwenden



  • ich verwende xp sp3



  • weil du auf hackProcess überprüfst und nicht auf Process2



  • ne im echten code stimmt es dass ist nur hier ein fehller



  • ich habe mitlerweile herausgefunden dass sich das aus diesen 3 zusammensetzt
    #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
    0xFFFF)

    bei 0xFFFF ist OpenProcess 0. Was ist das?



  • besser es schlägt fehl als wenn es mich schlägt *GRÖHL*!!!!



  • markus@loggedoff schrieb:

    ich verwende xp sp3

    ... und VS2008 ?

    markus@loggedoff schrieb:

    bei 0xFFFF ist OpenProcess 0. Was ist das?

    Das vierte F (0xF000) hat nur unter Vista eine Bedeutung.
    Es enthält z.Zt. drei undefinierte Flags und einmal "PROCESS_QUERY_LIMITED_INFORMATION" (0x1000).

    Viel Spaß nun beim herumgurken in etwa so hier:

    #if (Windows Vista) // wie auch immer (vermutlich kommt da eine noch bessere Gurke rein :) )
    
    #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF
    #else
    #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0FFF
    #endif
    


  • Aber er hat doch kein Vista?!?



  • markus@loggedoff schrieb:

    Warum schlägt OpenProcess fehl aber GetLastError ergibt 0?
    Wenn ich statt PROCESS_ALL_ACCESS einen anderen nehme geht es. Aber früher konnte ich auch schon immer PROCESS_ALL_ACCESS verwenden. Sehr seltsam. Das ist jedenfalls der Code.

    Process2 = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pidfromprogram);
    			  if(hackProcess == NULL){
    			      MessageBox(hDlg, TEXT("Error!"), szAppName, MB_ICONERROR);
    				  				  char lolbuff[100];
    				  sprintf(lolbuff, "%d", GetLastError());
    				  MessageBox(0,lolbuff,lolbuff,0);}
    

    Vermutlich hast Du keine Rechte mit PROCESS_ALL_ACCESS auf den Prozess zuzugreifen.



  • CStern schrieb:

    Vermutlich hast Du keine Rechte mit PROCESS_ALL_ACCESS auf den Prozess zuzugreifen.

    LOL, das hört sich für mich jetzt so an, wie das typische verständigungsproblem zwischen mann und frau.



  • @rT!f@Ct schrieb:

    CStern schrieb:

    Vermutlich hast Du keine Rechte mit PROCESS_ALL_ACCESS auf den Prozess zuzugreifen.

    LOL, das hört sich für mich jetzt so an, wie das typische verständigungsproblem zwischen mann und frau.

    Hm ... hört sich so an, als vermißt Du eine Frau; sonst wüßtest Du wie's geht.



  • Melan schrieb:

    Aber er hat doch kein Vista?!?

    Er benutzt aber "PROCESS_ALL_ACCESS" mit gesetzten Flags, die nur unter Vista von Bedeutung sind (PROCESS_QUERY_LIMITED_INFORMATION).
    Dieses Flag gibt es aber unter WinXP nicht.
    Deshalb schlägt OpenProcess (PROCESS_ALL_ACCESS,...) auch fehl, weil ein Flag gesetzt wird, mit dem WinXP nichts anfangen kann.



  • ich glaube das liegt an Sp3:

    #if (NTDDI_VERSION >= NTDDI_LONGHORN)
    #define PROCESS_ALL_ACCESS        (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
                                       0xFFFF)
    #else
    #define PROCESS_ALL_ACCESS        (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
                                       0xFFF)
    

    #define NTDDI_WIN2K 0x05000000
    #define NTDDI_WIN2KSP1 0x05000100
    #define NTDDI_WIN2KSP2 0x05000200
    #define NTDDI_WIN2KSP3 0x05000300
    #define NTDDI_WIN2KSP4 0x05000400

    #define NTDDI_WINXP 0x05010000
    #define NTDDI_WINXPSP1 0x05010100
    #define NTDDI_WINXPSP2 0x05010200

    #define NTDDI_WS03 0x05020000
    #define NTDDI_WS03SP1 0x05020100

    #define NTDDI_LONGHORN 0x06000000

    vielleicht noch ein #define NTDDI_WINXPSP3 0x05010300
    dazumachen?


Anmelden zum Antworten