Con risposta kill di un processo Word

  • venerdì 29 giugno 2012 08:24
     
     

    Ciao a tutti, mi chiamo nicola ed è la prima volta che scrivo nel Forum. Ho un problema di questo tipo:

    Per controllare se un processo Word resta appeso, attraverso un progetto VB.Net 2003,  mi creo un thread che effettua il controllo del processo( in oggetto). Se dopo un tot di millisecondi il processo risulta ancora attivo, faccio la Kill del processo dal Thread. Il sistema mi dice "System.ComponentModel.Win32Exception",

      'Accesso Negato'

    Il codice è il seguente:

    ImportsSystem

    ImportsSystem.Threading

    ImportsSystem.Threading.Thread

    ImportsSystem.Security.Permissions

    PublicClassThreadMain

    PublicstrdotName AsString

    PublicstrdocName AsString

    PublicsXML AsString

    PublicidProcesso AsInteger

    Publicterminate AsInteger

    PublicdocName AsString

    Publickk AsInteger

    Publicfinito AsBoolean= False

    PublicFunctionLaunchThread() AsInteger

    DimmyT2 AsThreading.Thread

    myT2 = NewThreading.Thread(AddressOfMe.DoWork)

    myT2.IsBackground = True

    myT2.Start()

    Try

    Console.WriteLine("Finito: {0}", finito)

    CatchEx AsException

    EndTry

    Returnterminate

    EndFunction

    <SecurityPermissionAttribute(SecurityAction.Deny, Flags:=SecurityPermissionFlag.NoFlags)> _

    PrivateSubDoWork()

    Dimj AsInteger

    Dimerrore AsString

    Dimtrovato AsBoolean

    DimcolProcess AsProcess

    DimnomeProcess AsProcess()

    Dimchiusura AsBoolean

    Try

    Forj = 100 To20000

    colProcess = Process.GetProcessById(idProcesso)

    IfNotcolProcess IsNothingThen

    j = j + 1000

    System.Threading.Thread.Sleep(1)

    trovato = True

    Else

    trovato = False

    EndIf

    Next

    Iftrovato Then

    chiusura = colProcess.CloseMainWindow()

    colProcess.Close()

    Process.GetProcessById(idProcesso).Kill()

    terminate = 1

    EndIf

    Catchex AsException

    errore = ex.ToString

    terminate = 2

    EndTry

    EndSub'DoWork

    Riuscite a darmi una mano, grazie

Tutte le risposte

  • sabato 30 giugno 2012 04:51
     
     

    Ciao baby_lee67,

    You wrote on 29/06/2012 :

    Per controllare se un processo Word resta appeso, attraverso un progetto VB.Net 2003,  mi creo un thread che effettua il controllo del processo( in oggetto). Se dopo un tot di millisecondi il processo risulta ancora attivo, faccio la Kill del processo dal Thread. Il sistema mi dice "System.ComponentModel.Win32Exception",

      'Accesso Negato'

    per fortuna :-) perché lo devi "killare"? che è una pratica pessima.

    .m



    blog @ //milestone.topics.it
  • martedì 3 luglio 2012 08:33
     
     

    Ciao Mauro, grazie per la risposta. Purtroppo mi trovo in una situazione che devo per forza utilizzare la kill per eliminare un processo word appeso. Grazie

    Saluti

    Nicola

  • mercoledì 4 luglio 2012 06:57
     
     

    Ciao Nicola,

    You wrote on 03/07/2012 :

    Ciao Mauro, grazie per la risposta. Purtroppo mi trovo in una situazione che devo per forza utilizzare la kill per eliminare un processo word appeso.

    c'è poco da fare, devi avere i permessi per farlo e tipicamente l'utente normale non li, in particolare per enumerare i processi.

    .m



    blog @ //milestone.topics.it
  • mercoledì 4 luglio 2012 10:40
     
     

    Grazie Mauro, mi spiego meglio. In IIS ho impostato l'accesso all'utente Anonimo come amministratore. Manca forse qualche altro permesso o vi è un errore nel codice presente in allegato? Nuovamente ringrazio

    Nicola

  • mercoledì 4 luglio 2012 12:26
     
     

    Ciao baby_lee67,

    You wrote on 04/07/2012 :

    Grazie Mauro, mi spiego meglio. In IISho impostato l'accesso all'utente Anonimo comeamministratore. Manca forse qualche altro permesso o vi è un errore nel codice presente in allegato? Nuovamente ringrazio

    cosa? il worker process di IIS gira come admin, e l'utemnte anononimo è admin? quindi chiunque si connetta a quel sito ha permessi amministrativi?

    .m



    blog @ //milestone.topics.it
  • giovedì 5 luglio 2012 07:20
     
     

    Ciao Mauro, il tutto gira su una virtual machine XP installata sul mio PC.

    Nicola

  • giovedì 5 luglio 2012 07:35
     
     

    Ciao Nicola,

    You wrote on 05/07/2012 :

    Ciao Mauro, il tutto gira su una virtual machine XP installata sul mio PC.

    perché non riproviamo e spieghi meglio cosa devi fare e magari perché devi killare il processo di Word da dentro un'applicazione web?

    Nicola

    .m



    blog @ //milestone.topics.it
  • giovedì 5 luglio 2012 13:13
     
     

    Ciao Mauro, mi spiego meglio:

    l'utente finale crea i documenti word con delle macro (con possibili errori), in questo caso carico un XML nel documento Word. Ci sono dei casi in cui la Run della macro lascia appeso il processo WINWORD. Essendo il numero di utenti elevato, ci potrebbero essere più processi WINWORD appesi questo provocherebbe un crollo vertiginoso delle prestazioni del server. Questo è il motivo che mi porta a crearmi un thread per controllare se il processo WINWORD dopo un tot di secondi gira ancora, e solo in questo caso cerco di fare la kill di tale processo. Saluti

    Nicola

  • venerdì 6 luglio 2012 11:28
     
     Con risposta

    Ciao baby_lee67,

    You wrote on 05/07/2012 :

    l'utente finale crea i documenti word con delle macro (con possibili errori), in questo caso carico un XML nel documento Word. Ci sono dei casi in cui la Run della macro lascia appeso il processo WINWORD. Essendo il numero di utenti elevato, ci potrebbero essere più processi WINWORD appesi questo provocherebbe un crollo vertiginoso delle prestazioni del server. Questo è il motivo che mi porta a crearmi un thread per controllare se il processo WINWORD dopo un tot di secondi gira ancora, e solo in questo caso cerco di fare la kill di tale processo.

    oltre ai problemi di security secondo me da "dentro" IIS non ce la farai mai oltre al non essere sicuramente affidabile.

    probabilmente la cosa migliore è un servizio per Windows, che faccia da Watch Dog, che gira con permessi elevatissimi e che ha l'unico scopo di monitorare questa cosa. Se il servizio non è in ascolto su nulla, quindi non lo puoi pilotare da fuori non ha ìi neanche nessun rischio di attacchi.

    .m



    blog @ //milestone.topics.it
  • lunedì 9 luglio 2012 07:11
     
     

    Ciao Mauro, è stato impostato come Anonimus access l'utente amministratore. Il nostro problema non  riguarda la sicurezza su IIS, volutamente abbiamo configurato IIS come descritto sopra. Visto che le chiamate agli oggetti vengono fatte con l'utente amministratore il servizio dovrebbe permettere di killare il processo in oggetto. Saluti

    Nicola

  • lunedì 9 luglio 2012 19:04
     
     

    Ciao baby_lee67,

    You wrote on 09/07/2012 :

    Ciao Mauro, è stato impostato come Anonimus access l'utente amministratore. Il nostro problema non  riguarda la sicurezza su IIS, volutamente abbiamo configurato IIS come descritto sopra. Visto che le chiamate agli oggetti vengono fatte con l'utente amministratore il servizio dovrebbe permettere di killare il processo in oggetto. Saluti

    Nicola

    e? funziona?

    .m



    blog @ //milestone.topics.it
  • martedì 10 luglio 2012 07:16
     
     

    Ciao Mauro, si funziona

    Nicola