locked
Strano comportamento system tray con seven RRS feed

  • Domanda

  • Ho un problema con un appicazione java,

    Questa applicazione quando funziona correttamente crea una icona nel system tray  e apre un messaggio.

    Se la faccio partite dal prompt funziona correttamente mentre se parte come utente SYSTEM

    non compare nulla nel system tray

    AIUTO

    mercoledì 26 maggio 2010 08:16

Risposte

  • Negli OS Windows NT 5.0 e successivi ogni sessione utente è caratterizzata dal possedere un ambiente desktop proprio che puoi essere portato sulla device di visuliazzione usando canali diversi. Il canale più comune è quello che prevede l'accesso diretto da parte di un desktop utente alla scheda video locale. Altri esempi di canali sono quelli RDP/ICA usati dai servizi Terminal Services/Desktop Remoto.  L'esecuzione di un processo con credenziali diverse dall'utente che ha generato il desktop può essere ottenuto con metodi diversi che vanno dalla semplice creazione di un processo con una nuova identità senza creazione di un contesto di esecuzione specifico alla  creazione di un nuovo contesto di esecuzione completo, sarebbe a dire con la creazione di un desktop specifico per quella coppia utente/processo. Se viene perseguita la creazione di un contesto di esecuzione completo (ad esempio perchè si ha necessità di interagire con altre applicazioni che richiedono paramentri di registry su base utente) occorre tenere bene a mente che per l'interazione fra i processi presenti nei vari ambienti (desktop) di esecuzione occorre seguire ben specifiche regole. In Windows 7 e 2008 queste regole sono diverse rispetto a quelle presenti nelle versioni precedenti per cui occorre verificare come nell'applicazione Java la cosa è realizzata.

     

    Saluti.

     

    mercoledì 26 maggio 2010 12:06
  • Sospetto che l'applicazione sia stata scritta per windows 95 o per NT visto che è ormai da tempo che i desktops sono separati; l'utente "system" ha un proprio desktop (virtuale) e quindi la tua icona andrà a finire (anzi NON ci andrà dato che tale "desktop" se ricordo male NON ha una tray) nella tray area del desktop virtuale di tale utente; se vuoi o devi aggiungere un'icona alla tray, ti consiglio di impostare l'applicazione in modo da avviarsi in maniera automatica al logon dell'utente, se poi l'applicazione stessa dovesse avere un "core" comune, dovrai frazionarla in modo che vi sia un modulo senza interfaccia e che gira (es.) come system ed un secondo modulo GUI avviato al logon dell'utente e che interagirà con il modulo core

     

    mercoledì 26 maggio 2010 13:01
  • Non mi pare un problema di Windows ma di compatibilità dell'applicazione col sistema operativo.
    Se l'applicazione in Java è stata scritta da te devi rivedere il codice, se è stata sviluppata da terzi devi rivolgerti all'autore o alla software house.

    In entrambi i casi non è questo il Forum appropriato.
    Prova http://social.microsoft.com/Forums/it-it/category/development
    Vincenzo Di Russo
    Microsoft® MVP Windows Internet Explorer, Windows Desktop Experience & Security since 2003.
    Moderator in the Microsoft Answers and TechNet Forums Italy
    My MVP Profile: https://mvp.support.microsoft.com/profile/Vincenzo
    mercoledì 26 maggio 2010 08:45
    Moderatore

Tutte le risposte

  • Non mi pare un problema di Windows ma di compatibilità dell'applicazione col sistema operativo.
    Se l'applicazione in Java è stata scritta da te devi rivedere il codice, se è stata sviluppata da terzi devi rivolgerti all'autore o alla software house.

    In entrambi i casi non è questo il Forum appropriato.
    Prova http://social.microsoft.com/Forums/it-it/category/development
    Vincenzo Di Russo
    Microsoft® MVP Windows Internet Explorer, Windows Desktop Experience & Security since 2003.
    Moderator in the Microsoft Answers and TechNet Forums Italy
    My MVP Profile: https://mvp.support.microsoft.com/profile/Vincenzo
    mercoledì 26 maggio 2010 08:45
    Moderatore
  • MI aspettavo una risposta di questo tipo: superficiale e banale.

    Non è unproblema di codice ma di sistema operativo o qualche limitazione del sistema operativo introdotta da microsoft con SEVEN

    L'applicazione lanciata su 7 come utente normale funziona correttamente, se invecel'utente che la lancia è SYSTEM

    non funziona come è giusto quindi non è un bug dell'applicativo.

    Inoltre con XP funziona correttamente cosi come su vista quindi non è un problema di codice.

    INOLTRE prima di scrivere su questo forum ho scritto anche sul forum JAVA li mi hanno fatto notare

    in modo molto gentile che è un problema di O.S.

    Comunque grazie posto sul forum development

    p.s.

    Visto che è un moderatore la categoria development dove mi ha suggerito di spostare la discussione non ha nessun forum che sia compatibile con il mio problema, nessun riferimento a java o compatibilità o.s.

    mercoledì 26 maggio 2010 09:12
  • Il thread è aperto. Se qualcun altro vuole intervenire è ovviamente libero di farlo.
    Per quanto mi riguarda ho espresso semplicemente il mio personale parere.

    Windows 7 è un nuovo sistema operativo, molto diverso da Windows XP e Vista, quindi è verosimile che un'applicazione perfettamente funzionante nei precedenti OS possa risultare incompatibile, soprattutto sotto l'aspetto "sicurezza", con Seven.

    Best of luck,
    Vincenzo Di Russo
    Microsoft® MVP Windows Internet Explorer, Windows Desktop Experience & Security since 2003.
    Moderator in the Microsoft Answers and TechNet Forums Italy
    My MVP Profile: https://mvp.support.microsoft.com/profile/Vincenzo
    mercoledì 26 maggio 2010 09:28
    Moderatore
  • Visto che è un moderatore la categoria development dove mi ha suggerito di spostare la discussione non ha nessun forum che sia compatibile con il mio problema, nessun riferimento a java o compatibilità o.s.
    Si, infatti ho scritto "prova".

    Forum MSDN Italy:
    http://social.msdn.microsoft.com/Forums/it-IT/categories
    Forum MSDN US:
    http://social.msdn.microsoft.com/Forums/en-US/categories


    Vincenzo Di Russo
    Microsoft® MVP Windows Internet Explorer, Windows Desktop Experience & Security since 2003.
    Moderator in the Microsoft Answers and TechNet Forums Italy
    My MVP Profile: https://mvp.support.microsoft.com/profile/Vincenzo
    mercoledì 26 maggio 2010 09:41
    Moderatore
  • Negli OS Windows NT 5.0 e successivi ogni sessione utente è caratterizzata dal possedere un ambiente desktop proprio che puoi essere portato sulla device di visuliazzione usando canali diversi. Il canale più comune è quello che prevede l'accesso diretto da parte di un desktop utente alla scheda video locale. Altri esempi di canali sono quelli RDP/ICA usati dai servizi Terminal Services/Desktop Remoto.  L'esecuzione di un processo con credenziali diverse dall'utente che ha generato il desktop può essere ottenuto con metodi diversi che vanno dalla semplice creazione di un processo con una nuova identità senza creazione di un contesto di esecuzione specifico alla  creazione di un nuovo contesto di esecuzione completo, sarebbe a dire con la creazione di un desktop specifico per quella coppia utente/processo. Se viene perseguita la creazione di un contesto di esecuzione completo (ad esempio perchè si ha necessità di interagire con altre applicazioni che richiedono paramentri di registry su base utente) occorre tenere bene a mente che per l'interazione fra i processi presenti nei vari ambienti (desktop) di esecuzione occorre seguire ben specifiche regole. In Windows 7 e 2008 queste regole sono diverse rispetto a quelle presenti nelle versioni precedenti per cui occorre verificare come nell'applicazione Java la cosa è realizzata.

     

    Saluti.

     

    mercoledì 26 maggio 2010 12:06
  • Sospetto che l'applicazione sia stata scritta per windows 95 o per NT visto che è ormai da tempo che i desktops sono separati; l'utente "system" ha un proprio desktop (virtuale) e quindi la tua icona andrà a finire (anzi NON ci andrà dato che tale "desktop" se ricordo male NON ha una tray) nella tray area del desktop virtuale di tale utente; se vuoi o devi aggiungere un'icona alla tray, ti consiglio di impostare l'applicazione in modo da avviarsi in maniera automatica al logon dell'utente, se poi l'applicazione stessa dovesse avere un "core" comune, dovrai frazionarla in modo che vi sia un modulo senza interfaccia e che gira (es.) come system ed un secondo modulo GUI avviato al logon dell'utente e che interagirà con il modulo core

     

    mercoledì 26 maggio 2010 13:01
  • Grazie Vincenzo per le tue risposte,

    l'applicativo parte all logon dell'utente e si sdoppia perchè UAC di VISTA rompe e non lo voglio disabilitare.

    Quindi devo farlo sdoppiare nuovamente per poter segnalare con l'utente!

    Su XP e Vista non ho questi problemi.

    Visto che mi sembri preparatissimo sai come aggiungere una system icon alla barra delle applicazioni,

    il processo che gestisce il volume ad esempio è lanciato da system ma ha icona nel tray, vorrei poter fare  una cosa simile

    Ciao

    mercoledì 26 maggio 2010 13:29
  • il processo che gestisce il volume ad esempio è lanciato da system ma ha icona nel tray, vorrei poter fare  una cosa simile

    Di che processo parli? L'icona del volume nel systray e` creata da explorer.exe stesso e la finestra dei controlli del volume da sysvol.exe (NT6.x) o sysvol32.exe (tutti gli altri) e sysvol*.exe e` figlio di explorer.exe ed entrambi sono eseguiti nella sessione dell'utente e nel desktop associato a tale sessione. Usa Process Explorer (freeware di Microsoft) per vedere il process tree di tutto il sistema.

    Forse dovresti chiarire come funziona il tuo applicativo, ovvero il suo process tree e come ogni processo e` creato e dove (servizio, desktop, logon... e con che credenziali), perche' semplicemente fare riferimento all'utente SYSTEM non e` sufficiente per capire cosa stai facendo.

    Specifica anche che libreria stai usando con Java e che JVM, perche' non mi ricordo di nessuna API di Sun Java per interagire con il systray.


    MVP :: DirectShow / MediaFoundation
    mercoledì 26 maggio 2010 15:20

  • Per aggiungere un'icona alla tray e/o per ricevere feedback nel caso l'utente clicchi (ad es.) sull'icona in questione, devi usare la API "Shell_NotifyIcon" - per dettagli su tale API, fai riferimento a questo documento

    http://msdn.microsoft.com/en-us/library/aa922175.aspx

    considera comunque che, nel caso di un "servizio" o di un'applicazione che debba essere eseguita in background, il processo potrà avere (se non si tratta di un processo "console") un proprio desktop, quindi se vuoi/devi visualizzare la tray icon sul desktop di un qualsiasi utente che si logghi normalmente, dovrai creare un programma che utilizzi l'API di cui sopra e che venga avviato al logon dell'utente; tale programma potrà poi utilizzare uno dei diversi metodi IPC (Inter Process Communications) per comunicare con l'applicazione che viene eseguita in background

     

    giovedì 27 maggio 2010 10:16
  • L'appicazione è scritta in java.

    Vorrei capire perchè con XP e VISTA funziona e con seven No

    Ciao e grazie

    venerdì 28 maggio 2010 13:46
  • L'appicazione è scritta in java.

    Vorrei capire perchè con XP e VISTA funziona e con seven No

    L'avevi scritto pure prima ed e` un'informazione inutile. Per provare ad aiutarti devi fornire almeno le informazioni che ti ho chiesto, senza stiamo perdendo tempo visto che non sappiamo (o almeno io non so) leggere il codice altrui a distanza.

    MVP :: DirectShow / MediaFoundation http://www.riseoftheants.com/mmx/faq.htm
    venerdì 28 maggio 2010 14:59
  • Prova a chiedere lumi sui forums di supporto di Sun/Oracle

     

    venerdì 28 maggio 2010 15:04
  • Fatto e mi dicono di chiedere su forum di SEVEN
    venerdì 28 maggio 2010 17:19