maniG Posted June 14, 2017 Posted June 14, 2017 (edited) I am using the following code in my visual basic script to enable system protection in windows 10 and it works perfectly fine. I am looking for a visual basic code that checks if protection on particular drive is enabled or not? and Sets Max usage to 15%. If Not WScript.Arguments.Named.Exists("elevate") Then CreateObject("Shell.Application").ShellExecute WScript.FullName _ , WScript.ScriptFullName & " /elevate", "", "runas", 1 WScript.Quit End If Dim oSR Set oSR = GetObject("winmgmts:{impersonationLevel=impersonate}!root/default:SystemRestore") oSR.Enable("C:" & "\") If someone can highlight the version of windows this code is compatible for, that would be great. Edited June 17, 2017 by maniG
gunsmokingman Posted June 16, 2017 Posted June 16, 2017 I am not sure what you want but using this reference https://msdn.microsoft.com/en-us/library/windows/desktop/aa378858(v=vs.85).aspx I put together this script run it and see if it what you need. Dim d,oWMI, oSR, colItem, objItem Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Set oSR = GetObject("winmgmts:{impersonationLevel=impersonate}!root/default:SystemRestore") Set colItem = oWMI.ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType=3") On Error Resume Next For Each objItem In colItem d = objItem.Name & "\" If (oSR.Enable(d)) = 0 Then wscript.Echo "Success" & vbTab & d Else wscript.Echo "Failed " & vbTab & d End If Next
Yzöwl Posted June 17, 2017 Posted June 17, 2017 To check if system protection is enabled, I would probably use the registry to determine if RPSessionInterval is greater than 0. In a batch file to enable system protection on the OS drive with a maximum 15% size I would try this As administrator: @ECHO OFF SET "rKey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore" SET "rVal=RPSessionInterval" SET "dVal=" FOR /F "EOL=H Tokens=2*" %%# IN ('REG Query "%rKey%" /V "%rVal%" 2^>NUL' ) DO SET/A "dVal=%%$" IF NOT DEFINED dVal (ECHO ERROR! & PAUSE & EXIT/B) IF %dVal% EQU 0 ( WMIC /NameSpace:\\root\default PATH SystemRestore CALL Enable %SystemDrive%) VSSADMIN Resize Shadowstorage /For=%SystemDrive% /On=%SystemDrive% /MaxSize=15%% This is untested, (I am not telling you to change scripting language, just showing you a method of detection of the state of the mechanism). 1
maniG Posted June 17, 2017 Author Posted June 17, 2017 On 6/16/2017 at 9:37 PM, gunsmokingman said: I am not sure what you want but using this reference https://msdn.microsoft.com/en-us/library/windows/desktop/aa378858(v=vs.85).aspx I put together this script run it and see if it what you need. Dim d,oWMI, oSR, colItem, objItem Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Set oSR = GetObject("winmgmts:{impersonationLevel=impersonate}!root/default:SystemRestore") Set colItem = oWMI.ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType=3") On Error Resume Next For Each objItem In colItem d = objItem.Name & "\" If (oSR.Enable(d)) = 0 Then wscript.Echo "Success" & vbTab & d Else wscript.Echo "Failed " & vbTab & d End If Next Hey thankyou for the answer. I have made changes to the code. Basically before we create a restore point, system restore must be enabled and I wanted to know a way to check if it is enabled or not.
maniG Posted June 17, 2017 Author Posted June 17, 2017 10 hours ago, Yzöwl said: To check if system protection is enabled, I would probably use the registry to determine if RPSessionInterval is greater than 0. In a batch file to enable system protection on the OS drive with a maximum 15% size I would try this As administrator: @ECHO OFF SET "rKey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore" SET "rVal=RPSessionInterval" SET "dVal=" FOR /F "EOL=H Tokens=2*" %%# IN ('REG Query "%rKey%" /V "%rVal%" 2^>NUL' ) DO SET/A "dVal=%%$" IF NOT DEFINED dVal (ECHO ERROR! & PAUSE & EXIT/B) IF %dVal% EQU 0 ( WMIC /NameSpace:\\root\default PATH SystemRestore CALL Enable %SystemDrive%) VSSADMIN Resize Shadowstorage /For=%SystemDrive% /On=%SystemDrive% /MaxSize=15%% This is untested, (I am not telling you to change scripting language, just showing you a method of detection of the state of the mechanism). That seems to be a good way to check. So far what I have done is my script will attempt to create a restore point and in case of error it will call a function that will enable protection and then again create a restore point or will exit in case of success. Thank you for your help.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now