Koulun koneessa on esto, että Internet Explorerilla ei voi ladata ohjelmia. Ohjelmien suoritus kuitenkin onnistuu. Ymmärtääkseni tällöin ohjelma kopioidaan selaimen välimuistiin pelkän RAM-muistin sijasta.
Tarkoitus olisi saada ohjelmaan toiminto jolla tämä selaimen välimuistissa oleva ohjelma kopioisi itsensä ennalta määritettyyn kohteeseen. Välimuistissa olevan ohjelman polkua ja tiedostonimeä ei tiedetä etukäteen.
Päädyin seuraavanlaiseen pseudokoodiin:
main(){ if(olemassa(kohde) == false){ kopioi(tämätiedosto(), kohde); suorita(kohde); } else{ varsinainen_ohjelma(); } }
Ongelmana on kuitenkin se, mitkä kyseisten funktioiden nimet ovat, mitä niille annetaan parametriksi, ja toimisiko kyseinen menetelmä Internet Explorer 6:n kanssa?
Niin ja kieli on tosiaan C++.
Tuo ei onnistu. Jos onnistuu, kyseessä on vakava tietoturva-aukko.
Sen sijaan asenna (käyttäen omaa konettasi) USB-muistitikulle FireFox-selain (http://www.mozilla-europe.org/fi/products/firefox/). Tämän jälkeen yksinkertaisesti laitat USB-tikun koulun koneeseen ja käynnistät FireFoxin siltä. Voit selata täten nettiä normaalisti ja imuroida ohjelmiakin. Jos imuroit ohjelmia, voit asentaa nekin samalle USB-tikulle, jolloin ne kulkevat kätevästi mukana kotiinkin. Eikä näin tarvitse koodata riviäkään.
Periaatteessa jonkinlainen ohjelman käynnistyskomento on sen ensimmäisessä parametrissa. On siis mahdollista, että tällainen toimii:
#include <cstdlib> #include <cstring> #include <string> using namespace std; int main(int argc, char **argv) { // Funktiolla strstr selvitetään käynnistyskomennosta, onko siinä tietty pätkä. Siis pitää tietää, minne IE ohjelman laittaa. // printf("Komento: '%s'\n", argv[0]); // Debugausta varten, niin voi katsoa sitä komentoa. // Jos vaikka Temp olisi tunnistettava osa komennosta if (argc != 0 && strstr(argv[0], "Temp")) { return 0; string komento = "copy \""; // Ehkei tarvitse \":ta komento += argv[0]; komento += "\" Q:\\jokin_kiva_oma_ohjelma.exe"; // kohde (ja taas \") system(komento.c_str()); // Kopioidaan (toivottavasti) return 0; // Ja loppuu tähän } // Olikin normaali startti tai komentoa ei tiedetty / tunnistettu return 0; }
Metabolix: Eikös tuo ohjelma samantien lopu jos tuo if lause on totta kun sulla on heti perään return 0;
Hys! Se on testi, jolla katsotaan, lukiko ville-v annettua koodia, vai copypastesko vain!
Aihe on jo aika vanha, joten et voi enää vastata siihen.