應用程式可以在造成重大系統變更之前建立還原點,例如安裝、卸載或更新。
安裝程式應該先建立還原點再安裝,方法是呼叫 SRSetRestorePoint 函式,並將 RESTOREPOINTINFO 結構 dwEventType 成員設定為 BEGIN_SYSTEM_CHANGE。 若要通知系統還原安裝已完成,請呼叫 SRSetRestorePoint,並將 dwEventType 設定為 END_SYSTEM_CHANGE。
如果使用者取消應用程式安裝,安裝程式可能會移除安裝開始時所建立的還原點。 移除還原點是選擇性的,且可能會防止使用者從安裝程式取消過程中的意外變更中復原。 如果安裝程式要移除還原點,它可以呼叫 SRRemoveRestorePoint 函式,或呼叫 SRSetRestorePoint,並將 dwRestorePointType 設定為 CANCELLED_OPERATION、dwEventType 設定為 END_SYSTEM_CHANGE,llSequenceNumber 設定為 SRSetRestorePoint的初始呼叫所傳回的值。
從 Windows 8 開始,開發人員可以撰寫在 HKLM\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore 登錄機碼下建立 DWORD 值 SystemRestorePointCreationFrequency 的應用程式。 此登錄機碼的值可以變更還原點建立的頻率。 根據預設,此機碼不存在。
當應用程式呼叫 SRSetRestorePoint 函式來建立還原點時,會視密鑰的內容而定,發生下列其中一項:
如果密鑰不存在(預設值),且在過去 24 小時內已建立任何還原點,Windows 會略過建立這個新的還原點。 系統還原會將
STATEMGRSTATUS結構的IISequenceNumber成員設定為先前在日中建立之還原點的序號,並將nStatus成員的值設定為ERROR_SUCCESS。 SRSetRestorePoint 函式會傳回TRUE。如果登錄機碼值為 0,系統還原不會略過建立新的還原點。
如果登錄機碼值是整數 N,如果前 N 分鐘內建立任何還原點,系統還原會略過建立新的還原點。
在 Windows 8 上執行的系統還原會監視僅與系統還原相關的開機磁碟區中的檔案。 如果 Windows 8 上執行的系統還原所建立的開機磁碟區快照,之後被早期版本的 Windows 暴露,該快照可能會被刪除。 請注意,雖然只有一個系統磁碟區,但多開機系統中每個作系統都有一個開機磁碟區。
開發人員可以撰寫在 HKLM\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore 登錄機碼下建立 DWORD 值 ScopeSnapshots 的應用程式。 如果此登錄機碼值為0,系統還原會以與舊版Windows相同的方式建立開機磁碟區的快照集。 如果已刪除此值,Windows 8 上執行的系統還原會繼續建立快照集,以監視僅與系統還原相關的開機磁碟區中的檔案。