System

Commande de compilation

Dans le menu Project - References de Visual Basic, il faut importer les déclarations des modules Up ! Kernel, Up ! Security Management System et Up ! System en cochant les cases correspondantes.

Commande d'enregistrement des ActiveX

upsvtm Com=Charger

Commande d'exécution

systeme.exe

Le déclenchement d'alarme ne fonctionne qu'à partir de la version .NET 2002 puisque cela nécessite que le noyau d'exécution de Visual Basic supporte le multi-thread.

Fichiers sources

Source du module

Public Const DroitLecture As Integer = 1
Public Const DroitEcriture As Integer = 2
Public Const DroitExecution As Integer = 3
Public Const DroitLectureEcriture As Integer = 4
Public Const DroitLectureExecution As Integer = 5
Public Const DroitEcritureExecution As Integer = 6
Public Const DroitLectureEcritureExecution As Integer = 7

Public MUpsKrn As IUpsKrn
Public MUpsSys As IUpsSys
Public MUpsSec As IUpsSec
Public NbAlarmes As Integer

Public Sub EcrireEcran(ByVal Libelle As String)
' =============================================
Form1.Ecran.AddItem Libelle
End Sub

Public Function MonAlarme() As Boolean
' ====================================
On Error GoTo GestionErreur

EcrireEcran "Date=" + MUpsKrn.Caractere2ComBStr(MUpsKrn.Caractere4(MUpsSys.DateSysteme(), MUpsKrn.ComBStr2Caractere("%HH:%Mi:%S")))
NbAlarmes = NbAlarmes + 1
If NbAlarmes < 3 Then
Else End If
Exit Function

GestionErreur:
'=============
EcrireEcran Erreur UpsKrn-0 : L'exception suivante a été envoyée dans le source '" + Err.Source + "' :"
EcrireEcran Err.Description
End Function

Public Function EcrireEntree() As IUpsKrnCaractere
' ================================================
On Error GoTo GestionErreur

Set EcrireEntree = MUpsKrn.ObjetNul
Exit Function

GestionErreur:
'=============
On Error GoTo GestionErreur

EcrireEcran Erreur UpsKrn-0 : L'exception suivante a été envoyée dans le source '" + Err.Source + "' :"
EcrireEcran Err.Description
End Function

Public Sub LireSortie(ByVal M As IUpsKrnCaractere)
' ================================================
EcrireEcran MUpsKrn.Caractere2ComBStr(M)
Exit Sub

GestionErreur:
'=============
EcrireEcran Erreur UpsKrn-0 : L'exception suivante a été envoyée dans le source '" + Err.Source + "' :"
EcrireEcran Err.Description
End Sub

Source de la fenêtre principale

Private Sub Form_Load()
' =====================
Dim C As IUpsKrnCaractere
Dim P As Long
Dim CR As Long
Dim UtilisateurProprietaire As Long
Dim GroupeProprietaire As Long
Dim DroitsGroupe As IUpsKrnEnumere
Dim DroitsAutres As IUpsKrnEnumere
Dim DateDernierAcces As IUpsKrnDate
Dim DateDerniereModification As IUpsKrnDate
Dim DateCreation As IUpsKrnDate
Dim EstCache As Boolean
Dim L1 As IUpsKrnListe
Dim FL As IUpsSysFichierListe
Dim L2 As IUpsKrnListe
Dim PL As IUpsSysProcessusListe
Dim L3 As IUpsKrnListe
Dim UL As IUpsSysUniteListee
Dim CommandeLink As IUpsKrnCaractere
Dim Inutile As Long

On Error GoTo GestionErreur

Set MUpsKrn = CreateObject("UpsApp.UpsKrn")
Set MUpsSys = CreateObject("UpsApp.UpsSys")
Set MUpsSec = CreateObject("UpsApp.UpsSec")

NbAlarmes = 0

EcrireEcran "NomNoeud=" + MUpsKrn.Caractere2ComBStr(MUpsSys.NomNoeud())
EcrireEcran "NomMachine=" + MUpsKrn.Caractere2ComBStr(MUpsSys.NomMachine())
EcrireEcran "NomProgramme=" + MUpsKrn.Caractere2ComBStr(MUpsSys.NomProgramme())
EcrireEcran "NomUtilisateur=" + MUpsKrn.Caractere2ComBStr(MUpsSys.NomUtilisateur())
EcrireEcran "NomGroupe=" + MUpsKrn.Caractere2ComBStr(MUpsSys.NomGroupe())
EcrireEcran "NumeroProcessus=" + Str$(MUpsSys.NumeroProcessus())
EcrireEcran "NumeroGroupe=" + Str$(MUpsSys.NumeroGroupe())
EcrireEcran "NumeroUtilisateur=" + Str$(MUpsSys.NumeroUtilisateur())
EcrireEcran "SystemeDExploitation=" + MUpsKrn.Caractere2ComBStr(MUpsSys.SystemeDExploitation())
EcrireEcran "SeparateurRepertoire=" + MUpsKrn.Caractere2ComBStr(MUpsSys.SeparateurRepertoire())
EcrireEcran "UpsHome=" + MUpsKrn.Caractere2ComBStr(MUpsSys.UpsHome())
EcrireEcran "UpsPath=" + MUpsKrn.Caractere2ComBStr(MUpsSys.UpsPath())
EcrireEcran "UpsUser=" + MUpsKrn.Caractere2ComBStr(MUpsSys.UpsUser())

' Les alarmes ne fonctionnement qu'avec .NET 2002 ou superieur
MUpsSys.Alarme MUpsKrn.ComAppel2Appel(HRESULT MonAlarme([out, retval] short *retval)", AddressOf MonAlarme), 10, True
EcrireEcran "On attend 40 secondes"
MUpsSys.Attendre 40
EcrireEcran "Fin de l'attente"

EcrireEcran "Aleatoire()=" + Str$(MUpsSys.Aleatoire())
EcrireEcran "BornerRepertoire('/tmp')=" + MUpsKrn.Caractere2ComBStr(MUpsSys.BornerRepertoire(MUpsKrn.ComBStr2Caractere("/tmp")))
MUpsSys.ChangerEnvironnement MUpsKrn.ComBStr2Caractere("UPS_ESSAI"), MUpsKrn.ComBStr2Caractere("Bonjour le monde")
EcrireEcran "LireEnvironnement(UPS_ESSAI)=" + MUpsKrn.Caractere2ComBStr(MUpsSys.LireEnvironnement(MUpsKrn.ComBStr2Caractere("UPS_ESSAI")))
EcrireEcran "LireEnvironnement(PATH)=" + MUpsKrn.Caractere2ComBStr(MUpsSys.LireEnvironnement(MUpsKrn.ComBStr2Caractere("PATH")))
MUpsSys.ChangerPriorite 5
EcrireEcran "LirePriorite()=" + Str$(MUpsSys.LirePriorite())
MUpsSys.ChangerPriorite 4
Set C = MUpsSec.Crypter(MUpsKrn.ComBStr2Caractere("XYZT"), MUpsKrn.ComBStr2Caractere("Bonjour le monde"))
EcrireEcran MUpsKrn.Caractere2ComBStr(C)
EcrireEcran MUpsKrn.Caractere2ComBStr(MUpsSec.Decrypter(MUpsKrn.ComBStr2Caractere("XYZT"), C))

MUpsSys.CreerRepertoire MUpsKrn.ComBStr2Caractere("/tmp2")
MUpsSys.CreerFichier MUpsKrn.ComBStr2Caractere("/tmp2/essai.txt")
If MUpsSys.IlExisteRepertoire(MUpsKrn.ComBStr2Caractere("/tmp2")) Then End If
If MUpsSys.IlExisteFichier(MUpsKrn.ComBStr2Caractere("/tmp2/essai.txt")) Then End If
MUpsSys.ChangerDroitsDAcces MUpsKrn.ComBStr2Caractere("/tmp2/essai.txt"), DroitLectureEcriture, DroitLecture, DroitLecture
Select Case MUpsKrn.Enumere2ComShort(MUpsSys.LireDroitsDAcces(MUpsKrn.ComBStr2Caractere("/tmp2/essai.txt"), DroitsGroupe, DroitsAutres)) End Select

MUpsSys.CopierFichier MUpsKrn.ComBStr2Caractere("/tmp2/essai.txt"), MUpsKrn.ComBStr2Caractere("/tmp2/essai.sav")
MUpsSys.RenommerFichier MUpsKrn.ComBStr2Caractere("/tmp2/essai.sav"), MUpsKrn.ComBStr2Caractere("/tmp2/essai.bak")
MUpsSys.SupprimerFichier MUpsKrn.ComBStr2Caractere("/tmp2/essai.bak")
MUpsSys.CopierRepertoire MUpsKrn.ComBStr2Caractere("/tmp2"), MUpsKrn.ComBStr2Caractere("/tmp3")
MUpsSys.SupprimerRepertoire MUpsKrn.ComBStr2Caractere("/tmp2")
MUpsSys.RenommerRepertoire MUpsKrn.ComBStr2Caractere("/tmp3"), MUpsKrn.ComBStr2Caractere("/tmp2")
MUpsSys.SupprimerRepertoire MUpsKrn.ComBStr2Caractere("/tmp2")
If MUpsSys.IlExisteRepertoire(MUpsKrn.ComBStr2Caractere("/tmp2")) Then
End If
If MUpsSys.IlExisteFichier(MUpsKrn.ComBStr2Caractere("/tmp2/essai.txt")) Then End If
MUpsSys.ChangerRepertoireCourant MUpsKrn.ComBStr2Caractere("/tmp")
EcrireEcran "RepertoireCourant=" + MUpsKrn.Caractere2ComBStr(MUpsSys.LireRepertoireCourant())
EcrireEcran MUpsKrn.Caractere2ComBStr(MUpsSys.RechercherFichierDansChemin(MUpsSys.LireEnvironnement(MUpsKrn.ComBStr2Caractere("PATH")), MUpsKrn.ComBStr2Caractere("notepad"), MUpsKrn.ComBStr2Caractere("exe")))

Inutile = MUpsSys.Executer(MUpsKrn.ComBStr2Caractere("c:/WINDOWS/system32/notepad.exe"), False, False, P, MUpsKrn.ComBStr2Caractere("), _
MUpsKrn.ObjetNul, MUpsKrn.ObjetNul)
MUpsSys.Attendre 10
MUpsSys.ArreterProcessus P

Set CommandeLink = MUpsSys.RechercherFichierDansChemin(MUpsSys.LireEnvironnement(MUpsKrn.ComBStr2Caractere("PATH")), _
MUpsKrn.ComBStr2Caractere("link"), MUpsKrn.ComBStr2Caractere("exe"))
EcrireEcran "link.exe=" + Str$(MUpsSys.Executer(CommandeLink.Additionner(MUpsKrn.ComBStr2Caractere( /help")), True, True, P, MUpsKrn.ComBStr2Caractere("), _
MUpsKrn.ObjetNul, MUpsKrn.ObjetNul))
Inutile = MUpsSys.Executer(CommandeLink.Additionner(MUpsKrn.ComBStr2Caractere(" /help")), False, False, P, MUpsKrn.ComBStr2Caractere("), _
MUpsKrn.ObjetNul, MUpsKrn.ObjetNul)
MUpsSys.Attendre 10
If MUpsSys.LireCodeRetour(P, CR) Then End If Inutile = MUpsSys.Executer(CommandeLink.Additionner(MUpsKrn.ComBStr2Caractere(" /help")), True, True, P, MUpsKrn.ComBStr2Caractere("), _
MUpsKrn.ComAppel2Appel(HRESULT EcrireEntree([out, retval] IUpsKrn::Caractere **retval)", AddressOf EcrireEntree), _
MUpsKrn.ComAppel2Appel("HRESULT LireSortie([in] IUpsKrn::Caractere *M)", AddressOf LireSortie))

EcrireEcran MUpsKrn.Caractere2ComBStr(MUpsSys.LireEnvironnement(MUpsKrn.ComBStr2Caractere("HKEY_LOCAL_MACHINE/software/UpCompany/ups/UPS_HOME2")))
EcrireEcran "Taille autoxec.bat=" + Str$(MUpsSys.LireCaracteristiquesFichier(MUpsKrn.ComBStr2Caractere("c:/autoexec.bat")))
EcrireEcran "Taille autoxec.bat=" + Str$(MUpsSys.LireCaracteristiquesFichier2(MUpsKrn.ComBStr2Caractere("c:/autoexec.bat"), _
UtilisateurProprietaire, GroupeProprietaire, DateDernierAcces, DateDerniereModification, DateCreation, EstCache))

EcrireEcran Str$(UtilisateurProprietaire)
EcrireEcran Str$(GroupeProprietaire)
EcrireEcran MUpsKrn.Caractere2ComBStr(MUpsKrn.Caractere3(DateDernierAcces))
EcrireEcran MUpsKrn.Caractere2ComBStr(MUpsKrn.Caractere3(DateDerniereModification))
If EstCache Then Else End If
EcrireEcran "

Set L1 = MUpsSys.ListerFichiers(MUpsKrn.ComBStr2Caractere("c:/"), MUpsKrn.ObjetNul)
Set FL = L1.ParcoursAuDebut(0)
Do Loop
EcrireEcran "

Set L2 = MUpsSys.ListerProcessus()
Set PL = L2.ParcoursAuDebut(0)
Do Loop

Set L3 = MUpsSys.ListerUnites(MUpsKrn.ObjetNul)
Set UL = L3.ParcoursAuDebut(0)
Do Loop

Set C = Nothing
Set DroitsGroupe = Nothing
Set DroitsAutres = Nothing
Set DateDernierAcces = Nothing
Set DateDerniereModification = Nothing
Set DateCreation = Nothing
Set L1 = Nothing
Set FL = Nothing
Set L2 = Nothing
Set PL = Nothing
Set L3 = Nothing
Set UL = Nothing
Set CommandeLink = Nothing
Set MUpsSec = Nothing
Set MUpsSys = Nothing
Set MUpsKrn = Nothing
Exit Sub

GestionErreur:
'=============
EcrireEcran Erreur UpsKrn-0 : L'exception suivante a été envoyée dans le source '" + Err.Source + "' :"
EcrireEcran Err.Description
End Sub