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