Bonne question : comment faire un point de restauration ?

Résolu
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 - 3 juil. 2006 à 11:06
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 - 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

19 réponses

troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
5 juil. 2006 à 13:33
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
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 juil. 2006 à 12:16
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
0
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
3 juil. 2006 à 12:27
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 ...
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 juil. 2006 à 12:44
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
3 juil. 2006 à 17:20
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 ...
0
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
3 juil. 2006 à 17:21
autrement pour "SRSetRestorePointA" : tu peux m'en dire plus pour que je me renseigne ? merci
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 juil. 2006 à 20:45
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
0
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
4 juil. 2006 à 18:32
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 @+
0
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
5 juil. 2006 à 11:38
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
0
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
5 juil. 2006 à 11:58
ah interessant,

et ça donne quoi ?
System.SystemRestore ??? lol
merci TroXsa
0
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
5 juil. 2006 à 14:53
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
0
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
6 juil. 2006 à 11:18
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 ...
0
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
6 juil. 2006 à 14:26
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
0
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
6 juil. 2006 à 14:28
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
0
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
7 juil. 2006 à 15:40
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 ...
0
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
16 juil. 2006 à 20:24
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
0
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
16 juil. 2006 à 20:26
j'ai rien dit : il suffisait d'importer system.management.dll lol
0
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
17 juil. 2006 à 10:30
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
0
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
17 juil. 2006 à 10:34
oui bin c'est déjà mieux de trouver par soi-même ... lol j'y penseré !
0
Rejoignez-nous