I checked around and even utilized/tweaked several solutions including the following, but I keep getting one of two errors. I either get
************** Exception Text **************
System.Runtime.InteropServices.COMException (0x80070422)
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at System.Management.ManagementObject.InvokeMethod(String methodName, ManagementBaseObject inParameters, InvokeMethodOptions options)
at Check_In_Tool.checkInForm.CreateRestorePoint() in C:\Users\Greg\Source\Repos\Check In Tool\Check In Tool\Check In Tool\Form1.cs:line 268
at Check_In_Tool.checkInForm.button1_Click(Object sender, EventArgs e) in C:\Users\Greg\Source\Repos\Check In Tool\Check In Tool\Check In Tool\Form1.cs:line 64
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam))
or
The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
The code I am using currently is as follows:
try
{
// select local computer
ManagementScope ManScope = new ManagementScope("\\\\localhost\\root\\DEFAULT");
// create system restore point
ManagementPath ManPath = new ManagementPath("SystemRestore");
// select default options
ObjectGetOptions ManOptions = new ObjectGetOptions();
// create management class with previous options
ManagementClass ManClass = new ManagementClass(ManScope, ManPath, ManOptions);
// load function parameters
ManagementBaseObject ManBaseObject = ManClass.GetMethodParameters("CreateRestorePoint");
// description
ManBaseObject["Description"] = "Check-In Tool Restore Point";
// type of the restore point
ManBaseObject["RestorePointType"] = 0;
// type of the event
ManBaseObject["EventType"] = 100;
ManagementBaseObject OutParam = ManClass.InvokeMethod("CreateRestorePoint", ManBaseObject, null);
restLabel.Text = "Restore Point Set: Yes";
}
catch (ManagementException err)
{
restLabel.Text = "Restore Point Set: No - Error";
MessageBox.Show(err.Message);
}
Edit: I updated my code from err.Message to err.ToString() and got some new information. The issue, apparently, lies within this line of code:
ManagementBaseObject OutParam = ManClass.InvokeMethod("CreateRestorePoint", ManBaseObject, null);
Any ideas?