diff --git a/connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/SharedDriveConnector.java b/connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/SharedDriveConnector.java
index 88dad7e..1819640 100644
--- a/connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/SharedDriveConnector.java
+++ b/connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/SharedDriveConnector.java
@@ -51,6 +51,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InterruptedIOException;
+import java.lang.reflect.Method;
 import java.net.MalformedURLException;
 import java.net.UnknownHostException;
 import java.nio.charset.StandardCharsets;
@@ -118,6 +119,7 @@ public class SharedDriveConnector extends org.apache.manifoldcf.crawler.connecto
   private String password = null;
   private boolean useSIDs = true;
   private String binName = null;
+  private boolean preserveLastAccessTime = false;
   
   private NtlmPasswordAuthentication pa;
   
@@ -233,6 +235,12 @@ public class SharedDriveConnector extends org.apache.manifoldcf.crawler.connecto
     if (useSIDsString == null)
       useSIDsString = "true";
     useSIDs = "true".equals(useSIDsString);
+    
+    String preserveLastAccessTimeString = configParameters.getParameter(SharedDriveParameters.preserveLastAccessTime);
+    if (preserveLastAccessTimeString == null) {
+    	preserveLastAccessTimeString = "false";
+    }
+    preserveLastAccessTime = "true".equalsIgnoreCase(preserveLastAccessTimeString);
 
     
     String configBinName = configParameters.getParameter(SharedDriveParameters.binName);
@@ -581,6 +589,7 @@ public class SharedDriveConnector extends org.apache.manifoldcf.crawler.connecto
       // Common info we really need to fetch only once
       long fileLength = 0L;
       long lastModified = 0L;
+      long lastAccess = 0L;
       boolean fileExists = false;
       boolean fileIsDirectory = false;
       
@@ -595,6 +604,12 @@ public class SharedDriveConnector extends org.apache.manifoldcf.crawler.connecto
         // We MUST check the specification here, otherwise a recrawl may not delete what it's supposed to!
         if (fileExists && newPath != null)
         {
+    	  try {
+			final Method lastAccessMethod = file.getClass().getMethod("lastAccess", new Class<?>[0]);
+			lastAccess = (long) lastAccessMethod.invoke(file, new Object[0]);
+          } catch (Exception e) {
+			// Means that the JCIFS lib does not implement the lastAccess method => Do nothing
+          }
           fileIsDirectory = fileIsDirectory(file);
           if (checkInclude(fileIsDirectory,newPath,spec))
           {
@@ -1130,6 +1145,16 @@ public class SharedDriveConnector extends org.apache.manifoldcf.crawler.connecto
         }
         
       }
+      
+      // Reset lastAccessTime if asked by the configuration and possible
+      try {
+    	if(preserveLastAccessTime && lastAccess != 0L) {
+    		final Method setLastAccessMethod = file.getClass().getMethod("setLastAccess", new Class[] { long.class });
+    		setLastAccessMethod.invoke(file, new Object[] { lastAccess });
+    	}
+      } catch (Exception e) {
+    	// Means that the JCIFS lib does not implement the setLastAccessMethod method => Do nothing
+      }
     }
   }
 
@@ -2611,6 +2636,23 @@ public class SharedDriveConnector extends org.apache.manifoldcf.crawler.connecto
     if (resolvesids==null) resolvesids = "true";
     String binName = parameters.getParameter(SharedDriveParameters.binName);
     if (binName == null) binName = "";
+    
+    String preservelastaccesstime = parameters.getParameter(SharedDriveParameters.preserveLastAccessTime);
+    if (preservelastaccesstime==null) {
+    	preservelastaccesstime = "false";
+    }
+    String disablePreserveLastAccess = "";
+    String unavailablePreserveLastAccess = "";
+    try {
+    	// Test if lastAccess and setLastAccess methods are present in the provided JCIFS lib
+		SmbFile.class.getMethod("lastAccess", new Class<?>[0]);
+		SmbFile.class.getMethod("setLastAccess", new Class[] { long.class });
+	} catch (Exception e) {
+		// Preserve last access time feature not available : disable the input checkbox and force the value to false
+		disablePreserveLastAccess = "disabled";
+		preservelastaccesstime = "false";
+		unavailablePreserveLastAccess = "[UNAVAILABLE] ";
+	} 
 
     // "Server" tab
     if (tabName.equals(Messages.getString(locale,"SharedDriveConnector.Server")))
@@ -2644,6 +2686,11 @@ public class SharedDriveConnector extends org.apache.manifoldcf.crawler.connecto
 "    <td class=\"description\"><nobr>" + Messages.getBodyString(locale,"SharedDriveConnector.BinName") + "</nobr></td>\n"+
 "    <td class=\"value\"><input type=\"text\" size=\"32\" name=\"binname\" value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(binName)+"\"/></td>\n"+
 "  </tr>\n"+
+"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"+
+"  <tr>\n"+
+"    <td class=\"description\"><nobr>" + unavailablePreserveLastAccess + Messages.getBodyString(locale,"SharedDriveConnector.PreserveLastAccessTime") + "</nobr></td>\n"+
+"    <td class=\"value\"><input type=\"checkbox\" value=\"true\" name=\"preservelastaccesstime\" "+("true".equals(preservelastaccesstime)?"checked=\"true\"":"")+ " " + disablePreserveLastAccess + "/></td>\n"+
+"  </tr>\n"+
 "</table>\n"
       );
     }
@@ -2656,7 +2703,8 @@ public class SharedDriveConnector extends org.apache.manifoldcf.crawler.connecto
 "<input type=\"hidden\" name=\"password\" value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(password)+"\"/>\n"+
 "<input type=\"hidden\" name=\"resolvesidspresent\" value=\"true\"/>\n"+
 "<input type=\"hidden\" name=\"resolvesids\" value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(resolvesids)+"\"/>\n"+
-"<input type=\"hidden\" name=\"binname\" value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(binName)+"\"/>\n"
+"<input type=\"hidden\" name=\"binname\" value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(binName)+"\"/>\n"+
+"<input type=\"hidden\" name=\"preservelastaccesstime\" value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(preservelastaccesstime)+"\"/>\n"
       );
     }
   }
@@ -2702,6 +2750,12 @@ public class SharedDriveConnector extends org.apache.manifoldcf.crawler.connecto
     String binName = variableContext.getParameter("binname");
     if (binName != null)
     	parameters.setParameter(SharedDriveParameters.binName, binName);
+    
+    parameters.setParameter(SharedDriveParameters.preserveLastAccessTime,"false");
+    String preservelastaccesstime = variableContext.getParameter("preservelastaccesstime");
+    if(preservelastaccesstime != null) {
+    	parameters.setParameter(SharedDriveParameters.preserveLastAccessTime, preservelastaccesstime);
+    }
 
     return null;
   }
diff --git a/connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/SharedDriveParameters.java b/connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/SharedDriveParameters.java
index fe7b788..c7eb901 100644
--- a/connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/SharedDriveParameters.java
+++ b/connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/SharedDriveParameters.java
@@ -40,4 +40,7 @@ public class SharedDriveParameters
 
   /* User-settable bin name */
   public final static String binName = "Bin Name";
+  
+  /* Preserve last access time of crawled files */
+  public final static String preserveLastAccessTime = "Preserve last access time of crawled files";
 }
diff --git a/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_en_US.properties b/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_en_US.properties
index 3752eab..a12751f 100644
--- a/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_en_US.properties
+++ b/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_en_US.properties
@@ -97,3 +97,4 @@ SharedDriveConnector.NoFileNameMappingsSpecified=No file name mappings specified
 SharedDriveConnector.URLMappingColon=URL Mapping:
 SharedDriveConnector.MaximumDocumentLength=Maximum document length:
 SharedDriveConnector.BinName=Bin Name (optional):
+SharedDriveConnector.PreserveLastAccessTime=Preserve last access time of crawled files
diff --git a/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_es_ES.properties b/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_es_ES.properties
index fe50636..706a3ad 100644
--- a/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_es_ES.properties
+++ b/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_es_ES.properties
@@ -97,3 +97,4 @@ SharedDriveConnector.NoFileNameMappingsSpecified=No hay trazado de mapa de nombr
 SharedDriveConnector.URLMappingColon=URL Trazar un mapa:
 SharedDriveConnector.MaximumDocumentLength=Longitud máxima del documento:
 SharedDriveConnector.BinName=Bin Name (optional):
+SharedDriveConnector.PreserveLastAccessTime=Conservar el ltimo tiempo de acceso de los archivos rastreados
diff --git a/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_ja_JP.properties b/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_ja_JP.properties
index 4da45d8..746a750 100644
--- a/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_ja_JP.properties
+++ b/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_ja_JP.properties
@@ -96,3 +96,4 @@ SharedDriveConnector.NoFileNameMappingsSpecified=ファイル名パターンを
 SharedDriveConnector.URLMappingColon=URLパターン：
 SharedDriveConnector.MaximumDocumentLength=最大コンテンツ長：
 SharedDriveConnector.BinName=Bin Name (optional):
+SharedDriveConnector.PreserveLastAccessTime=Preserve last access time of crawled files
diff --git a/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_zh_CN.properties b/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_zh_CN.properties
index 8befc03..1628e9e 100644
--- a/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_zh_CN.properties
+++ b/connectors/jcifs/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/sharedrive/common_zh_CN.properties
@@ -96,3 +96,4 @@ SharedDriveConnector.NoFileNameMappingsSpecified=请指定文件名映射
 SharedDriveConnector.URLMappingColon=URL映射: 
 SharedDriveConnector.MaximumDocumentLength=最大文档长度: 
 SharedDriveConnector.BinName=Bin Name (optional):
+SharedDriveConnector.PreserveLastAccessTime=Preserve last access time of crawled files
