Witam!

Chciałem stworzyć linki symboliczne w C#, bazowałem na źródłach znalezionych na CodeProject:

 
[DllImport("kernel32.dll")]
static extern bool CreateSymbolicLink(string lpSymlinkFileName, 
    string lpTargetFileName, int dwFlags); 

public static void LinkDirectory(string sourceDirName, string destDirName)
{
    if (!CreateSymbolicLink(sourceDirName, destDirName, 0x1))
    {
        MessageBox.Show("Error: Unable to create symbolic link. " + 
            "(Error Code: " + Marshal.GetLastWin32Error() + ")"); 
    }
}

oraz

namespace ConsoleApplication
{
    class Program
    {
        [DllImport("kernel32.dll")]
        static extern bool CreateSymbolicLink(
        string lpSymlinkFileName, string lpTargetFileName, SymbolicLink dwFlags);

        enum SymbolicLink
        {
            File = 0,
            Directory = 1
        }

        static void Main(string[] args)
        {
            string symbolicLink = @"c:\bar.txt";
            string fileName = @"c:\temp\foo.txt";

            using (var writer = File.CreateText(fileName))
            {
                writer.WriteLine("Hello World");
            }

            CreateSymbolicLink(symbolicLink, fileName, SymbolicLink.File);
        }
    }
} 

żaden z nich nie działa, w zasadzie działa raz na ileśtam odpaleń, nawet nie wiem czemu, bo nic nie zmieniam w kodzie ani w systemie. Uruchamiam z prawami administratora.

Znalazłem kod który działa za każdym razem: http://www.codeproject.com/Articles/15633/Manipulating-NTFS-Junction-Points-in-NET ale byłbym wdzięczny jakby ktoś mi pomógł dojść do rozwiązania z przytoczonym przeze mnie kodem.