Bonne question : comment faire un point de restauration ? [Résolu]

allthew3 552 Messages postés samedi 8 janvier 2005Date d'inscription 12 avril 2008 Dernière intervention - 3 juil. 2006 à 11:06 - Dernière réponse : allthew3 552 Messages postés samedi 8 janvier 2005Date d'inscription 12 avril 2008 Dernière intervention
- 17 juil. 2006 à 10:34
Bon, mes questions se compliquent ...

Bonjour à tous déjà.

En Visual Basic .net (2005 express edition), comment faire pour créer un point de restauration ?

merci d'avance pour les réponses
Afficher la suite 

19 réponses

Répondre au sujet
troxsa 553 Messages postés jeudi 28 novembre 2002Date d'inscription 2 octobre 2016 Dernière intervention - 5 juil. 2006 à 13:33
+3
Utile
non
Imports system.management !

http://msdn.microsoft.com/library/en-us/dnanchor/html/anch_wmi.asp

http://www.troxsa.info/
Le site qui ne parle qu'un seul langage, visual basic 2005
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de troxsa
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 3 juil. 2006 à 12:16
0
Utile
en Net je sais pas s'il existe quelque chose de spécial.


sinon il ya les API pour manipuler les points de Restautation

mais à utiliser avec grande précaution
http://windowssdk.msdn.microsoft.com/en-us/library/ms723699.aspx
Daniel
Commenter la réponse de Gobillot
allthew3 552 Messages postés samedi 8 janvier 2005Date d'inscription 12 avril 2008 Dernière intervention - 3 juil. 2006 à 12:27
0
Utile
euh sur qu'il y a pas de point de restauration ?
sinon je lancerais directement l'executable pour la création des points mais c'est un peu bidon lol

merci pour le lien mais je préfére pas risquer la vie de l'utilisateur ...
Commenter la réponse de allthew3
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 3 juil. 2006 à 12:44
0
Utile
ben je sais pas trop

comme c'est en Net faut surement adapter à cause des différences de types

et comme ça à l'air délicat parce que le Set peut aussi bien créer que utiliser, donc imposer un point de Restauration

à un utilisateur (même à soi même) c'est pas le top

faut mieux maitriser avant de se lancer


j'ai encore jamais utilisé le Set, mais j'ai déjà utilisé le Remove,
qui est tout simple à utiliser, il suffit de mettre le numéro
correspondant, ensuite on supprime les fichiers du répertoire et ça
fait gagner de la place.


   SRSetRestorePointA
   SRRemoveRestorePoint

Daniel
Commenter la réponse de Gobillot
allthew3 552 Messages postés samedi 8 janvier 2005Date d'inscription 12 avril 2008 Dernière intervention - 3 juil. 2006 à 17:20
0
Utile
ok merci : je demanderais à l'utilisateur par NotifyIcon de le faire soi même lol

je laisse le topic ouvert au cas où quelqu'un voudrais expliquer plus en détails ...
Commenter la réponse de allthew3
allthew3 552 Messages postés samedi 8 janvier 2005Date d'inscription 12 avril 2008 Dernière intervention - 3 juil. 2006 à 17:21
0
Utile
autrement pour "SRSetRestorePointA" : tu peux m'en dire plus pour que je me renseigne ? merci
Commenter la réponse de allthew3
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 3 juil. 2006 à 20:45
0
Utile
je peux te donner quelques renseignements en plus mais c'est du VB6


Private Const BEGIN_SYSTEM_CHANGE = 100

Private Const END_SYSTEM_CHANGE = 101

Private Const BEGIN_NESTED_SYSTEM_CHANGE = 102  ' for Whistler only - use this to prevent nested restore pts

Private Const END_NESTED_SYSTEM_CHANGE = 103    ' for Whistler only - use this to prevent nested restore pts


Private Const DESKTOP_SETTING = 2

Private Const ACCESSIBILITY_SETTING = 3

Private Const OE_SETTING = 4

Private Const APPLICATION_RUN = 5

Private Const WINDOWS_SHUTDOWN = 8

Private Const WINDOWS_BOOT = 9

Private Const MAX_DESC = 64

Private Const MAX_DESC_W = 256


Public Enum RestoreType

    APPLICATION_INSTALL = 0

    APPLICATION_UNINSTALL = 1

    MODIFY_SETTINGS = 12

    CANCELLED_OPERATION = 13 '/* Only valid for END_SYSTEM_CHANGE */

    Restore = 6

    CHECKPOINT = 7

    DEVICE_DRIVER_INSTALL = 10

    FIRSTRUN = 11

    BACKUP_RECOVERY = 14

End Enum


Private Type RESTOREPTINFOA

    dwEventType      As
Long               
' Type of Event - Begin or End

    dwRestorePtType  As
Long               
' Type of Restore Point - App install/uninstall

    llSequenceNumber As Currency            ' Sequence Number - 0 for begin

    szDescription    As String * MAX_DESC   ' Description - Name of Application / Operation

End Type


Private Type RESTOREPTINFOW

    dwEventType      As
Long               
' Type of Event - Begin or End

    dwRestorePtType  As
Long               
' Type of Restore Point - App install/uninstall

    llSequenceNumber As Currency            ' Sequence Number - 0 for begin

    szDescription    As String * MAX_DESC_W ' Description - Name of Application / Operation

    End Type

   

Private Type SMGRSTATUS

    nStatus As
Long                
' Status returned by State Manager Process

    llSequenceNumber As Currency    ' Sequence Number for the restore point

End Type


Private Declare Function SRSetRestorePointA Lib "srclient.dll"
(pRestorePtSpec As RESTOREPTINFOA, pSMgrStatus As SMGRSTATUS) As Long

Daniel
Commenter la réponse de Gobillot
allthew3 552 Messages postés samedi 8 janvier 2005Date d'inscription 12 avril 2008 Dernière intervention - 4 juil. 2006 à 18:32
0
Utile
ok merci je garde ça en mémoire mais bon je l'utiliserez surement pas avant assez longtemps (j'attend que mon niveau augmente)

merci encore @+
Commenter la réponse de allthew3
troxsa 553 Messages postés jeudi 28 novembre 2002Date d'inscription 2 octobre 2016 Dernière intervention - 5 juil. 2006 à 11:38
0
Utile
Pour faire un point de restauration il faut utiliser la methode Invoke d'une class WMI
et fait appel "SystemRestore"
pas besoin d'autre API

http://www.troxsa.info/
Le site qui ne parle qu'un seul langage, visual basic 2005
Commenter la réponse de troxsa
allthew3 552 Messages postés samedi 8 janvier 2005Date d'inscription 12 avril 2008 Dernière intervention - 5 juil. 2006 à 11:58
0
Utile
ah interessant,

et ça donne quoi ?
System.SystemRestore ??? lol
merci TroXsa
Commenter la réponse de allthew3
troxsa 553 Messages postés jeudi 28 novembre 2002Date d'inscription 2 octobre 2016 Dernière intervention - 5 juil. 2006 à 14:53
0
Utile
Google est ton pote, c'est le miens en tout cas ! :)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sr/sr/systemrestore.asp

http://www.google.fr/search?hl=fr&q=WMI+SystemRestore&btnG=Rechercher&meta=

Maintenant en cherchant avec mister google tu trouve des exemples a toi de les adaptés a ce que tu veux faire

enfin voila une question qui ce trouve pas dans les livres

http://www.troxsa.info/
Le site qui ne parle qu'un seul langage, visual basic 2005
Commenter la réponse de troxsa
allthew3 552 Messages postés samedi 8 janvier 2005Date d'inscription 12 avril 2008 Dernière intervention - 6 juil. 2006 à 11:18
0
Utile
ah merci ça c'est très utile.

msdn j'ai du mal, mais google j'ai même pas pensé à rechercher ... lol

merci troxsa ...
Commenter la réponse de allthew3
troxsa 553 Messages postés jeudi 28 novembre 2002Date d'inscription 2 octobre 2016 Dernière intervention - 6 juil. 2006 à 14:26
0
Utile
Aller je suis de bon coeur et je te donne la solution :)
ta vu j'suis simpa hien :) attention c'est pas tout les jours ! enfin avec si (presque) :)

Imports System
Imports System.Drawing
Imports System.Collections
Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Data
Imports System.Management



Namespace WMISample



    Public Class CallWMIMethod
        Inherits System.Windows.Forms.Form



        Friend WithEvents userNameLabel As System.Windows.Forms.Label
        Friend WithEvents userNameBox As System.Windows.Forms.TextBox
        Friend WithEvents passwordBox As System.Windows.Forms.TextBox
        Friend WithEvents passwordLabel As System.Windows.Forms.Label
        Friend WithEvents OKButton As System.Windows.Forms.Button
        Friend WithEvents closeButton As System.Windows.Forms.Button
       
        Private components As System.ComponentModel.IContainer



        Public Sub New()
            MyBase.New()



            InitializeComponent()
        End Sub



        Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
       
            If disposing Then
                If Not (components Is Nothing) Then
                    components.Dispose()
                End If
            End If
            MyBase.Dispose(disposing)
        End Sub



        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()



            Me.userNameLabel = new System.Windows.Forms.Label
            Me.userNameBox = new System.Windows.Forms.TextBox
            Me.passwordBox = new System.Windows.Forms.TextBox
            Me.passwordLabel = new System.Windows.Forms.Label
            Me.OKButton = new System.Windows.Forms.Button
            Me.closeButton = new System.Windows.Forms.Button
            Me.SuspendLayout()
            '
            ' userNameLabel
            '
            Me.userNameLabel.Location = New System.Drawing.Point(16, 8)
            Me.userNameLabel.Name = "userNameLabel"
            Me.userNameLabel.Size = New System.Drawing.Size(160, 32)
            Me.userNameLabel.TabIndex = 0
            Me.userNameLabel.Text = "Enter the user name for the remote computer:"
            '
            ' userNameBox
            '
            Me.userNameBox.Location = New System.Drawing.Point(160, 16)
            Me.userNameBox.Name = "userNameBox"
            Me.userNameBox.Size = New System.Drawing.Size(192, 20)
            Me.userNameBox.TabIndex = 1
            Me.userNameBox.Text = ""
            '
            ' passwordBox
            '
            Me.passwordBox.Location = New System.Drawing.Point(160, 48)
            Me.passwordBox.Name = "passwordBox"
            Me.passwordBox.PasswordChar = "*"
            Me.passwordBox.Size = new System.Drawing.Size(192, 20)
            Me.passwordBox.TabIndex = 3
            Me.passwordBox.Text = ""
            '
            ' passwordLabel
            '
            Me.passwordLabel.Location = new System.Drawing.Point(16, 48)
            Me.passwordLabel.Name = "passwordLabel"
            Me.passwordLabel.Size = new System.Drawing.Size(160, 32)
            Me.passwordLabel.TabIndex = 2
            Me.passwordLabel.Text = "Enter the password for the remote computer:"
            '
            ' OKButton
            '
            Me.OKButton.Location = New System.Drawing.Point(40, 88)
            Me.OKButton.Name = "OKButton"
            Me.OKButton.Size = new System.Drawing.Size(128, 23)
            Me.OKButton.TabIndex = 4
            Me.OKButton.Text = "OK"
            '
            ' closeButton
            '
            Me.closeButton.DialogResult = System.Windows.Forms.DialogResult.Cancel
            Me.closeButton.Location = New System.Drawing.Point(200, 88)
            Me.closeButton.Name = "closeButton"
            Me.closeButton.Size = New System.Drawing.Size(128, 23)
            Me.closeButton.TabIndex = 5
            Me.closeButton.Text = "Cancel"
            '
            ' MyQuerySample
            '
            Me.AcceptButton = Me.OKButton
            Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
            Me.CancelButton = Me.closeButton
            Me.ClientSize = New System.Drawing.Size(368, 130)
            Me.ControlBox = false
            Me.Controls.Add(Me.closeButton)
            Me.Controls.Add(Me.OKButton)
            Me.Controls.Add(Me.passwordBox)
            Me.Controls.Add(Me.passwordLabel)
            Me.Controls.Add(Me.userNameBox)
            Me.Controls.Add(Me.userNameLabel)
            Me.Name = "MyQuerySample"
            Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
            Me.Text = "Remote Connection"
            Me.ResumeLayout(false)



        End Sub



        Public Overloads Shared Function Main() As Integer



            Application.Run(New CallWMIMethod)
        End Function



        Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKButton.Click
            Try
                Dim connection As New ConnectionOptions
                connection.Username = userNameBox.Text
                connection.Password = passwordBox.Text
                connection.Authority = "ntlmdomain:DOMAIN"



                Dim scope As New ManagementScope( _
                    "
[file://\\FullComputerName\root\DEFAULT
\\FullComputerName\root\DEFAULT
]
", connection)
                scope.Connect()



               Dim classInstance As New ManagementObject(scope, _
                    New ManagementPath("SystemRestore.SequenceNumber='12'"), _
                    Nothing)



                ' Obtain [in] parameters for the method
                Dim inParams As ManagementBaseObject = _
                    classInstance.GetMethodParameters("CreateRestorePoint")



                ' Add the input parameters.



                ' Execute the method and obtain the return values.
                Dim outParams As ManagementBaseObject = _
                    classInstance.InvokeMethod("CreateRestorePoint", inParams, Nothing)



                ' List outParams
                Console.WriteLine("Out parameters:")
                Console.WriteLine("ReturnValue: {0}", outParams("ReturnValue"))



                Close()



            Catch err As ManagementException



                MessageBox.Show("An error occurred while trying to execute the WMI method: " & err.Message)



            Catch unauthorizedErr As System.UnauthorizedAccessException



                MessageBox.Show("Connection error (user name or password might be incorrect): " & unauthorizedErr.Message)
            End Try
        End Sub



        Private Sub closeButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles closeButton.Click



            Close()
        End Sub
    End Class
End Namespace


















http://www.troxsa.info/

Le site qui ne parle qu'un seul langage, visual basic 2005
Commenter la réponse de troxsa
troxsa 553 Messages postés jeudi 28 novembre 2002Date d'inscription 2 octobre 2016 Dernière intervention - 6 juil. 2006 à 14:28
0
Utile
Oups c'est de la version 2003, mais c'est pas tres grave ça fonctionne aussi avec 2005 a toi de mettre ce qu'il y a, a mettre dans le concepteur form et ça roulera sans probleme !

http://www.troxsa.info/
Le site qui ne parle qu'un seul langage, visual basic 2005
Commenter la réponse de troxsa
allthew3 552 Messages postés samedi 8 janvier 2005Date d'inscription 12 avril 2008 Dernière intervention - 7 juil. 2006 à 15:40
0
Utile
oups : merci mais ça suffisait ce que t'avais donné ...

mais bon voilà, au fait c'était juste un service Windows qui faisait ça donc pas de Form ...

merci quand même c'est très gentil de donner les soluces ...
Commenter la réponse de allthew3
allthew3 552 Messages postés samedi 8 janvier 2005Date d'inscription 12 avril 2008 Dernière intervention - 16 juil. 2006 à 20:24
0
Utile
euh j'ai honte pour ma question que je vais poser lol

Visual Basic express edition 2005 (en tout cas le mien lol) ne reconnait pas system.management

je doit importer un runtime ? une api ?? si oui laquelle ??? merci de répondre lol
Commenter la réponse de allthew3
allthew3 552 Messages postés samedi 8 janvier 2005Date d'inscription 12 avril 2008 Dernière intervention - 16 juil. 2006 à 20:26
0
Utile
j'ai rien dit : il suffisait d'importer system.management.dll lol
Commenter la réponse de allthew3
troxsa 553 Messages postés jeudi 28 novembre 2002Date d'inscription 2 octobre 2016 Dernière intervention - 17 juil. 2006 à 10:30
0
Utile
Tien tien ça fesais longtemp ! :)
et je dirais simple :  Ben la prochaine fois chercher avant de poster :)

@+

http://www.troxsa.info/
Le site qui ne parle qu'un seul langage, visual basic 2005
Commenter la réponse de troxsa
allthew3 552 Messages postés samedi 8 janvier 2005Date d'inscription 12 avril 2008 Dernière intervention - 17 juil. 2006 à 10:34
0
Utile
oui bin c'est déjà mieux de trouver par soi-même ... lol j'y penseré !
Commenter la réponse de allthew3

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.