Projekt Ordner: 1.Kopieren, 2.Umbennen, 3.Zugriff verweigern, 4. schicken, 5. Zugriff erlauben



  • Hallo erstmal,

    ich möchte ein Programm in C++ (Betriebssystem WindowsXP) schreiben, dass eine Kopie von einem Ordner erstellt.Das Programm wird lokal auf den Computer gestartet.

    Eigenschaften des Ordners sollen sein:

    1. Vollständige Kopie eines Ordners (z.B Test mit sämtlichen Unterverzeichnissen)
    2. Der Ordner soll einen anderen Namen besitzen
    3. Der Ordner soll für den Benutzer nicht zu öffnen sein
    4. Wenn der Ordner verschickt wird, soll die Person ihn öffnen können.

    Der Plan war, fast alles über die CMD Konsole zu machen, z. B. Kopieren, Umbennenen, Zugriffsrechte vergeben. Das verschicken soll manuell über ICQ o. ä. geschehen. Mein Programmcode bis jetzt:

    //Kopieren der Datei Privat
        //Verschieben dieser Datei in das Verzeichnis C:\MSCQ
        system("Xcopy \"C:\\Dokumente und Einstellungen\\Username\\Eigene Dateien\\Privat\"   \"C:\\MSCQ\" /H /S /Q /I /E /Y");
    
       //Pause
        system("Pause");
        {
    
        //Zugriff verweigern
        system("Cacls C:\MSCQ /P Username:N");
    
       //Pause
        system("Pause");
    

    Zur Erläuterung:

    xcopy Kopiert die Datei "Privat" und bennent diese in "MSCQ" um. Diese Datei wird dann auch gleich in "C:\" gespeichert. (Ob der Ordner "MSCQ" vorhanden ist, spielt erstmal keine Rolle, kann man ja noch mit "mkdir" lösen.)

    Cacls legt die Zugriffsrechte fest, in dem Beispiel "/P Username:N" keine Zugriffsrechte.

    Dass zum Verständnis, nun zu meinem Problem:

    (1. Wenn ich dem "username" keine rechte geben will, muss ich das ja mit "J" bestätigen. Wie kann ich das vermeiden? Dass ich keine Bestätigung mit "J" eingeben muss? (Mein Ansatz war es den buchstaben schreiben lassen "J" und die Eingabetaste in Ascii umzuwandeln und sie dann einbinden. Dann würde das automatisch funktionieren.)

    Wenn man aber keine Zugriffsrechte hat, kann man diese Datei natürlich auch nicht verschicken... Wie kann ich dieses Problem lösen???

    2. Mal angenommen es würde mit dem Cacls funktionieren: Wenn ich das Programm starte wird der Ordner sauber kopiert. Wenn ich aber "J", für die Bestätigung drücken will, veruscht das Programm die Ordner wieder zu Kopieren und ich Kriege eine Fehlermeldung:

    2 Datei(en) kopiert
    Drücken Sie eine beliebige Taste . . .
    Sind Sie sicher (J/N)?j
    Das System kann die angegebene Datei nicht finden.
    Drücken Sie eine beliebige Taste . . .
    

    Warum? Warum macht dass Programm nicht Schritt 1, dann Schritt 2, dann Ende?

    Sorry für den langen Thread, aber das Projekt wird wohl noch etwas dauern und ich wollte gleich alles genau beschreiben.

    Ich bin auch offen für andere Lösungswege, Speziell C++ Orientiert, aber ich muss zugeben viel Ahnung hab ich noch nicht von all dem.

    mfg

    und danke für die Zeit 🙂



  • geht "echo j | Cacls C:\MSCQ /P Username:N" ?



  • //Zugriff verweigern
        system("echo j | Cacls C:\MSCQ /P Username:N");
    

    Leider nein 😞

    2 Datei(en) kopiert
    Drücken Sie eine beliebige Taste . . .
    Sind Sie sicher (J/N)?Drücken Sie eine beliebige Taste . . .

    Das Programm wird anscheinend zu "schnell" ausgeführt. es Sieht zwar so aus, als wäre eine Eingabe gemacht worden, diese wurde aber nicht "regestriert". Also funktioniert nicht.



  • bei mir gehts aber.



  • Ok, hatte einen Fehler drin. Vielen dank 🙂 Bleibt nur noch dass Problem, mit dem schicken dieser Datei? Ohne Zugriff, kann man diese Datei ja nicht schicken und lese-rechte wäre schon zuviel Zugriff...



  • was heißt schicken? wie schicken? wem schicken? wie würde schicken gehen, wenn der user lesen dürfte?
    ups, hab überlesen, wie. per icq. das ist schlecht. icq läuft als user. dann muß die user das auch lesen können. der empfänger am icq (ftp?) hätte eh keine rechte übertragen bekommen, was das lesen-können beim empfänger einfach macht.
    würde der admin die daten verschicken können, wärs einfacher.

    oder vielleicht nicht mit benutzerrechnen machen, sondern mit verschlüsselung und der user kennt das entschlüsselungs-passwort nicht.



  • die datei soll per icq e-mail oder sonst was geschickt werden, deswegen ist die variante mit eingeschränkten rechten eher nicht passend. Was für alternativen gibt es? Passwortfestlegung per Zip? ist das über C++ realisierbar?



  • Loogi schrieb:

    Passwortfestlegung per Zip? ist das über C++ realisierbar?

    das dumme ist, daß der user das passwort aus deiner exe auslesen kann.

    darum schlage ich's so vor:
    baust ein verzeichnis für so sachen und legst da deine *.bat ab, die rar mit passwort aufruft.
    //passwort: 23456
    //quellverzeichnis: C:\\Dokumente und Einstellungen\\Username\\Eigene Dateien\\Privat\
    //archiv: c:\MSQL\bla.rar
    rar a -r -s -m5 -hp123456 c:\MSQL\bla.rar "C:\\Dokumente und Einstellungen\\Username\\Eigene Dateien\\Privat\"

    wichtig ist, daß der user diese *.bat nicht lesen kann. das mache ich so, daß ich ihm einfach die leserechte entziehe. aber starten soll ers können. das mache ich so, indem ich einen "geplanten task" anlege, der das als admin ausführt, und als user mit schtasks anschubse.
    zum beispiel
    schtasks /run /tn sendfiles
    wenn du den task sendfiles nennst.

    wenn der admin auch in sendfiles die sachen verschicken soll, ist ftp wohl am einfachsten.
    dazu haue ich die befehle, die ich in ftp eingeben würde in eine sendfiles.rmt
    open ftp.dort.org
    user ich hegeim
    promt off
    put bla.rar
    bye
    mit ftp -n sendfiles.rmt



  • Hey Vielen Dank 🙂 ich versuch das alles mal und werde mich sehr wahrscheinlich wieder melden 😉 da ich von all dem noch nicht soviel Ahnung hab, aber ich werd mal mein bestes geben, die Themen aufzuarbeiten 🙂 Vielen Dank für die sofortige und vorallem passenden Tipps. So sollte das Programm dann arbeiten.

    Mfg


Anmelden zum Antworten