Προς το περιεχόμενο

Προγραμμματάκι για DOS????


eem1kv

Προτεινόμενες αναρτήσεις

Παιδιά θέλω να φτιάξω ένα προγραμματάκι σε DOS που να κάνει delete κάποιοα αρχεία στο PC μου πριν ακόμα φορτωθούν τα Windows XP και να αυτοδιαγράφεται μόλις τελειώσει. Το θέλω για Net cafe να το φορτώνω πριν κλείσω τα PC και να τρέχει στο επόμενο Boot. Υπάρχει κάτι?????? Ευχαριστώ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Από όσο ξέρω τα Windows XP δεν ξεκινάνε από επίπεδο DOS και μετά σηκώνουν το γραφικό περιβάλλον. Αντίθετα αμέσως το πρώτο επίπεδο του λειτουργικού είναι ο πυρήνας των Win.

 

Για παράδειγμα στα Windows 98 κάθε φορά έτρεχαν ένα batch file με όνομα autoexec.bat (αχ, τι θυμήθηκα τώρα). Οπότε ό,τι και να έβαζες εκεί μέσα έτρεχε σε κάθε boot του λειτουργικού.

 

Επιπλέον αν ένα πρόγραμμα τρέχει (για να διαγράψει κάποια άλλα αρχεία) ύστερα δεν μπορεί να κάνει delete τον εαυτό του διότι την στιγμή που πάει να εκτελέσει την διαγραφή του εαυτού του θα διαπιστώσει πως ο εαυτός του τρέχει! Λίγο αντιφατικό λοιπόν. Όχι ότι δεν υπάρχουν τρόποι να γίνουν αλλά δεν νομίζω να γίνεται με υλοποιήση ενός batch file.

 

Για να σου δώσω και μια λύση... μπορείς να γράψεις ένα batch file με τις εντολές που θες να εκτελούνται και να το βάλεις στον φάκελο startup (Start > All Programs > Startup) ενός ή όλων των χρηστών. Έτσι θα τρέχει κάθε φορά ΑΦΟΥ ξεκινήσουν τα Windows και, όπως σου είπα και πιο πάνω, ΔΕΝ θα αυτοδιαγράφει τον εαυτό του.

 

Υ.Γ.: Σε περίπτωση που δεν ξέρεις τι είναι ένα batch file σου λέω πως είναι ένα αρχείο κειμένου το οποίο περιλαμβάνει σειρά εντολών, η μια κάτω από την άλλη όπως ακριβώς θα τις έγραφες στο DOS. Το αρχείο αυτό πρέπει να έχει κατάληξη .bat και θα είναι εκτελέσιμο. Για παράδειγμα...

 

>
@echo off
rmdir /s C:\temp
move C:\backup\system C:\Windows\System

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν υπάρχει πρόβλημα να διαγράψει ένα πρόγραμμα τον εαυτό του, εφόσον πριν εκτελεστεί οτιδήποτε, πρώτα αντιγράφεται στην μνήμη και δημιουργείται η διεργασία του - αν είναι κάποια συσκευή με flash μνήμη ή με NV-RAM ενδέχεται να γίνεται και execute in place, αλλά είναι αλλουνού παπά ευαγγέλιο.

 

Το παρακάτω πρόγραμμα, διαγράφει τον εαυτό του (είναι σε ISO C90):

 

#include <stdio.h>

 

int main(int argc, char *argv[]) {

remove(argv[0]);

return 0;

}

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

"ένα εκτελέσιμο δεν μπορεί να διαγράψει τον εαυτό του": η δυνατότητα υπάρχει, αλλά η πλειονότητα των προγραμμάτων σε Windows χρησιμοποιούν resources από το ίδιο το εκτελέσιμο (εικονίδια κτλ) οπότε το εκτελέσιμο χρησιμοποιείται και δεν μπορεί να διαγραφεί.

 

@eem1kv: Τα XP δεν τρέχουν προγράμματα DOS πριν γίνει η εκκίνησή τους, στα 98/Me κτλ γινόταν αυτό...

 

Τρέχουν όμως προγράμματα console και μπορείς να τα βάλεις π.χ. στο μητρώο, στο HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

 

Συγκεκριμένα, μπορείς να βάλεις εκεί την εντολή "cmd /c del <ότι αρχεία θες να σβήσεις>" οπότε στην επόμενη εκκίνηση θα σβηστούν ΚΑΙ τα αρχεία ΚΑΙ η καταχώρηση από το μητρώο.

 

Επίσης υπάρχει και ένα άλλο κλαδί του μητρώου στο οποίο μπαίνουν τα αρχεία που είναι να σβηστούν στην επόμενη εκκίνηση! Δηλαδή τη δουλειά που θες να κάνεις την υποστηρίζουν εγγενώς τα Windows! Για να μην τα βάζεις χειρωνακτικά στο μητρώο, έχει η sysinternals το πρόγραμμα movefile, που το τρέχεις με command line και τα βάζει στην αντίστοιχη θέση στο μητρώο.

 

>Movefile v1.0 - copies over an in-use file at boot time
usage: movefile [source] [dest]

Specifying an empty destination ("") deletes the source at boot.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...