フォルダへのシンボリック リンクを管理するプログラムの開発に取り組んできましたが、Windows 8 マシン (Windows 7 から) で作業を継続するようになるまではうまくいきました。それ以来、私のCreateSymbolicLink()
メソッドはエラーコード 2 を返しました。
これは、ディレクトリをリンクするたびに呼び出されるメソッドです。これが呼び出される前に、元のフォルダーは次の場所に移動されています。destDirName
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() + ")");
}
}
これは、kernel32.dll からインポートされたメソッドです。
[DllImport("kernel32.dll")]
static extern bool CreateSymbolicLink(string lpSymlinkFileName,
string lpTargetFileName, int dwFlags);
そしてロジック:
FileFunctions.MoveDirectory(gameOriginalSaveFolder, gameGatheredSaveFolder);
FileFunctions.LinkDirectory(gameOriginalSaveFolder, gameGatheredSaveFolder);
FileFunctions.HideDirectory(gameOriginalSaveFolder);
ブレークポイントを使用すると、これは上記のロジックで送信されるローカルです: http://i.imgur.com/T2Xahsq.png
注意すべき点として、このコードは Windows 7 で開発していたときは問題なく動作していましたが、その後突然動作しなくなりました。これがいくつかの問題を解決するのに十分な情報であることを願っています。それ以外の場合は、お尋ねください.