datei kopierschützen



  • hallölle ^^

    ich hab da mal eine frage
    undzwar versuche ich gerade vergebens eine beliebige datei, so zu schützen, das man sie nich mehr kopieren kann.

    ich versuch gerade sie in meinem prog. zu öffnen also schreib und lese rechte, dann kann man sie zwar nich mehr löschen, aber kopieren geht imma noch!

    es war eig. so gedacht, dass es i-wie draufzugreift, also die datei öffnet, die kopiergeschützt wrden soll ...

    kann mir da einer helfen, bitte????

    dangge vorweg!!!



  • Hallo

    "Kopierschutz" ist sicher ein völlig ungebräuchlicher Begriff...

    bis bald
    akari



  • stimmt, es geht ja auch nur darum, dass anfänger, die keine ahnung von sowas haben, bei dem simplen kopiervorgang von einer datei, einfach eine dicke fehlermeldung bekommen, und zwar die, wo steht, dass diese datei von einem anderen programm genutzt wird (geöffnet)...

    aber kopieren geht bei mir imma noch, auch wenn ich sie zum lesen in meinem prog geöffnet hab!

    help ???



  • freenetuser schrieb:

    aber kopieren geht bei mir imma noch, auch wenn ich sie zum lesen in meinem prog geöffnet hab!

    Und das wird auch immer so bleiben...



  • Hallo

    Mit WinAPI-Mitteln (OpenFile) kannst du mittels Modi OF_SHARE_EXCLUSIVE verhindern das andere Prozeße eine geöffnete Datei ebenfalls ausliest.
    Allerdings ist auch das nur gegen Anfänger und Standardprogramme sicher. Es gibt immer noch Tools die solche Bindungen auflösen können.

    bis bald
    akari



  • danke

    wie muss ich diese OFSTRUCT variable erstellen ???

    hier mein code, geht aba nich:

    LPOFSTRUCT pi;
    OpenFile("C:\\test.wma", pi, OF_SHARE_EXCLUSIVE)
    

    kommtn kernel32.dll fehler!



  • Hallo

    LP... heißt in der WinAPI immer Long Pointer. Das bedeutet das du einen nicht initialisierten Pointer an OpenFile übergibst. Du must natürlich erstmal eine gültige Struktur von OFSTRUCT haben

    OFSTRUCT pi;
    OpenFile("C:\\test.wma", &pi, OF_SHARE_EXCLUSIVE)
    

    Aus dem MSDN-Artikel bleibt allerdings offen ob dieser Parameter für deine Zwecke überhaupt gebraucht wird, eventuell reicht auch einfach 0 zu übergeben.

    Allerdings ist klar das OpenFile veraltet ist und CreateFile benutzt werden sollte.

    ...
    dwShareMode
    ..
    If this parameter is 0 (zero) and CreateFile succeeds, the object cannot be shared and cannot be opened again until the handle is closed. For more information, see the Remarks section of this topic.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in akari aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Du kannst aber auch die TFileStream- Komponente der Borland VCL verwenden:

    [cpp]
    TFileStream* fs = new TFileStream("Datei.dat",fmOpenReadWrite|fmShareExclusive);
    
    // Dein Code
    
    delete fs; //Wenn du die Datei nicht 
    fs = NULL; //mehr schützen möchtest
    [/cpp]
    

Log in to reply