CreateFile und das Rechtemanagement



  • Hi,

    ich habe hier eine Anwendung, die ich zum Laufen bringen muss, deren Code ich jedoch nicht einsehen kann. Dieses Programm erstellt eine Reihe von Dateien, einige davon mit fopen und andere mit CreateFile. Unter Windows 7 werden jedoch nur die Dateien erstellt die durch fopen angelegt werden. Der Code für CreateFile sieht wohl folgendermaßen aus:

    CreateFile(DBFName[0],GENERIC_READ | GENERIC_WRITE,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);

    Ich führe das Programm als Administrator aus und habe vollständige Rechte.

    Bin ein wenig ratlos 😕



  • Dieses Programm erstellt eine Reihe von Dateien, einige davon mit fopen und andere mit CreateFile.

    Woher weist du das ?

    Schaue doch mal nach ob der Pfad zu den Dateien, welcher er anlegt, Leerzeichen enthält.

    Du kannst auch mal den Kompatibilitätsmodus ausprobieren.


  • Mod

    Was sagt GetLastError?
    Ansonsten kannst Du Dir gerne den CRT Source-Code ansehen und Du wirst sehen, dass auch fopen CreateFile benutzt



  • Bitte ein Bit schrieb:

    Dieses Programm erstellt eine Reihe von Dateien, einige davon mit fopen und andere mit CreateFile.

    Woher weist du das ?

    Schaue doch mal nach ob der Pfad zu den Dateien, welcher er anlegt, Leerzeichen enthält.

    Du kannst auch mal den Kompatibilitätsmodus ausprobieren.

    Der Autor des Programms hat mir gesagt mit welcher Funktion er welche Dateien schreibt.

    Es sind keine Leerzeichen vorhanden und ich habe schon alle Systeme im Kompatibilitätsmodus ausprobiert.

    Ist verständlich das fopen auf windows CreateFile benutzt, es ist laut Autor aber der einzige Unterschied.

    Wie gesagt ich habe keinen Einblick und deshalb keine Idee was GetLastError sagt.



  • Benutz einen Debugger wie OllyDbg – mit diesem kannst du dir die Argumente anschauen und nach Ausführung den Fehlercode anzeigen lassen.



  • Process Monitor kann vllt. auch schon helfen:
    http://technet.microsoft.com/de-de/sysinternals/bb896645



  • Fall A) Standard-Parameter von fopen(DBFName[0], "wb") :

    CreateFile(DBFName[0],
    	GENERIC_READ | GENERIC_WRITE,
    	FILE_SHARE_WRITE | FILE_SHARE_READ,
    	{12, 0, TRUE},
    	CREATE_ALWAYS,
    	FILE_ATTRIBUTE_NORMAL,
    	NULL);
    

    Fall 😎 Parameter von dir:

    CreateFile(DBFName[0],
    	GENERIC_READ | GENERIC_WRITE,
    	0,
    	NULL,
    	CREATE_NEW,
    	FILE_ATTRIBUTE_NORMAL,
    	NULL);
    

    😕
    -> Mach mal ein Backup von deinen generierten Dateien, lösche diese und rufe dein Program nochmals auf.

    -> Greift evt. ein anderes Program auf die Dateien drauf zu ?


Log in to reply