एक प्रोग्राम पुनर्स्थापना बिंदु प्रोग्रामेटिक रूप से कैसे बनाएँ?

मैं बटन दबाकर वर्तमान दिनांक और समय के साथ सिस्टम पुनर्स्थापना बिंदु बनाने का एक तरीका ढूंढ रहा हूं। मैंने ऐसा करने के लिए एक सरल तरीके से वेब खोजने की कोशिश की है लेकिन मुझे अभी तक कोई नहीं मिला है।

मुझे यह कोड स्निपेट मिला: http://msdn.microsoft.com/en-us/library/windows/desktop/aa378847%28v=vs.85%29.aspx लेकिन यह वीबी में है और सी # नहीं, मैंने इसे थोड़ा सा बदलने की कोशिश की लेकिन मुझे नहीं लगता कि मैं इसका अनुवाद करने का एक अच्छा काम कर रहा हूं।

'CreateRestorePoint Method of the SystemRestore Class
'Creates a restore point. Specifies the beginning and 
'the ending of a set of changes so that System Restore 
'can create a restore point.This method is the 
'scriptable equivalent of the SRSetRestorePoint function.

Set Args = wscript.Arguments
If Args.Count() > 0 Then
    RpName = Args.item(0)
Else 
    RpName = "Vbscript"
End If

Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/default:SystemRestore")

If (obj.CreateRestorePoint(RpName, 0, 100)) = 0 Then
wscript.Echo "Success"
Else 
    wscript.Echo "Failed"
End If
6
जोड़ा संपादित
विचारों: 1
यह प्रश्न भी देखें:
जोड़ा लेखक M4N, स्रोत

3 उत्तर

पुनर्स्थापना बिंदु बनाने के लिए यहां एक VB.NET स्निपेट है ( यहां मिला ):

Dim restPoint = GetObject("winmgmts:\\.\root\default:Systemrestore")
If restPoint IsNot Nothing Then
     If restPoint.CreateRestorePoint("test restore point", 0, 100) = 0 Then
         MsgBox("Restore Point created successfully")
    Else
         MsgBox("Could not create restore point!")
     End If
End If

सी # में "अनुवाद" करना आसान होना चाहिए।

और यहाँ इस प्रश्न से लिया गया सी # में एक और स्निपेट है:

private void CreateRestorePoint(string description)
{
    ManagementScope oScope = new ManagementScope("\\\\localhost\\root\\default");
    ManagementPath oPath = new ManagementPath("SystemRestore");
    ObjectGetOptions oGetOp = new ObjectGetOptions();
    ManagementClass oProcess = new ManagementClass(oScope, oPath, oGetOp);

    ManagementBaseObject oInParams =
         oProcess.GetMethodParameters("CreateRestorePoint");
    oInParams["Description"] = description;
    oInParams["RestorePointType"] = 12;//MODIFY_SETTINGS
    oInParams["EventType"] = 100;

    ManagementBaseObject oOutParams =
         oProcess.InvokeMethod("CreateRestorePoint", oInParams, null); 
}
8
जोड़ा
@ बाउंडिनैश 6: आपको शायद सिस्टम के लिए एक संदर्भ जोड़ना होगा। प्रबंधन (यहां देखें: msdn.microsoft.com/en-us/library/… )
जोड़ा लेखक M4N, स्रोत
मैंने कोशिश की कि एक पिछले @ एम 4 एन, यह मुझे लापता असेंबली संदर्भ त्रुटियों का एक गुच्छा देता है। मुझे यकीन नहीं है कि मुझे कौन सा जोड़ना है।
जोड़ा लेखक Boundinashes6, स्रोत
सी # का उपयोग करके जवाब देने के लिए कहा जाता है। वैसे भी अच्छा जवाब।
जोड़ा लेखक daryal, स्रोत

देर हो चुकी है, लेकिन मैंने एम 4 एन से जवाब में सुधार किया ...

/// 
/// The type of event. For more information, see . ///
 
public enum EventType
{
    /// 
/// A system change has begun. A subsequent nested call does not create a new restore /// point. /// /// Subsequent calls must use , not /// . /// ///
 
    BeginNestedSystemChange = 0x66,

    /// 
/// A system change has begun. ///
 
    BeginSystemChange = 0x64,

    /// 
/// A system change has ended. ///
 
    EndNestedSystemChange = 0x67,

    /// 
/// A system change has ended. ///
 
    EndSystemChange = 0x65
}

/// 
/// The type of restore point. For more information, see . ///
 
public enum RestorePointType
{
    /// 
/// An application has been installed. ///
 
    ApplicationInstall = 0x0,

    /// 
/// An application has been uninstalled. ///
 
    ApplicationUninstall = 0x1,

    /// 
/// An application needs to delete the restore point it created. For example, an /// application would use this flag when a user cancels an installation. ///
 
    CancelledOperation = 0xd,

    /// 
/// A device driver has been installed. ///
 
    DeviceDriverInstall = 0xa,

    /// 
/// An application has had features added or removed. ///
 
    ModifySettings = 0xc
}

/// 
/// Creates a restore point on the local system. ///
 
/// 
///     The description to be displayed so the user can easily identify a restore point.
/// 
/// 
///     The type of event.
/// 
/// 
///     The type of restore point. 
/// 
/// 
///     Access denied.
/// 
public static void CreateRestorePoint(string description, EventType eventType, RestorePointType restorePointType)
{
    var mScope = new ManagementScope("\\\\localhost\\root\\default");
    var mPath = new ManagementPath("SystemRestore");
    var options = new ObjectGetOptions();
    using (var mClass = new ManagementClass(mScope, mPath, options))
    using (var parameters = mClass.GetMethodParameters("CreateRestorePoint"))
    {
        parameters["Description"] = description;
        parameters["EventType"] = (int)eventType;
        parameters["RestorePointType"] = (int)restorePointType;
        mClass.InvokeMethod("CreateRestorePoint", parameters, null);
    }
}

उदाहरण:

CreateRestorePoint("Example Restore Point", EventType.BeginSystemChange, RestorePointType.ModifySettings);
2
जोड़ा
कृपया उपयोगकर्ता को कोड समझने के लिए कुछ स्पष्टीकरण प्रदान करें और न केवल कोड प्रदान करने के लिए कैसे उपयोग करें।
जोड़ा लेखक CodeChanger, स्रोत
मैंने सोचा कि आंतरिक कोड सारांशों के कारण यह आत्म-व्याख्यात्मक था। लेकिन मैंने एक उदाहरण जोड़ा।
जोड़ा लेखक Si13n7, स्रोत
var restPoint = GetObject(@"winmgmts:\\.\root\default:Systemrestore");
if(restPoint!=null)
{
    if(restPoint.CreateRestorePoint("", 0, 100) == 0)
    {
        //do something
    }
    else
    {
         //do something
    }
}
0
जोड़ा
ydd1987, केवल कोड ही उत्तर उपयोगी नहीं होते क्योंकि वे उत्तर के बिंदु की व्याख्या नहीं करते हैं। कृपया थोड़ा विस्तार करें।
जोड़ा लेखक Jacobm001, स्रोत
आपकी प्रतिक्रिया @ डेविड ब्रैबेंट के लिए धन्यवाद, जो मुझे इस बिंदु पर एक अज्ञात भागने अनुक्रम त्रुटि दे रहा है var restPoint = GetObject ("winmgmts: \\। \ Root \ default: systemrestore");
जोड़ा लेखक Boundinashes6, स्रोत
ठीक है कि त्रुटि चली गई है लेकिन अब मुझे निम्न त्रुटि मिल रही है: वर्तमान संदर्भ में 'GetObject' नाम मौजूद नहीं है
जोड़ा लेखक Boundinashes6, स्रोत
जवाब youhannesdedope से है। बचने की समस्या को ठीक करने के लिए इसे संपादित किया गया।
जोड़ा लेखक David Brabant, स्रोत