Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* Accesso temporizzato
Nuovo argomento   Rispondi    Indice del forum -> Windows XP e Reperti Archeologici
Precedente :: Successivo  
Autore Messaggio
uffa14
Eroe
Eroe


Registrato: 27/09/07 11:53
Messaggi: 47
Residenza: Rimini

MessaggioInviato: 02 Set 2008 17:41    Oggetto: * Accesso temporizzato Rispondi citando

Ciao,
Sto cercando di fare in modo che quando i miei figli usano il computer non possano farlo per più di un'ora. Per evitare discussioni, ho creato un batch che schedula lo spegnimento all'ora che desidero (il mio profilo è admin, il loro no!).
Sto cercando di automatizzare la cosa, ho creato uno script in avvio automatico che, dopo avere verificato il profilo, lancia lo shutdown a 3600 secondi (un'ora!).
Il primo problema era lanciare il "runas" l'ho risolto con un programmino "sanur" che consente di inserire la password nel batch (è in chiaro ma pazienza).
La cosa ha funzionato bene nelle prove.
chido il mio account, accedo con quello del figlio e parte lo shutdown.
però se appena accendo il pc entro con l'utente dei bambini lo script rimane congelato....

Qualcuno capisce perchè?

ecco lo scritp:
===========go.bat================
@echo off
cls
RunAs /utente:dominio\utente /env c:\apri.bat | sanur password
==================================

==============apri.bat============
@echo off
: genero la stringa nome+data
set nome=%username%%date:~6,4%%date:~3,2%%date:~0,2%

:verifico che non sia il mo utente
if %username% == utenteadmin goto fine

:se non esite il file nome+data salto, altrimenti chiudo subito
if not exist %nome% goto dopo

shutdown -s -f -t 180 -c "hai giocato abbastanza"

"C:\Programmi\Internet Explorer\iexplore.exe" c:\abbastanza.html

goto fine
:genero il file nome+data e attivo lo shutdown
:dopo
echo %nome% > c:\%nome%
shutdown -s -f -t 3600 -c "hai un'ora di tempo!!"
"C:\Programmi\Internet Explorer\iexplore.exe" c:\unora.html

:fine

:chiudi
======================================
Top
Profilo Invia messaggio privato
chemicalbit
Dio maturo
Dio maturo


Registrato: 01/04/05 18:59
Messaggi: 18597
Residenza: Milano

MessaggioInviato: 02 Set 2008 19:24    Oggetto: Rispondi citando

Proviamo a vedere in quale dei due file è il problema:

sposta apri.bat in apri2.bat

E crea un apri.bat con scritto solo
Codice:
@echo Prova


uffa14 ha scritto:
La cosa ha funzionato bene nelle prove.
chido il mio account, accedo con quello del figlio e parte lo shutdown.
Ma le prove come hai fatto a farle?


sanur come funziona?
Vedo che hai fatto un pipe in cui passi l'output di runas come input di sanur
Top
Profilo Invia messaggio privato
uffa14
Eroe
Eroe


Registrato: 27/09/07 11:53
Messaggi: 47
Residenza: Rimini

MessaggioInviato: 03 Set 2008 08:16    Oggetto: Rispondi citando

chemicalbit ha scritto:

E crea un apri.bat con scritto solo
Codice:
@echo Prova


Buona idea, ho anche messo un pause sia nel go.bat che in apri.bat.
Poi non ho potuto continuare Sad

chemicalbit ha scritto:

uffa14 ha scritto:
La cosa ha funzionato bene nelle prove.
chido il mio account, accedo con quello del figlio e parte lo shutdown.
Ma le prove come hai fatto a farle?

Lanciando go.bat dal profilo amministrativo: ok,
entrando nel profilo user e lanciando go.bat manualmente: ok,
inserendo go bat in avvioautomatico e loggandomu nel profilo user:ok
riavviando il pc ed entrando sul profilo user: si è bloccato!

chemicalbit ha scritto:

sanur come funziona?
Vedo che hai fatto un pipe in cui passi l'output di runas come input di sanur


L'ho trovato con una googolata, serve appunto a rendere *scriptabile" il runas.

Ora sono al lavoro, spero di poter fare dei test stasera.
Top
Profilo Invia messaggio privato
grifone1900
Dio maturo
Dio maturo


Registrato: 21/05/08 14:50
Messaggi: 1397
Residenza: roma

MessaggioInviato: 03 Set 2008 10:18    Oggetto: Rispondi citando

è molto probabile che sia un problema di autorizzazioni da lo stesso problema degli aggiornamenti di windows che con admin funge senza no controlla che nelle proprietà del file bat sia impostato everyone
Top
Profilo Invia messaggio privato MSN
uffa14
Eroe
Eroe


Registrato: 27/09/07 11:53
Messaggi: 47
Residenza: Rimini

MessaggioInviato: 03 Set 2008 18:42    Oggetto: adesso funziona!! Rispondi citando

ho rifatto le prove con calma, e lo script parte correttamente anche accedendo con l'utente non admin all'accensione.
L'unica cosa è che ovviamente la finestra del dos non si può nascondere, e credo basta che venga chiusa per bloccare la procedura Sad

La mia idea in origine era quella di lanciarlo dal regedit, (windows/currentversion/run) ma non sono sicuro che in quel momento il sistema sappia chi si sta loggando!!

Un'altra idea era quella di un eseguibile (magari vb) avviato come servizio che verifica chi è loggato e lo butta fuori al momento giusto...
Top
Profilo Invia messaggio privato
grifone1900
Dio maturo
Dio maturo


Registrato: 21/05/08 14:50
Messaggi: 1397
Residenza: roma

MessaggioInviato: 03 Set 2008 22:27    Oggetto: Rispondi citando

scusa ma se sul file bat creato dai autorizzazioni amministrative?? come regola non possono chiuderlo...
Top
Profilo Invia messaggio privato MSN
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 05 Set 2008 02:38    Oggetto: Re: Accesso temporizzato Rispondi citando

uffa14 ha scritto:
Ciao,
Sto cercando di fare in modo che quando i miei figli usano il computer non possano farlo per più di un'ora.

Applause complimenti, ottima scelta Applause

uffa14 ha scritto:

chiudo il mio account, accedo con quello del figlio e parte lo shutdown.
però se appena accendo il pc entro con l'utente dei bambini lo script rimane congelato....

Qualcuno capisce perchè?

probabilmente perché è in esecuzione solo nel tuo registro.
[nelle opzioni avanzate delle proprietà del file occorre concedere l'accesso, almeno in lettura, a Everyone]

Comunque:
ho scritto una procedura e le istruzioni per la sua applicazione che dovrebbe risolverti il problema.


Codice:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html Lang= "it">
   <head>
      <title>
      Controllo Permanenza a PC
      </title>
    <HTA:APPLICATION
         Id="HTACtrl"
         SysMenu="no"
         Showintaskbar="no"
    >
    <script type="text/vbscript" language="VBScript">
      option explicit

' * ============================================================================
' *                      INTERVENTI di PERSONALIZZAZIONE
' * ----------------------------------------------------------------------------
' *
' * ------------------------------------------------------------
' *                       Personalizza mappa esposta
' * ------------------------------------------------------------
    ILarghezza = 800
    iAltezza = 220
    iLeft = 0
    iTop = 0
' * ------------------------------------------------------------

' * ------------------------------------------------------------
' *                       Personalizza Messaggi
' * ------------------------------------------------------------
    sMessaggioIniziale = "<br><center><font size='24'>" _
                       & "Attenzione:<br>Hai tempo UN'ORA per giocare" _
                       & "</font></center>"
    sMessaggioFinale = "<br><br><center><font size='28'>" _
                     & "Hai giocato abbastanza" _
                     & "</font></center>"

    sTestoAlternativoAltriUtenti = "<br><center><font size='24'>" _
                                 & "Buon Lavoro"

' * ------------------------------------------------------------

' * ------------------------------------------------------------
' *                       Personalizza Tempi
' * ------------------------------------------------------------
     '* i valori devono essere espressi in millesimi di secondo
      lTempoPermanenzaMappaIniziale = 3000
      lTempoPermanenzaTotale = 5000
      lTempoPermanenzaMappaFinale = 2000
     
     '* i valori devono essere espressi in secondi
      lTempoDiShutdown = 10
' * ------------------------------------------------------------
' * ============================================================================

      dim oShell
      Dim oNetwork

      dim sUserDaControllare
      dim sUserRilevato
      dim sMessaggioIniziale
      dim sMessaggioFinale
      dim sTestoAlternativoAltriUtenti
      dim sCmdShut
      dim sTmp

      dim avArgs

      dim iLeft
      dim iTop
      dim iLarghezza
      dim iAltezza
      dim iLeftRil
      dim iTopRil

      dim idTimer1
      dim idTimer2
      dim idTimer3

      dim lTempoPermanenzaMappaIniziale
      dim lTempoPermanenzaTotale
      dim lTempoPermanenzaMappaFinale
      dim lTempoDiShutdown

      set oShell = createobject("WScript.Shell")
      avArgs = htaCmdLineToArray (HTACtrl.commandline)

      Set oNetwork = CreateObject("WScript.Network")
      sUserRilevato = oNetwork.UserName

      sub Window_OnLoad
        window.resizeTo iLarghezza,iAltezza
        window.moveTo iLeft,iTop
        sTmp = "<b>Oggi:" _
             & FormatDateTime(now,1) _
             & " sono le:" _
             & FormatDateTime(now,3) _
             & "</b><br>"
        If ubound(avArgs) = 0 Then
          sUserDaControllare = ""
        else
          sUserDaControllare = avArgs(1)
        end if
        if not trim(ucase(sUserRilevato)) = trim(ucase(sUserDaControllare)) then
          document.body.innerHTML = sTmp _
                                  & sTestoAlternativoAltriUtenti _
                                  & sUserRilevato _
                                  & "</font></center>"
          idTimer1 = window.setTimeout("StopMe", _
                                       lTempoPermanenzaMappaIniziale, _
                                       "VBScript" _
                                      )
        else
          document.body.innerHTML = sTmp & sMessaggioIniziale
          idTimer1 = window.setTimeout("HideWindow", _
                                       lTempoPermanenzaMappaIniziale, _
                                       "VBScript" _
                                      )
        end if
      end sub
     
      sub StopWorkVBS
        window.clearTimeout(idTimer3)
       
' * ============================================================================
' *                      INTERVENTI di PERSONALIZZAZIONE
' * ----------------------------------------------------------------------------
' * Per effettuare le prove di visualizzazione e non dover riaccendere il siste-
' * ma ogni volta, porre un  apice  semplice  all'inizio delle  due righe sotto-
' * stanti; quando la visualizzazione  è  soddisfacente,   togliendo i due apici
' * posti a  inizio  riga  il  sistema  si  spegnerà  nei  tempi  previsti.
' * -----------------------------------------------------------------------------
'         sCmdShut ="shutdown -s -f -t " & lTempoDiShutdown
'         oShell.run sCmdShut,,true
' * ============================================================================

        window.close
      end sub

      Sub HideWindow
        iLeftRil = window.screenLeft
        iTopRil = window.screenTop
        window.moveTo -2000,-2000
        window.clearTimeout(idTimer1)
        idTimer2 = window.setTimeout("ShowWindow", _
                                     lTempoPermanenzaTotale, _
                                     "VBScript" _
                                    )
      End Sub

      Sub ShowWindow
        window.moveTo iLeftRil,iTopRil
        window.clearTimeout(idTimer2)
        sTmp = "<b>Oggi:" _
             & FormatDateTime(now,1) _
             & "</b><br>"
        document.body.innerHTML = sTmp & sMessaggioFinale
        idTimer3 = window.setTimeout("StopWorkVBS", _
                                      lTempoPermanenzaMappaFinale, _
                                      "VBScript" _
                                    )
      End Sub
     
      sub StopMe
        window.clearTimeout(idTimer1)
        window.close
      end sub

      Function htaCmdLineToArray (strCmdLine)
        dim re
        dim args()
        dim matches
        dim su
        dim i
        set re = New RegExp
        re.pattern = "((?!""([^""]+)"")\b(\S+)\b|""([^""]+)"")"
        re.global = true
        set matches = re.execute(strCmdLine)
        Redim args(matches.count -1)
        for i=0 to matches.count - 1
          set su = matches(i).submatches
          args(i) = su(2) & su(3)
        next
        htaCmdLineToArray = args
      End Function
    </script>
   </head>
   <body>
    </body>
</html>


copia e incolla il codice proposto nel blocco note.
salvalo in una cartella di tua scelta, con il nome che vuoi e con estensione .hta, poi segui le istruzioni sottostanti.

GrayWolf, per spiegare, ha scritto:

Cos'è
Gli script con estensione hta usufruiscono della potenza dell'html
hta infatti sta per HTml for Application.
Costituisce l'interfaccia off-line per i linguaggi di scripting come VBScript e Javascript.

Come funziona
Il programma fa apparire una mappa con un messaggio iniziale, dopo il login.
La mappa permane per il tempo indicato nelle personalizzazioni.
Se l'utente indicato come parametro associato al programma, è lo stesso che ha
effettuato l'accesso, la mappa "sparisce" per riapparire allo scadere del periodo
[sempre indicato nelle personalizzazioni].
Entrambe le mappe possono avere messaggi diversi come avviene nel codice esposto.
All'apparire della seconda mappa, è innescato lo shutdown del sistema che avverrà
in tempo ragionevole [personalizzabile] da permettere all'utente di salvare il lavoro.
ATTENZIONE: lo shutdown è irreversibile [non si può annullare] usare quindi dei
valori accettabili.
Se l'utente non è quello segnalato come "da controllare" [parametro nella riga di lancio]
appare solo la prima mappa con un messaggio augurale.


Come si personalizza
nella sezione personalizzazioni ogni parametro ha un nome significativo,
per i valori a stringa [messaggi] TUTTO il messaggio deve essere racchiuso fra
doppi apici, nella stringa quindi possono essere presenti, qualora fossero necessari, solo apici singoli.
Nelle stringhe di messaggio è possibile includere tag html.
I valori numerici devono essere espressi senza delimitatori.

Nel codice proposto, è presente una seconda sezione di personalizzazione:
la parte in cui è effettuato lo shutdown, si consiglia di lasciare le due righe
commentate finchè non si è soddisfatti del contenuto dei messaggi.
Per effettuare le prove, il codice proposto ha tempi molto "bassi" per agevolare
una ripetizione veloce fino al raggiungimento del risultato voluto.
Raggiunto l'obiettivo i tempi devono essere modificati:
lTempoDiPermanenzaTotale = 3600000 corrisponde a un'ora. [nell'esempio è di 5 secondi]

Come si richiama
Il codice proposto è un eseguibile a tutti gli effetti.
Il suo richiamo, quindi, può avvenire secondo le regole di Windows:
shortcut sul desktop o in esecuzione automatica o in una cartella del menu start.
La natura particolare del problema però impone:
.1 che non sia manipolabile dall'utente controllato [blocco, cancellazione]
.2 che sia eseguibile per tutti gli utenti
Per ottenere questi risultati la cosa più conveniente è di creare una chiave di registro:
aprire regedit
posizionarsi su HKEY-LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curren Version\Run
in questa cartella creare un valore a stringa con un nome riconoscibile e che come contenuto
abbia il percorso completo del file con estensione hta seguito dal nome dell'utente che si vuole controllare.
esempio:
valore = ControlloTempo
contenuto = unità:\cartella_degli_script\CtrlTmp.hta ambarabacicicòcò
dove ambarabacicicòcò è l'username che si vuole controllare.


ooops mi sono accorto solo ora che hai parlato di figli [plurale].
La procedura [per ora] prevede il controllo su un solo utente.
Se la cosa ti funziona e lo credi necessario, vedrò di apportare le modifiche affinché si possano controllare più utenti.

Il codice proposto emette i messaggi che volevi:
"Hai un'ora per giocare"
e
"Hai giocato abbastanza"


PS per gli utenti di Windows 2000:
shutdown.exe non è incorporato nel sistema,
Occorre estrarlo dal ResurceKit o scaricarlo dalla rete [attenzione deve essere quello di 19K (19456 bytes)]
e salvarlo in C:\WINNT\System32.


edit by Graywolf
modificati alcuni refusi nel codice

ri-edit
se qualcuno avesse copiato il codice PRIMA delle 12.00 del 5.9.2008
può avere qualche problema; consiglio di ri-copiare il codice attuale [ultima versione funzionante con un utente]
Top
Profilo Invia messaggio privato
ioSOLOio
Amministratore
Amministratore


Registrato: 12/09/03 19:01
Messaggi: 16342
Residenza: in un sacco di...acqua

MessaggioInviato: 05 Set 2008 14:30    Oggetto: Rispondi citando

ecco il solito Lupacchione ... Mr. Green

ottimizzato come sempre.... Wink
Top
Profilo Invia messaggio privato
uffa14
Eroe
Eroe


Registrato: 27/09/07 11:53
Messaggi: 47
Residenza: Rimini

MessaggioInviato: 09 Set 2008 01:07    Oggetto: Re: Accesso temporizzato Rispondi citando

GrayWolf ha scritto:


copia e incolla il codice proposto nel blocco note.
salvalo in una cartella di tua scelta, con il nome che vuoi e con estensione .hta, poi segui le istruzioni sottostanti.


Cos'è
Gli script con estensione hta usufruiscono della potenza dell'html
hta infatti sta per HTml for Application.
Costituisce l'interfaccia off-line per i linguaggi di scripting come VBScript e Javascript.

Come funziona

GrayWolf... che dire sei gentilissimo, non conoscevo hta ma partendo dal tuo script penso che inizierò subito a studiarlo!!

Il mio misero Sad batch tra l'altro funzionava a singhiozzo,,, a volte tutto ok ma la maggior parte delle volte bloccato con il messaggio "unable to locate a runas process" mi viene il dubbio che lo script partisse prima che il servizio runas (sarà un servizio???) fosse attivo,

Ti farò sapere come funziona!
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 09 Set 2008 11:45    Oggetto: Re: Accesso temporizzato Rispondi citando

uffa14 ha scritto:

GrayWolf... che dire sei gentilissimo, non conoscevo hta ma partendo dal tuo script penso che inizierò subito a studiarlo!!

De nada hombre Smile
tieni comunque presente il connubio HTML+VBScript/Javascript

uffa14 ha scritto:

Il mio misero Sad batch tra l'altro funzionava a singhiozzo,,, a volte tutto ok ma la maggior parte delle volte bloccato con il messaggio "unable to locate a runas process" mi viene il dubbio che lo script partisse prima che il servizio runas (sarà un servizio???) fosse attivo

runas è un eseguibile che trovi in windows_dir\system32
probabilmente i permessi utente negano l'accesso agli eseguibili in tale dir perchè:
Citazione:

UTILIZZO RUNAS [estratto da W2K]:

RUNAS [/profile] [/env] [/netonly]/utente:<nome utente> applicazione

/profile se il profilo utente deve essere caricato
/env per utilizzare l'ambiente corrente invece di quello dell'utente.
/netonly se le credenziali specificate sono solo per accesso remoto.
/utente <nome utente> nella forma UTENTE@DOMINIO o DOMINIO\UTENTE
program riga di comando per EXE. Vedere sotto gli esempi

Esempi:
> runas /profile /utente:computerlocale\amministratore cmd
> runas /profile /env /utente:dominiolocale\admin "mmc %windir%\system32\dsa.msc"
> runas /env /utente:utente@dominio.microsoft.com "notepad \"my file.txt\""

NOTA: immettere la password utente solo su richiesta.
NOTA: UTENTE@DOMINIO non è compatibile con /netonly.

teoricamente potrebbe essere possibile lanciare, con runas, un eseguibile maligno o di installazione, non permesso a chi non è amministratore.

Se il richiamo lo metti [come da istruzioni] in HKLM... entra in funzione per TUTTI gli utenti e dopo il login [verificato su W2K, ma in XP dovrebbe comportarsi nello stesso modo]

uffa14 ha scritto:

Ti farò sapere come funziona!

Bien, yo atiendo Smile
Top
Profilo Invia messaggio privato
danielegr
Dio maturo
Dio maturo


Registrato: 04/05/05 09:54
Messaggi: 2277
Residenza: 43 54 26,81N 7 56 25,35E Altitudine 184 m.

MessaggioInviato: 09 Set 2008 13:02    Oggetto: Rispondi citando

Scusate l'intervento da utonto totale: ma il ragazzino, dopo che gli è apparso il messaggio "hai giocato abbastanza" non potrebbe spegnere il PC, riaccenderlo e farsi un'altra oretta di gioco?
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 09 Set 2008 13:12    Oggetto: Rispondi citando

Bella lì danielegr!! Applause

Think dovrò pensare a come controllare anche gli accessi per data Think

certo è che se vigesse la regola: "a letto dopo carosello" non ci sarebbe la necessità di tale controllo Smile

poi... durante l'ora di gioco potrebbe essere possibile modificare la data del sistema e quindi poter giocare altre ore [ogni volta un giorno avanti e l'ultima alla data originale, ma così si sarebbe "fregato" per i giorni successivi, il problema non cambierebbe [con un lasso di tempo superiore] se cambiasse il mese o addirittura l'anno...
Think mumble, mumble... mi studierò qualcosa Think
Top
Profilo Invia messaggio privato
ioSOLOio
Amministratore
Amministratore


Registrato: 12/09/03 19:01
Messaggi: 16342
Residenza: in un sacco di...acqua

MessaggioInviato: 10 Set 2008 20:55    Oggetto: Rispondi citando

GrayWolf ha scritto:

poi... durante l'ora di gioco potrebbe essere possibile modificare la data del sistema

eh no...un utente limitato col cavolo che va a toccarmi la data di sistema. Wink

per il riavvio invece....te tocca pensà!!
Top
Profilo Invia messaggio privato
uffa14
Eroe
Eroe


Registrato: 27/09/07 11:53
Messaggi: 47
Residenza: Rimini

MessaggioInviato: 10 Set 2008 23:58    Oggetto: Rispondi citando

ioSOLOio ha scritto:
GrayWolf ha scritto:

poi... durante l'ora di gioco potrebbe essere possibile modificare la data del sistema

eh no...un utente limitato col cavolo che va a toccarmi la data di sistema. Wink

per il riavvio invece....te tocca pensà!!


Infatti ci ho pensato.. potrò mica pretendere di trovare i programmi pronti su misura!!

soluzione semplice, non troppo fine ma funzionale.

creo un textfile con il nome dell'utente, dentro ci metto la data di sistema, se quando gira lo script il file non c'è lo cre se la data non è quella odierna lo cancello e lo ricreo, se la data è quella odierna lo butto fuori!!

I Figli non possono modificare la data di sistema naturalmente Very Happy

un'altra piccola modifica, visto che i figli sono due, lancio il programma con due parametri, e poi controllo utente1 e utente2 (poco fine vero? non ho avuto voglia di scandire l'array Embarassed )

comunque ecco il codice che ho prodotto....
Codice:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html Lang= "it">
   <head>
      <title>
      Controllo Permanenza a PC
      </title>
    <HTA:APPLICATION
         Id="HTACtrl"
            SysMenu="no"
            Showintaskbar="no"           
    >
    <script type="text/vbscript" language="VBScript">
      option explicit

' * ============================================================================
' *                      INTERVENTI di PERSONALIZZAZIONE
' * ----------------------------------------------------------------------------
' * ------------------------------------------------------------
' *                       Personalizza mappa esposta
' * ------------------------------------------------------------
    ILarghezza = 800
    iAltezza = 220
    iLeft = 0
    iTop = 0
' * ------------------------------------------------------------

' * ------------------------------------------------------------
' *                       Personalizza Messaggi
' * ------------------------------------------------------------
    sTagMsg1 = "<br><center><font size='24'>"
    sTagMsg2 =  "</font></center>"
    sMsgIniz =  "Attenzione:<br>Hai tempo UN'ORA per giocare"
                       
    sMsgFine =  "Hai giocato abbastanza"

    sMsgBabbo =  "Buon Lavoro!! "

' * ------------------------------------------------------------

' * ------------------------------------------------------------
' *                       Personalizza Tempi
' * ------------------------------------------------------------
     '* i valori devono essere espressi in millesimi di secondo
      lTempoPermanenzaMappaIniziale = 3000
      lTempoPermanenzaTotale = 120000
      lTempoPermanenzaMappaFinale = 3000
     
     '* i valori devono essere espressi in secondi
      lTempoDiShutdown = 10
     
      ' * carico oggi con la data di sistema
      sOggi = FormatDateTime(now,2)
      '' msgbox("oggi:" & sOggi)
' * ------------------------------------------------------------
' * ============================================================================

      dim oShell
      Dim oNetwork

      dim sUserDaControllare
      dim sUserDaControllare1
      dim sUserDaControllare2
      dim sUserRilevato
      dim sMsgIniz
      dim sMsgFine
      dim sMsgBabbo
      dim sTagMsg1
      dim sTagMsg2
 
 
      dim sCmdShut
      dim sTmp
 
      dim avArgs

      dim iLeft
      dim iTop
      dim iLarghezza
      dim iAltezza
      dim iLeftRil
      dim iTopRil

      dim idTimer1
      dim idTimer2
      dim idTimer3

      dim lTempoPermanenzaMappaIniziale
      dim lTempoPermanenzaTotale
      dim lTempoPermanenzaMappaFinale
      dim lTempoDiShutdown


      dim sOggi
       
      set oShell = createobject("WScript.Shell")
      'mio salvo i parametri in array'
      avArgs = htaCmdLineToArray (HTACtrl.commandline)

      'mio rilevo utente'
      Set oNetwork = CreateObject("WScript.Network")
      sUserRilevato = oNetwork.UserName

      'mio al caricamento della pagina'
      sub Window_OnLoad
        'mio dimensinono la finestra'
        window.resizeTo iLarghezza,iAltezza
        window.moveTo iLeft,iTop
        'mio salvo data e ora'
        sTmp = "<b>Oggi:" _
             & FormatDateTime(now,1) _
             & " sono le:" _
             & FormatDateTime(now,3) _
             & "</b><br>"
             
        'mio verifico i parametri'
        If ubound(avArgs) = 0 Then
          sUserDaControllare1 = ""
          sUserDaControllare2 = ""
        else
          sUserDaControllare1 = avArgs(1)
          sUserDaControllare2 = avArgs(2)
        end if
       
       
        ' msgbox(sUserDaControllare)
        'mio se utente rilevato NON corrisponde ad un parametro auguro buon lavoro e termino'
        if not trim(ucase(sUserRilevato)) = trim(ucase(sUserDaControllare1)) and not trim(ucase(sUserRilevato)) = trim(ucase(sUserDaControllare2)) then

          ' msgbox(trim(ucase(sUserRilevato)) + " " + sUserDaControllare)
          document.body.innerHTML = sTmp _
                                  & sMsgBabbo _
                                  & " " & sUserRilevato _
                                      & "</font></center>"
          idTimer1 = window.setTimeout("StopMe", _
                                       lTempoPermanenzaMappaIniziale, _
                                       "VBScript" _
                                      )
        else
          'mio se è utente da controllare gli dico hai unora'       
         
         
          'mio QUI INSERIRE CODICE'
        ' se esiste già il file dell'utente verifico se è di oggi.
        ' altrimenti lo creo
        ' msgbox("sUserRilevato:" & sUserRilevato) 
        if  ChkUserFile(sUserRilevato) then
            ' msgbox("esiste gia il file dell'utente")
            if chkOggi(sUserRilevato) then
                      'se nel file dell'utente ho la data di sOggi, TempoPermanenzaTotale diventa 3 minuti
 
                sMsgIniz =  "Hai già avuto la tua ora di computer!!"
                lTempoPermanenzaTotale = 3000
            else
                CancUserFile(sUserRilevato)
                CreaUserFile(sUserRilevato)
            end if
        else
              ' msgbox("non esiste  il file dell'utente.. lo creo")
               CreaUserFile(sUserRilevato)
        end if
          document.body.innerHTML = sTmp & sTagMsg1 & sUserRilevato & " "  & sMsgIniz & sTagMsg2
       
          idTimer1 = window.setTimeout("HideWindow", _
                                       lTempoPermanenzaMappaIniziale, _
                                       "VBScript" _
                                      )
        end if
      end sub
' * ============================================================================
' * StopWorkVBS
' * spegne il sistema
' * ----------------------------------------------------------------------------
     
      sub StopWorkVBS
      ' msgbox("fine lavoro")
              window.moveTo iLeftRil,iTopRil
          document.body.innerHTML = "spengo"
        window.clearTimeout(idTimer3)
       ' msgbox("hai visto spengo?")
' * ============================================================================
' *                      INTERVENTI di PERSONALIZZAZIONE
' * ----------------------------------------------------------------------------
' * Per effettuare le prove di visualizzazione e non dover riaccendere il siste-
' * ma ogni volta, porre un  apice  semplice  all'inizio delle  due righe sotto-
' * stanti; quando la visualizzazione  è  soddisfacente,   togliendo i due apici
' * posti a  inizio  riga  il  sistema  si  spegnerà  nei  tempi  previsti.
' * ----------------------------------------------------------------------------
' * utilizzo logoff al posto di shutdown perche i bimbi non sono admins!!
' * ----------------------------------------------------------------------------

''         sCmdShut ="shutdown -s -f -t " & lTempoDiShutdown
         sCmdShut ="logoff"
         oShell.run sCmdShut,,true
         

' * ============================================================================

        window.close
      end sub
     
' * ============================================================================
' * HdeWindow
' * nasconde la finestra e lancia showwindows dopo l'attesa totale
' * ----------------------------------------------------------------------------

      Sub HideWindow
        iLeftRil = window.screenLeft
        iTopRil = window.screenTop
        window.moveTo -2000,-2000
        'window.moveTo +300, +400
        window.clearTimeout(idTimer1)
        idTimer2 = window.setTimeout("ShowWindow", _
                                     lTempoPermanenzaTotale, _
                                     "VBScript" _
                                    )
      End Sub


' * ============================================================================
' * ShowWindow
' * mstra la finestra e lancia StopWorkVBS che spegne il pc dopo l'attesa di mappafinale
' * ----------------------------------------------------------------------------

      Sub ShowWindow
        window.moveTo iLeftRil,iTopRil
        window.clearTimeout(idTimer2)
        sTmp = "<b>Oggi:" _
             & FormatDateTime(now,1) _
             & "</b><br>"
        document.body.innerHTML =  sTmp & sTagMsg1 & sUserRilevato & " "  & sMsgFine & sTagMsg2
        idTimer3 = window.setTimeout("StopWorkVBS", _
                                      lTempoPermanenzaMappaFinale, _
                                      "VBScript" _
                                    )
      End Sub
     
' * ============================================================================
' * StopMe
' * chiude il programma
' * ----------------------------------------------------------------------------
     
      sub StopMe
        window.clearTimeout(idTimer1)
        window.close
      end sub
' * ============================================================================
' * htaCmdLineToArray
' * spezza il parametro in ingresso in un array in base agli spazi
' * ----------------------------------------------------------------------------
      Function htaCmdLineToArray (strCmdLine)
        dim re
        dim args()
        dim matches
        dim su
        dim i
        set re = New RegExp
        re.pattern = "((?!""([^""]+)"")\b(\S+)\b|""([^""]+)"")"
        re.global = true
        set matches = re.execute(strCmdLine)
        Redim args(matches.count -1)
        for i=0 to matches.count - 1
          set su = matches(i).submatches
          args(i) = su(2) & su(3)
        next
        htaCmdLineToArray = args
      End Function
     
' * ============================================================================
' * ChkUserFile
' * verifica se esiste già il file con la data
' * ----------------------------------------------------------------------------
     
      Function ChkUserFile(sUtente)
      ' msgbox("sono in chkuserfile: " & sUtente) 
       dim fs
        Set fs = CreateObject("Scripting.FileSystemObject")
        dim sNomeFile
        sNomeFile = sUtente & ".TXT"
        ChkUserFile = fs.fileexists(sNomeFile)
       

      end Function
     

' * ============================================================================
' * ChkOggi
' * Verifica se la data contenuta nel file è quella odierna
' * ----------------------------------------------------------------------------
     
      Function ChkOggi(sUtente)
      ' msgbox("sono in chkoggi: " & sUtente)
       dim fs
       dim fso
       dim sChr
       dim sNomeFile
       sNomeFile = sUtente & ".TXT"
       Set fs = CreateObject("Scripting.FileSystemObject")
      Set fso = fs.OpenTextFile(sNomeFile, 1)
      Do Until fso.AtEndOfStream
        sChr = sChr + fso.Read(1)

      Loop
      if cdate(sChr) = cdate(sOggi) then
        chkoggi = true
      else
        chkoggi = false
      end if
''      msgbox("ecco:" & sChr & " " & soggi & " >>>" & chkoggi)
      end Function
     
' * ============================================================================
' * CreaUserFile
' * crea il file con la data
' * ----------------------------------------------------------------------------
     
      Function CreaUserFile(sUtente)
        ' msgbox("sono in CREAusrefile: " & sUtente)
        dim fs
        dim fso
        dim fsFile
        dim sNomeFile
        sNomeFile = sUtente & ".TXT"
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set fso = fs.CreateTextFile(sNomeFile)
        fso.Close
       
        Const ForAppending = 8

        Set fsFile = fs.OpenTextFile (sNomeFile, ForAppending, True)
        fsFile.WriteLine(sOggi)
        fsFile.Close
       
      end Function

' * ============================================================================
' * CancUserFile
' * Cancella il file con la data prima di ricrearlo
' * ----------------------------------------------------------------------------
     
      Function CancUserFile(sUtente)

        dim fs
        dim fsFile
        dim sNomeFile
        sNomeFile = sUtente & ".TXT"
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set fsFile = fs.GetFile(sNomeFile)
        fsFile.Delete
msgbox("cancello")       
      end Function

    </script>
   </head>
   <body>
    </body>
</html>


Dimenticavo, lo shutdown con l'utente limitato non mi funziona!!
ho brillantemente risolto utilizzando il LOGOFF, così se ho bisogno che il pc resti acceso, magari per un torrent lanciato con il mio utente non ho problemi!! Very Happy

Poi vi farò sapere se i pupi gradiscono!!

Grazie
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 12 Set 2008 11:24    Oggetto: Rispondi citando

Ottima personalizzazione!
[copiata e incollata]

Magari i pupi non gradiscono, ma sicuramente penseranno alla "mano lunga" del babbo.

E' anche un'ottimo insegnamento per abituarli alle schifezze che si possono inavvertitamente scaricare Smile
Top
Profilo Invia messaggio privato
uffa14
Eroe
Eroe


Registrato: 27/09/07 11:53
Messaggi: 47
Residenza: Rimini

MessaggioInviato: 06 Nov 2008 20:01    Oggetto: Rispondi citando

GrayWolf ha scritto:
Ottima personalizzazione!
[copiata e incollata]

Magari i pupi non gradiscono, ma sicuramente penseranno alla "mano lunga" del babbo.

E' anche un'ottimo insegnamento per abituarli alle schifezze che si possono inavvertitamente scaricare Smile


in effetti non hanno gradito, ma la quidicenne mi ha sgamato....

Non ho ben capito come (forse nemmeno lei) ma la finestra di avviso si blocca e non viene più buttata fuori!!

Allora ho pensato a chktime2:

ho fatto in vb timer.exe, legge un file di configurazione in cui c'è il comando da lanciare e il tempo di attesa.

il comando da lanciare è chktime2.hta e fa i suoi controlli e poi si chiude
e aspetta il prossimo giro.

il problema è che se metto timer.exe nel run del registro, quando fa il logoff viene segnalato come programma attivo da chiudere, e se l'utente "annulla" il logoff viene bloccato.

Ho provato a metterlo come servizio con srvany, ma quando lo avvio mi dice che il servizio si è avviato e si è interrotto. quindi non va bene Sad


Qualche idea?
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 06 Nov 2008 20:42    Oggetto: Rispondi citando

uffa14 ha scritto:

in effetti non hanno gradito, ma la quindicenne mi ha sgamato....

Non ho ben capito come (forse nemmeno lei) ma la finestra di avviso si blocca e non viene più buttata fuori!!

ah, i giovani d'oggi ... Confused
ne pensi 100 e loro riescono a trovare la 101ma Smile
Non so se ha accesso al task manager,
se l'avesse e avesse capito che il processo da far cessare è MSHTA.exe
prima che effettui il logoff o durante la sua ora di gioco ...

oppure

ha letto questi post Smile Smile


uffa14 ha scritto:

...
Qualche idea?


non ho capito però cosa intendi con "la finestra di avviso si blocca", comunque:
fammici pensà, ma non garantisco niente Sad
Top
Profilo Invia messaggio privato
uffa14
Eroe
Eroe


Registrato: 27/09/07 11:53
Messaggi: 47
Residenza: Rimini

MessaggioInviato: 06 Nov 2008 22:26    Oggetto: Rispondi citando

GrayWolf ha scritto:

se l'avesse e avesse capito che il processo da far cessare è MSHTA.exe
prima che effettui il logoff o durante la sua ora di gioco ...

oppure

ha letto questi post Smile Smile

Non blocca mshta.exe, credo che esca dalla sessione sospendendo, quando rientra la finestra di chiusura è li, ma resta "congelata"
Citazione:

non ho capito però cosa intendi con "la finestra di avviso si blocca", comunque:
fammici pensà, ma non garantisco niente Sad


Come quando esci e cè un programma aperto, ti dice se vuoi chiudere il programma subito o attendere, ma c'e anche il pulsante annulla. Sad



la
Top
Profilo Invia messaggio privato
uffa14
Eroe
Eroe


Registrato: 27/09/07 11:53
Messaggi: 47
Residenza: Rimini

MessaggioInviato: 08 Nov 2008 01:53    Oggetto: Rispondi citando

Ripensandoci mi sono detto, "se mi serve un crontab per windows, perche non cercarlo?" Very Happy infatti l'ho trovato!
http://www.nncron.ru
Lancio chktime2.hta ogni 10 minuti, e il gioco è fatto!
ecco il codice:

Codice:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html Lang= "it">
   <head>
      <title>
      Controllo Permanenza a PC
      </title>
    <HTA:APPLICATION
         Id="HTACtrl"
            SysMenu="no"
            Showintaskbar="no"           
    >
    <script type="text/vbscript" language="VBScript">
      option explicit

' * ============================================================================
' *                      descrizione
' * questo programma serve per controllare l'uso del pc da parte degli
' * utenti.
' * viene lanciato ogni 10 minuti da  nncron lite (http://www.nncron.ru)
' * flusso:
' * 1) leggere chktime.ini per parametri utente, tempo, file
' * file esiste?
' * no/si
' *  |  |il file è di oggi?
' *  |   no/si->3
' *  |   \cancella il file
' *  |   \crea il file->2
' *  \ crea il file ->2
' * 2) scrivo la data nel 1* rcd,  e il tempo concesso nel secondo
' *    avvisa l'utente dei minuti a disposiozine
' *    fine programma
' * 3) leggi il file fino all'ultimo record
' *    sottrai 10 al valore trovato
' *    scrivi nuovo record con il valore trovato
' *    il valore scritto <= 0?
' *    no/si-> 4
' *     \fine programma 
' * 4) esegui azione richiesta dal parametro
' *    fine programma
' *
' *
' * ----------------------------------------------------------------------------
' * ------------------------------------------------------------
' *                       Personalizza mappa esposta
' * ------------------------------------------------------------
ILarghezza = 800
iAltezza = 220
iLeft = 0
iTop = 0
' * ------------------------------------------------------------

' * ------------------------------------------------------------
' *                       Personalizza Messaggi
' * ------------------------------------------------------------
 


                       
 



' * ------------------------------------------------------------

' * ------------------------------------------------------------
' *                       Personalizza Tempi
' * ------------------------------------------------------------
     '* i valori devono essere espressi in millesimi di secondo
      lTempoMessaggio = 5000
   
     
      ' * carico oggi con la data di sistema
      sOggi = FormatDateTime(now,2)
      '' 'stop msgbox("oggi:" & sOggi)
' * ------------------------------------------------------------
' * ============================================================================
Const ForAppending = 8
dim oShell
Dim oNetwork
dim sUserRilevato


dim sCmdShut
dim sTmp

dim iLeft
dim iTop
dim iLarghezza
dim iAltezza
dim iLeftRil
dim iTopRil

dim idTimer1

dim lTempoMessaggio


dim arrParam

dim sOggi
dim sAzione
set oShell = createobject("WScript.Shell")

'mio rilevo utente'
Set oNetwork = CreateObject("WScript.Network")
sUserRilevato = oNetwork.UserName
ScriviLogFile sUserRilevato, "inizio---------------------------------------------------"
 
'****************************************************************************************************'
'****************************************************************************************************'
'******************* R O U T I N E S ****************************************************************'
'****************************************************************************************************'
'****************************************************************************************************'           
sub Window_OnLoad
    dim i
    dim lTempo
    dim lresto
    dim sFilePers
    arrParam = LeggiIni(sUserRilevato)
    sAzione = arrParam(2)
    lTempo = cint(arrParam(1))
    sFilePers = arrParam(3)
   
    ' dimensiono la finestra'
    window.resizeTo iLarghezza,iAltezza
    window.moveTo iLeft,iTop
    'mio salvo data e ora'
    sTmp = "<b>Oggi:" _
    & FormatDateTime(now,1) _
    & " sono le:" _
    & FormatDateTime(now,3) _
    & "</b><br>"
   
    'Se azione = 0 buon lavoro e chiudo
    if sAzione = "0" then
      ScriviLogFile sUserRilevato, "azione = 0"
      document.body.innerHTML = sTmp _
                      & " " & sUserRilevato _
                      & " <br> Buon lavoro!!" _
                      & ": </font></center>"
                   
      idTimer1 = window.setTimeout("StopMe", _
                           lTempoMessaggio, _
                           "VBScript" _
                          )
    else
   
    ' se non esiste il file personale lo creo con data e zero
    if  not ChkUserFile(sFilePers) then
      CreaUserFile(sFilePers)
      ScriviUserFile sFilePers, cstr(ltempo)
    end if
   
    ' leggo la prima riga del file personale
    ' se la data è vecchia, elimino e ricreo il file
    ' con data e tempo
    if not chkOggi(sFilePers) then
    ScriviLogFile sUserRilevato, "ricreo user file"
      CreaUserFile(sFilePers)
      ScriviUserFile sFilePers, lTempo
    ' se la data è oggi
    ' leggo l'ultimo record per ottenere il tempo rimasto
    ' se il tempo è > 10 scrivo nuovo record
    ' altrimenti eseguo azione richiesta
    else
      lResto = cint(LeggiLast(sFilePers))
      ScriviLogFile sUserRilevato, "questo e il resto" & cstr(lresto)
      lResto = lResto - 10                 
      if lResto > 0 then
        ScriviLogFile sUserRilevato, "resto ancora valido"
        ScriviUserFile sFilePers, cstr(lresto)
      else
        ScriviLogFile sUserRilevato, "resto azzerato!!!"
        ScriviUserFile sFilePers, "0"
        idTimer1 = window.setTimeout("Stop1", _
                     lTempoMessaggio, _
                     "VBScript" _
                    )   
      end if
    end if
  end if
  ' se ho ancora tempo lo segnalo
  document.body.innerHTML = sTmp _
                  & " " & sUserRilevato _
                  & "<br>ti restano:" & cstr(lresto) & "minuti." _           
                  & ": </font></center>"
               
  idTimer1 = window.setTimeout("StopMe", _
                       lTempoMessaggio, _
                       "VBScript" _
                      )

end sub

       
' * ============================================================================
' * Stop1
' * chiama Stopworkvbs con il parametro azione (il set timeout non puo?)
' * ----------------------------------------------------------------------------
sub Stop1
    StopWorkVBS(sAzione)   
end sub
' * ============================================================================
' * StopWorkVBS
' * disconnette l'utente
' * ----------------------------------------------------------------------------
sub StopWorkVBS(sAzione)
    window.moveTo iLeftRil,iTopRil
    document.body.innerHTML = "spengo"
    window.clearTimeout(idTimer1)
    ScriviLogFile sUserRilevato, "chiudo"
    if sAzione = "1" then
      sCmdShut ="logoff"
      oShell.run sCmdShut,,true
    end if
    window.close
end sub
     

     
' * ============================================================================
' * StopMe
' * chiude il programma
' * ----------------------------------------------------------------------------
     
sub StopMe
    window.clearTimeout(idTimer1)
    window.close
end sub

     
' * ============================================================================
' * ChkUserFile
' * verifica se esiste già il file personale dell'utente connesso
' * ----------------------------------------------------------------------------
     
Function ChkUserFile(sFile)
    ScriviLogFile sUserRilevato, "sono in chkuserfile: " & sFile
    dim fs
    Set fs = CreateObject("Scripting.FileSystemObject")
    dim sNomeFile
    sNomeFile = ".\" & sFile
    ChkUserFile = fs.fileexists(sNomeFile)
end Function
     

' * ============================================================================
' * ChkOggi
' * Verifica se la data contenuta nel file è quella odierna
' * ----------------------------------------------------------------------------
     
Function ChkOggi(sFile)
    ScriviLogFile sUserRilevato, "sono in chkoggi: " & sFile
    dim fs
    dim fso
    dim sLine
    dim sNomeFile
    sNomeFile = ".\" & sFile
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fso = fs.OpenTextFile(sNomeFile, 1)
    sLine = fso.Readline
   
    if cdate(sLine) = cdate(sOggi) then
      chkoggi = true
    else
      chkoggi = false
    end if
end Function

' * ============================================================================
' * LeggiLast
' * Legge il file personale e riporta i minuti rimanenti
' * quelli dell'ultima riga
' * ----------------------------------------------------------------------------
Function LeggiLast(sFile)
    dim fs
    dim fso
    dim sLine
    dim sNomeFile
    sNomeFile = ".\" & sFile
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fso = fs.OpenTextFile(sNomeFile, 1)
    Do Until fso.AtEndOfStream
      sLine = fso.Readline
    Loop
    LeggiLast = sLine
end Function     
' * ============================================================================
' * CreaUserFile
' * crea il file personale dell'utente  e scrive nella prima riga la data
' * ----------------------------------------------------------------------------
Function CreaUserFile(sFile)
    dim fs
    dim fso
    dim fsFile
    dim sNomeFile
    sNomeFile = ".\" & sFile
    ScriviLogFile sUserRilevato, "crea userfile" & snomefile
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fso = fs.CreateTextFile(sNomeFile)
    fso.Close
    Set fsFile = fs.OpenTextFile (sNomeFile, ForAppending, True)
    fsFile.WriteLine(sOggi)
    fsFile.Close
end Function       
' * ============================================================================
' * ScriviUserFile
' * Aggiunge una riga con il tempo rimasto
' * ----------------------------------------------------------------------------
Function ScriviUserFile(sFile, sTempo)
    dim fs
    dim fso
    dim fsFile
    dim sNomeFile
    sNomeFile = ".\" & sFile
   
    Const ForAppending = 8
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fsFile = fs.OpenTextFile (sNomeFile, ForAppending, True)
    ScriviLogFile sUserRilevato, "scriviuserfile:" & soggi
    fsFile.WriteLine(sTempo)
    fsFile.Close
end Function

' * ============================================================================
' * CancUserFile
' * Cancella il file con la data prima di ricrearlo
' * ----------------------------------------------------------------------------
Function CancUserFile(sUtente)
    dim fs
    dim fsFile
    dim sNomeFile
    sNomeFile = "c:\script\" & sUtente & ".TXT"
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fsFile = fs.GetFile(sNomeFile)
    fsFile.Delete
end Function

' * ============================================================================
' * ScriviLogFile
' * Scrivi una riga sul file di log
' * ----------------------------------------------------------------------------
Function ScriviLogFile(sUtente, sAzione)
    dim fs
    dim fso
    dim fsFile
    dim sNomeFile
    dim sRiga
    sNomeFile = "c:\script\chktime2.log"
   
    Set fs = CreateObject("Scripting.FileSystemObject")
    if  fs.fileexists(sNomeFile) = false then
         Set fso = fs.CreateTextFile(sNomeFile)
           fso.Close
    end if       
   
    Const ForAppending = 8
   
    sRiga = "User: " & sUtente & _
    " azione: " & sAzione & _
    " data: " _
    & FormatDateTime(now,1) _
    & " ora: " _
    & FormatDateTime(now,3) _
    '& chr(13) '& chr(10)
    Set fsFile = fs.OpenTextFile (sNomeFile, ForAppending, True)
    fsFile.WriteLine(sRiga)
    fsFile.Close
end Function

' * ============================================================================
' * LeggiIni
' * Legge il file dei parametri, e  torna con un array di 4 elementi
' * 0 = utente
' * 1 = minuti
' * 2 = azione (0=nulla,1=logoff)
' * 3 = filepersonale
' * se non trova il file o l'utente usa il default
' * ----------------------------------------------------------------------------
Function LeggiIni(utente)
    dim fs
    dim fso
    dim sLinea
    dim sNomeFile
    dim arrParametri
    Set fs = CreateObject("Scripting.FileSystemObject")
    sNomeFile = "c:\script\chktime2.ini"
    if  fs.fileexists(sNomeFile) = true then
      Set fso = fs.OpenTextFile(sNomeFile, 1)
      Do Until fso.AtEndOfStream
        sLinea = ucase(fso.Readline)
        if left(sLinea, 1) <> "#" then
          arrParametri = Split(sLinea , ";")
          if arrParametri(0) = ucase(utente) then
            LeggiIni = arrParametri
            Exit Function
          end if
        end if
      Loop
    end if
    slinea = ucase(utente) & ";60;0;default.txt"
    arrParametri = Split(sLinea , ";")
    LeggiIni = arrParametri
end Function

    </script>
   </head>
   <body>
    </body>
</html>

in questo modo mshta.exe non resta in azione. c'è solo il cron che gira e verifica gli utenti!

Ciao!
Top
Profilo Invia messaggio privato
LoJan
Mortale adepto
Mortale adepto


Registrato: 14/12/08 19:42
Messaggi: 30

MessaggioInviato: 14 Dic 2008 19:54    Oggetto: Accesso temporizzato Rispondi

Scusate, ho letto la corrispondenza del forum perchè avevo i problemi di Uffa14, e sono completamente profano di programmazione.
Ho risolto in qualche modo combinando lo script di GrayWolf (due ore di tempo, aggiunto stinga di registro,...) con il comando di Windows che limita gli orari di accesso (net user username /time:L-D, 1pm-3pm). Ovviamente il figlio trova la scappatoia, cioè effettua un logout e poi login quando stanno per scadere le due ore, e quindi raddoppia la dose...
C'è qualche modo per limitare il numero dei login giornalieri di un utente? Confused
Grazie e ciao a tutti
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Windows XP e Reperti Archeologici Tutti i fusi orari sono GMT + 2 ore
Vai a 1, 2  Successivo
Pagina 1 di 2

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi