3

フォルダへのシンボリック リンクを管理するプログラムの開発に取り組んできましたが、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 で開発していたときは問題なく動作していましたが、その後突然動作しなくなりました。これがいくつかの問題を解決するのに十分な情報であることを願っています。それ以外の場合は、お尋ねください.

4

1 に答える 1

7

これをさらにいじってみたところ、Windows 8 ではユーザー アカウント制御を完全にオフにすることはできないため、これがアクセス許可の問題であることがわかりました。そのため、Visual Studio が使用する開発環境は昇格されておらず、プログラム。

ここに記載されている手順に従って問題を解決できました: https://stackoverflow.com/a/12859334/1862405

于 2013-05-12T08:49:12.637 に答える