Citrix ICA application publié + droits sur process
cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 août 2014
-
20 sept. 2005 à 16:59
cs_viviane44
Messages postés38Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention25 mars 2014
-
23 juin 2009 à 11:42
Bonjour à tous,
Deux gros problèmes :
- Le premier : en lançant mon programme (un programme VB.NET) via citrix en spécifiant un chemin d'application, ce qui se passe et qui est normal c'est que l'explorer n'est pas lancer pour n'avoir que l'application et pas le bureau. Problème, lorsque je lance l'explorer via l'application pour avoir l'explorateur windows le bureau réapparait. Je souhaiterai pouvoir utiliser l'explorer sans le bureau. Quelqu'un a une idée ?
- Deuxième problème : Il y a un bug dans les composant office de VB.NET, et mon application VB.NET fait appel à Excel puis le ferme à la fin de l'exécution-> problème une fois sur 3 Excel reste en process fantom... et lister les process pour les kill via une application VB.NET nécessite tous les droits d'aministrateur. Quelqu'un sait-il comment forcer le kill sans les droits d'administration (et sans faire un RunAs comme le source que j'ai mis sur le site..) ?
cs_viviane44
Messages postés38Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention25 mars 2014 22 juin 2009 à 15:02
Avez-vous trouver la solution concernant vos process ?
J'ai le même problème lorsque je fais appel à Word ou Excel
Pas de problème en local pour le kill mais impossible d'acèder à la liste des process sous Citrix.
If myProcess.ProcessName = "EXCEL"
ThenWexist = "O"
Wxls = GetObject(, "Excel.Application")
Exit
For
End
If
Nextmais cette methode plante sous CITRIX et c'est là que je voudrais savoir si tu as resolu ton problème.
tuer les process Word et Excel avant de les ré-ouvrir ou les ouvrir s'ils sont déjà actifs.
Merci pour ton aide.
cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 août 20141 23 juin 2009 à 09:58
en fait tu oublies de supprimer ta référence à excel :
ça c'est bien : Wxls.Workbooks.Close()
Wxls.Quit()
Wxls =Nothing
mais il faut le mettre dès que tu n'utilises plus excel
Autre façon de faire :
<DllImport("user32.dll", SetLastError:=True)> _
Private Function GetWindowThreadProcessId(ByVal hWnd As Integer, _
ByRef lpdwProcessId As Integer) As Integer
End Function
Public Function fnRecupProcessId(ByVal hWnd As Integer) As Integer
Dim R As Integer
Dim RetVal As Integer = GetWindowThreadProcessId(hWnd, R)
return R
End Function
Public Function fnAjoutPossible(ByVal C As Integer(), ByVal S As Integer) As Boolean
Dim B As Boolean = True
Dim i As Integer, L As Integer = C.Length - 1
For i = 0 To L 'Count
If C(i) = S Then
B = False
Exit For
End If
Next
Return B
End Function
Sub New()
ExcelPID = New Integer() {}
ExcelHWnd = New Integer() {}
End Sub
'Sur l'ouverture ou l'obtention de l'objet excel ajoute le code suivant
Dim Id As Integer = fnRecupProcessId(H)
If fnAjoutPossible(ExcelPID, Id) Then
Array.Resize(Of Integer)(ExcelPID, ExcelPID.Length + 1)
ExcelPID(ExcelPID.Length - 1) = Id
End If
'Sur la fermeture tu peux faire comme ça
If Not ExcelApplication Is Nothing Then
ExcelApplication.ActiveWindow.Close()
ExcelApplication.Quit()
End If
Dim N as integer=ExcelPID.Length
For i as integer = 0 To N
Dim localById As Process = Process.GetProcessById(ExcelPID(i))
localById.Kill()
localById.Dispose()
Next
-- Y a autant de bugs dans un programme que de malles-façons dans une maison. Tout dépend de la taille --
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 août 20141 23 juin 2009 à 10:02
le principe de mon dernier post c'est que ton environment autorise uniquement un accès restrinct aux process, donc tu accède uniquement à ceux que tu crées dans ta session utilisateur
ducoup, on récupérant le handle de ton process excel grace à Dim H As Integer = ExcelApplication.Hwnd
tu peux récupérer l'Id de process grace grace à GetWindowThreadProcessId
-- Y a autant de bugs dans un programme que de malles-façons dans une maison. Tout dépend de la taille --