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.