title: "Date Taken" not showing up in Image PropertyItems while it shows in file details (file properties) in Windows Explorer
body: <p>I'm a little bit surprised and puzzled.  I try to read the property items from an image.  Particularly, I'm interested in the "Date Taken".  I have written a procedure that does exactly that.  More or less.  With some files it works perfectly, but...</p>
  
  <p>I have some files that have a 'Date Taken' in the properties (when viewed by Windows Explorer, Windows 7 x64).  They differ from the date created, modified and accessed.  So I do have a 4th date.
  However, if I loop through the property items, it does not show up (on any ID).
  When I look for it on the PropertyItem.Id (0x9003 or 36867), i get that the property item does not exist.</p>
  
  <p>My Code to loop through the property items:</p>
  
  <pre><code>        for (int i = 0; i &lt; fileNames.Length; i++)
          {
              FileStream fs = new FileStream(fileNames[i], FileMode.Open, FileAccess.Read);
              Image pic = Image.FromStream(fs, false, false);
  
  
  
              int t = 0;
              foreach (PropertyItem pii in pic.PropertyItems)
              {
                  MessageBox.Show(encoding.GetString(pii.Value, 0, pii.Len - 1) + " - ID: " + t.ToString());
                  t++;
              }
          }
  </code></pre>
  
  <p>The code to read only the "Date Taken" property (I stole from here: <a href="http://snipplr.com/view/25074/" rel="nofollow">http://snipplr.com/view/25074/</a>)</p>
  
  <pre><code>    public static DateTime DateTaken(Image getImage)
      {
          int DateTakenValue = 0x9003; //36867;
  
          if (!getImage.PropertyIdList.Contains(DateTakenValue))
              return DateTime.Parse("01-01-2000");
  
          string dateTakenTag = System.Text.Encoding.ASCII.GetString(getImage.GetPropertyItem(DateTakenValue).Value);
          string[] parts = dateTakenTag.Split(':', ' ');
          int year = int.Parse(parts[0]);
          int month = int.Parse(parts[1]);
          int day = int.Parse(parts[2]);
          int hour = int.Parse(parts[3]);
          int minute = int.Parse(parts[4]);
          int second = int.Parse(parts[5]);
  
          return new DateTime(year, month, day, hour, minute, second);
      }
  </code></pre>
  
  <p>However, when I change the date taken in the 'File properties window' of Windows Explorer, It starts to show up in my program.</p>
  
  <p>So my question is:  Where does this "Date Taken" comes from?  How can I access it?  Could it be that there is another source of information besides the EFIX Data?</p>
  
  <p>Thanks!</p>