Index: /trunk/EraserDll/FileLockResolver.cpp
===================================================================
--- /trunk/EraserDll/FileLockResolver.cpp	(revision 839)
+++ /trunk/EraserDll/FileLockResolver.cpp	(revision 840)
@@ -36,5 +36,5 @@
 CFileLockResolver::CFileLockResolver(BOOL askUser)
 : m_bAskUser(askUser), m_hHandle(ERASER_INVALID_CONTEXT),
-  m_iMethod(0), m_iPasses(0)
+  m_iMethod(0), m_defaultAction(-1), m_iPasses(0)
 {
 
@@ -127,20 +127,30 @@
 		|| ERROR_SHARING_VIOLATION == dwErrorCode)
 	{
-		if (TRUE == m_bAskUser)
+		int eraseOnRestart = !m_bAskUser || m_defaultAction == 1;
+		if (m_bAskUser && m_defaultAction == -1)
 		{
-			if (IDYES == AfxMessageBox(CString("The file ") +
-				szFileName + "\nis locked by another process. Do you want to Erase the file after " +
-				"you restart your computer?", MB_YESNO | MB_ICONQUESTION))
+			int dlgCode = AfxMessageBox(CString("The file ") + szFileName +
+				"\nis locked by another process. Do you want to Erase the file "
+				"after you restart your computer?", MB_YESNO | MB_ICONQUESTION);
+
+			eraseOnRestart = dlgCode == IDYES;
+			if (AfxMessageBox("Remember this decision for the rest of this erase?",
+				MB_YESNO | MB_ICONQUESTION) == IDYES)
 			{
-				if (m_strLockFileList.IsEmpty())
-					m_strLockFileList = GetLockFilePath();
-				std::ofstream os(m_strLockFileList, std::ios_base::out | std::ios_base::app);		
-				os << FileData(szFileName, method, passes);
-
-				ASSERT(m_iMethod == 0 || m_iMethod == method);
-				ASSERT(m_iPasses == 0 || m_iPasses == passes);
-				m_iMethod = method;
-				m_iPasses = passes;
+				m_defaultAction = eraseOnRestart;
 			}
+		}
+
+		if (eraseOnRestart)
+		{
+			if (m_strLockFileList.IsEmpty())
+				m_strLockFileList = GetLockFilePath();
+			std::ofstream os(m_strLockFileList, std::ios_base::out | std::ios_base::app);		
+			os << FileData(szFileName, method, passes);
+
+			ASSERT(m_iMethod == 0 || m_iMethod == method);
+			ASSERT(m_iPasses == 0 || m_iPasses == passes);
+			m_iMethod = method;
+			m_iPasses = passes;
 		}
 	}
Index: /trunk/EraserDll/FileLockResolver.h
===================================================================
--- /trunk/EraserDll/FileLockResolver.h	(revision 839)
+++ /trunk/EraserDll/FileLockResolver.h	(revision 840)
@@ -27,10 +27,9 @@
 {
 public:
-	
 	CFileLockResolver(BOOL = FALSE);
 	~CFileLockResolver(void);
 	void Close();
+
 private:
-	
 	CFileLockResolver(ERASER_HANDLE, BOOL);
 	inline void AskUser(BOOL val)
@@ -38,13 +37,18 @@
 		m_bAskUser = val;
 	}
+
 public:
 	void SetHandle(ERASER_HANDLE);
 	static void Resolve(LPCTSTR szFileName, CStringArray&);
+
 private:
 	BOOL m_bAskUser;	
 	CString m_strLockFileList;
 	ERASER_HANDLE m_hHandle;
+
 	int m_iMethod;
+	int m_defaultAction;
 	unsigned m_iPasses;
+
 private:
 	static CString GetLockFilePath(bool path_only = false);
