Morjens
Käytössä XP, ja pitäisi saada ohjelma käyntiin aina kun käyttäjä kirjatuu sisään. Jostain syystä VPN-yhteys sulkeutuu, kun koneen lukitsee (Windows-näppäin + L). When I log on -"ajastus" ei toimi, koska Windows ei laske kirjautumiseksi sitä tilannetta, kun syötetään salasana Windows + L:n jälkeen. Mitä muita vaihtoehtoja? Oman koneen tapauksessa voin asentaa jonkin pienen huomaamattoman ohjelmankin.
Morjens Macro!
Kirjoittele Windows Service, joka pollaa prosessia ja käynnistää tarvittaessa
Terve
Googlettelin tuota hommelia, mutta en oikein löytänyt mitään järkevää ratkaisua. Löysin oppaita, joissa neuvottiin käyttämään erilaisia ohjelmia sen tekoon. Kun taas katsoin näitä ohjelmia, niin ne olivat maksullisia ja trial-versiolla tehdyt servicet lakkaisivat toimimasta trialin loputtua. Joten, ei niistä ainakaan ollut apua.
Microsoftilta löytyy Visual Studio 2005:een paljonkin oppaita siihen, mutta niistä ei ole apua Javan kanssa.
Olisko sulla jotain hyvää jippoa siihen?
Moi Macro!
Imppaa ilmainen SharpDevelop ja rakentele service sillä (vaatii tietty pohjalle .NET Frameworkin)
Osviittaa rakenteluun löytyy täältä, lisäät vaan jutskaan timer systeemin, jossa tutkit näkyykö ohjelmasi prosesseissa ja jos ei näy niin käynnistät prosessin.
Mikäli haluat lähestyä asiaa mieluummin Java näkökulmasta niin täältä voisi olla hyvä alkaa.
Terve taas
Kyllä sen voin tollakin tehdä, ei se ole niin tarkkaa kun omaan käyttöön tulee.
Noudatin noita sun ohjeitas tuolla toisessa keskustelussa, mutta Windowsini sanoo, ettei se tunnistanut installutilia sisäiseksi tai ulkoiseksi komennoksi. Luin asiasta netistä, ja Microsoftin sivulla sanottiin, että sen pitäisi asentua Visual Studion mukana. Asennettuna 2010 Express. Mistä sen pitäisi löytyä, jollei se pathista löydy?
Muokkaus. Löysin sen niinkin jännästä paikasta, kuin C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\
Onkohan tarkoitus, että Notepad aukeaa koodillasi heti käynnistyessä, ja sitten samantien sammuu?
En tuosta timer systeemistä tiedä mitään, en ole pahemmin Basic-kielillä tehnyt mitään. Mitä oikeastaan tuolla servicellä pitäisi tehdä? Sehän suoritetaan samantien Windowsin käynnistyessä, enkä ole keksinyt vielä miten se suoritettaisiin sen käynnistymisen jälkeen. Eihän se nyt niin vaikeaa ole kirjauduttaessa tuplaklikata työpöydällä ikonia, joka käynnistää ohjelmani. Kumminkin jos se toimisi automaattisesti, se nopeuttaisi toimia.
Jos koitetaan korjata ongelmani toisella tavalla, niin onkohan mahdollista jättää VPN-yhteys käyntiin vaikka työasema lukittaisiin (Windows-näppäin + L)?
Moi taas Macro!
Tarkoitus on, että Notepad aukeaa koodillani heti käynnistyessä, eikä sammu samantien!
Elikäs: Tietokoneen hallinta -> Palvelut -> NotepadAutoStart -> Ominaisuudet
Sisäänkirjautuminen välilehti -> Paikallinen järjestelmätili & Palvelu voi käyttää työpöytää
Yleiset välilehti -> Käynnistystapa: Automaattinen
Klikkaa -> Käynnistä -> Käytä & OK -> Boottaa kone.
Nyt jos kerrot ohjelmasi (.exe) nimen, koko tiedostopolun ja nimen, joka näkyy tehtävien hallinnassa Prosessit välilehdellä niin rakentelen sinulle valmiin esimerkin, joka pollaa timerin avulla tasaisin väliajoin pyöriikö ohjelmasi (näkyy prosesseissa) jolloin tapauksessa, että ei pyöri niin palvelu käynnistää sen automaattisesti.
Elikä tehdäänpä niin, että vaihdetaan aihetta ja avaat uuden aiheen QBasic ja Visual Basic-osastossa, kerrot hieman ongelmastasi ja liität kysymykseesi em. tiedot ohjelmasta, jonka pitäisi käynnistää automaattisesti niin ehkäpä muutkin VB'ia harrastavat voivat löytää aiheesta tietoa/kommentoitavaa...
Ohjelmaa ei kyllä ole käännetty exeksi, koska käynnistän sen bat-tiedostolla.
java -jar C:\WINDOWS\VPN.jar
Ohjelma löytyy juurikin tuolta C:\WINDOWS:n alta, ja se jar-tiedoston käynnistävä bat-tiedosto on nimeltään startVPN.bat. Siinä taitaakin olla jo heti ongelma, koska Prosessit-välilehdellä se näkyy java.exenä.
Javan osa ohjelmassa ei ole kummoinenkaan, koska sitä tarvitsin vain verkkosovittimen IP-osoitteen selvittämiseen. Yksinkertaisuudessaan ohjelman toteutus on seuraavanlainen.
1. Tarkistetaan, ettei VPN-yhteys ole käytössä
2. Jos ei ole käytössä, luodaan se (rasdial-komento)
3. Haetaan ppp0-sovittimen IP-osoite
4. Kutsutaan C:\WINDOWS\vpn.bat-tiedostoa VPN:n IP:llä
Postaan tähän vielä sen ohjelmani koodin, se voi olla selventävämpi kuin kuvaukseni.
package vpn; import java.net.*; import java.util.*; public class Main { public static void main(String[] args) { try { NetworkInterface ni = NetworkInterface.getByName("ppp0"); if(ni != null) { if (ni.isUp()) { System.out.println("VPN-yhteys on jo käytössä sovittimessa ppp0. Poistutaan..."); System.exit(0); } } } catch (SocketException ex) { System.out.println(ex + "\nPoistutaan"); System.exit(0); } String VPNIP; Runtime rt = Runtime.getRuntime(); try { Process pr = rt.exec("rasdial Koti tunnus salasana"); pr.waitFor(); VPNIP = VPNIP(); if(VPNIP != null) { try { System.out.println("Suoritetaan (r. 70): cmd /c start C:\\WINDOWS\\vpn.bat " + VPNIP); Process pr2 = rt.exec("cmd /c start C:\\WINDOWS\\vpn.bat " + VPNIP); pr2.waitFor(); System.out.println("pr2.exitValue = " + pr2.exitValue()); } catch(Exception e) { System.out.println(e); } } else { System.out.println("Virhe."); System.exit(0); } } catch (Exception ex) { System.out.println(ex); } try { if ((NetworkInterface.getByName("ppp0")).isUp()) { System.out.println("Yhteys on käytössä. Poistutaan..."); System.exit(0); } } catch (SocketException ex) { System.out.println("Virhe: " + ex + "\nPoistutaan..."); System.exit(0); } } public static String VPNIP() { String ip = null; NetworkInterface e = null; try { e = NetworkInterface.getByName("ppp0"); System.out.println("VPNIP:getByName(): " + NetworkInterface.getByName("ppp0")); if(e != null) { if(e.isUp()) { Enumeration<InetAddress> inetAddresses = e.getInetAddresses(); while(inetAddresses.hasMoreElements()) { ip = ((InetAddress) inetAddresses.nextElement()).toString(); System.out.println(ip); } } else { System.out.println("e.isUp(): " + e.isUp()); } } } catch (Exception ex) { System.out.println(ex); } return (ip != null) ? ip.replace("/", "") : null; } }
Kiitos jos viitsit auttaa sen VB-puolen kanssa, ei ole ihan selvää asiaa minulle.
Moi taas Macro!
Voit impata täältä valmiin VB.NET (SharpDevelop) projektin.
Moi!
Kiitos, toi toimikin tosi hienosti!
Tällä ei saakkaan VPN-yhteyttä sitten ollenkaan poikki, mutta sehän onkin tuon oman ohjelmani vika. Pitää luoda jokin systeemi sinne, ettei ota yhteyttä automaattisesti jos olen sen käsin katkaissut.
Moi taas Macro!
saat sen yhteyden poikki pysäyttämällä servicen ja asettamalla käynnistystavaksi manual
Terve
Joo, tiedän. Sitten se kyllä on ihan sama onko serviceä ollenkaan, koska onnistuu VPN-yhteyden käynnistäminen klikkaamalla task barin yhdistä-ikonia.
Sen verran taidan tossa viritellä, että saan asetettua tuon ohjelmasi nukkumaan halutun ajan - jos se nyt onnistuu minulta.
Moi taas Macro!
Servicen tarkoituksena ei alkuun ollutkaan estää VBN-yhteyden käynnistymistä, mutta jos haluta sen tekevän eston niin lisää OnStop proceduurin koodin perään koodinpätka, joka muuttaa startVPN.bat tiedoston nimen esim. xstartVPN.bat ja OnStart proceduurin alkuun koodinpätkä joka tsekkaa löytyykö xstartVPN.bat ja jos löytyy niin nimeää tiedoston takaisin startVPN.bat
Tsekkaan miten sen teen, kiitos sulle avusta.
Moi taas Macro!
Mikäli sattuisi tökkimään niin lataa parin edellisen viestin takaisesta linkistä valmis projekti, joka sisältää edellisessä viestissäni kuvailemani toiminnot.
MUISTA PYSÄYTTÄÄ PALVELU ENNEN POISTOA JA UUDEN VERSION ASENNUSTA
Moi taas Macro!
Mikäli sinua tai muita kiinnostaa niin muutaman edellisen viestin takaisesta linkistä voi ladata .zip paketin, joka sisältää hieman uutta aiheeseen liittyvän Windows palvelun hallintaa helpottavaa kamaa...
Jos tuossa kattelen Windows 7 omaa "Tehtävien ajoitus" sovellusta, niin näkyy olevan ihan sopivia käynnistimiä. Käynnistimen ehtoina voi olla mm. "Työaseman lukitusta poistettaessa", "Käyttäjän istuntoa yhdistettäessä", "Kirjauduttaessa sisään".
Sen voi myös käynnistää ajoitetusti tietyin välein jos olettaa että sovellus ei anna itsensä olevan käynnissä kahta kertaa.
Sitten on vähän kryptisempi "Tapahtuman yhteydessä", josta ei ota selvää...
Aihe on jo aika vanha, joten et voi enää vastata siihen.