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.