0

*.lnkファイルが何かにリンクしているかどうかを知る方法。どうすればC#でそれを達成できますか?

4

1 に答える 1

0
  1. 特定のファイル属性を取得するLink Target
  2. File.Existsを使用してファイルがLink Target Path存在するかどうかを確認します
class Program
{
    [STAThread]
    static void Main()
    {
        List<string> arrHeaders = new List<string>();

        Shell32.Shell shell = new Shell32.Shell();
        Shell32.Folder objFolder;

        objFolder = shell.NameSpace(@"D:\shortcuts");

        for (int i = 0; i < short.MaxValue; i++)
        {
            string header = objFolder.GetDetailsOf(null, i);
            if (String.IsNullOrEmpty(header))
                break;
            arrHeaders.Add(header);
        }

        foreach (Shell32.FolderItem2 item in objFolder.Items())
        {
            for (int i = 0; i < arrHeaders.Count; i++)
            {
                //Console.WriteLine("{0}\t{1}: {2}", i, arrHeaders[i], objFolder.GetDetailsOf(item, i));
                if (arrHeaders[i] == "Link target")
                {
                    var getPath = objFolder.GetDetailsOf(item, i);
                    Console.WriteLine("{0}", getPath);
                    if (File.Exists(getPath))
                    {
                        Console.WriteLine("The file exists.");
                    }
                    else
                    {
                        Console.WriteLine("File not exist");
                        //Do stuff to delete
                    }
                }
            }
        }
        Console.ReadLine();
    }
}
于 2013-02-10T23:24:50.743 に答える