[DllImport("shell32.dll")]
static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex);
None.
Even though the Win32 function signature declares the third parameter as UINT nIconIndex, in .NET it must be a signed integer. This is because UINT is actually an alias for the int data type. Also, ExtractIcon() accepts -1 (an invalid value for unsigned integers) as an icon index, which will return the total number of icons in the specified file.
Please add some!
string fileName = "C:\\Test.txt";
System.Drawing.Icon MyIcon = System.Drawing.Icon.ExtractAssociatedIcon(fileName);
pictureBox1.Image = MyIcon.ToBitmap();
System.Drawing.Icon.ExtractAssociatedIcon(fileName);