¿Se puede configurar .NET OpenFileDialog para permitir al usuario seleccionar un archivo .lnk?

Quiero mostrar un cuadro de diálogo que permitirá al usuario seleccionar un archivo de acceso directo (.lnk). Mi problema es que el cuadro de diálogo intenta obtener el archivo / URL al que apunta el acceso directo en lugar del archivo .lnk.

¿Cómo puedo hacer que permita la selección de archivos .lnk?

Puede usar la propiedad OpenFileDialog.DereferenceLinks para influir en ese comportamiento ( ver documento ).

 var dlg = new OpenFileDialog(); dlg.FileName = null; dlg.DereferenceLinks = false; if (dlg.ShowDialog() == DialogResult.OK) { this.label1.Text = dlg.FileName; } 

o

 var dlg = new OpenFileDialog(); dlg.FileName = null; this.openFileDialog1.Filter = "Link (*.lnk)|*.lnk"; if (dlg.ShowDialog() == DialogResult.OK) { this.label1.Text = dlg.FileName; 

Ambos métodos producen un archivo .lnk , sin embargo, el primer enfoque permite la selección de archivos .lnk o archivos normales, mientras que el segundo solo selecciona archivos .lnk .

El siguiente código devolvió un nombre de archivo .lnk para mí

  public static string PromptForOpenFilename (Control parent) { OpenFileDialog dlg = new OpenFileDialog (); dlg.Filter = "Link (*.lnk)|*.lnk"; dlg.Multiselect = false; dlg.FileName = null; DialogResult res; if (null != parent) res = dlg.ShowDialog (parent); else res = dlg.ShowDialog (); if (DialogResult.OK == res) return dlg.FileName; return null; }