Windows 7でmklinkを実行するとアクセスが拒否されるエラー[複製]


34

この質問にはすでに答えがあります:

私のホームディレクトリは、ユーザーphiとしてc:\ Users \ phiであり、c:\ Users \ abcにディレクトリを作成しました。c:\ Users \ phi \ helloからc:\ Users \ abc \ helloへのシンボリックリンクが必要です。

次のコマンドを実行します

mklink c:\ Users \ abc \ hello c:\ Users \ phi \ hello

しかし、アクセス拒否エラーが表示されます。ユーザーphiは管理者なので、c:\ Users \ abcにファイルを書き込むのに問題はありません。

どうしてこれなの?mklinkする方法は?

回答:


28

重要なポイント:

  1. UACがオンの場合、管理者として実行する必要があります。(または少なくともリンクの作成を許可するセキュリティポリシー)。
  2. /Dスイッチはリンクがディレクトリである場合に使用する必要があります。
  3. 最初のパラメーターはリンクで、2番目のパラメーターは元のフォルダーです。
  4. リンクは既に存在してはなりません。

使用法:

mklink /D c:\users\me\new_link\ c:\users\me\original_folder\

@LawrenceDol非管理者ユーザーには特別な許可(SeCreateSymbolicLinkPrivilege)が必要であるのは言うまでもありませんが、管理者ユーザーにはrun-as-adminで昇格する必要があります。しかし、その後SeCreateSymbolicLinkPrivilege、管理者ユーザーに設定して、run-as-adminで昇格する必要を回避することは可能ですか?この質問:stackoverflow.com/questions/29956470/…は、管理ユーザーが昇格する必要がないため、UACを無効にする必要があることを示しています。
CMCDragonkai 16

@CMCDragonkai:昇格は必要ないと思いますが、特にテストしていません。以前は、通常のコマンドウィンドウで管理者アカウントを使用してリンクを作成しており、常にUACをオンのままにしているようです。
ローレンスドル

25

このサイトから答えを見つけました。つまり、cmd.exeを管理者として実行する必要があります。


4
参考のため、これも原因となります
Wouter

9
フォルダーをリンクしているときに/ Hパラメーターを使用しようとすると、アクセスが拒否されます。フォルダには/ Dのみを使用する必要があります。これがWouterのリンクに含まれています。Wouterに+1、ありがとう。:)
CausingUnderflowsEverywhere

21

マップされたドライブにジャンクションを作成しようとすると、同じエラーが表示されることに注意してください。MSDN ハードリンクとジャンクションでこのページの例に出会うまで、私はこれで髪を引っ張っていました

簡単な答え:mklinkはローカルボリュームでのみ使用できます。


このリンクはあまり役に立ちません。(意図しないしゃれ)
rpattabi

この回答は、質問に関連していないようです。
kreemoweet

2
@kreemoweetは、「Windows 7でmklinkを実行したときにアクセスが拒否されました」というエラーが表示された場合、ローカルボリュームでコマンドを使用していない可能性があるためです。
レッグ編集

はい、mklinkローカルボリュームを超えて使用できます。mklink /d link_name \\server\shareうまく動作します。
UnclickableCharacter

あなたはそれらを作ることができないマップされたドライブ。ローカルディスク->リモート?うん。Netware 2.xのようなパーティー
rburte

15

Windows 7(以降)では、リンクとジャンクションを作成するには特別なセキュリティ権限が必要です。管理者はsecpol.msc、設定に使用するユーザーにこの権限を付与できますLocal Policies\User Rights Assignment\Create symbolic links

ユーザーがその時点でログオンしている場合、リンクを作成できるようにするには、ログオフしてから再度ログオンする必要があります。

リンクは一部のアプリでセキュリティの弱点を露呈する可能性があることに注意してください-私はそれらの弱点が何であるかを調査していません。


これは、この問題に対する唯一の適格な答えであり、どんな答えも本質にこだわらない。管理者としての作業を停止してください!これは非常にXPっぽい態度であり、Windowsのセキュリティリスクに対する認識の欠如を示しています。
トーマスアーバン

9

Linuxを頻繁に使用する場合は、Windowsでパラメーターが交換されることに注意してください。

間違った順序を使用すると、「アクセス拒否」も表示されます。オリジナルが既に存在するシンボリックリンクを作成しようとしているためです。

Windows: mklink /D link original

Linux: ln -s original link


4

誤っmklink /Dてファイルに対して実行したため、これを取得していました。リンクはエクスプローラーには表示されませんでしたが、Windowsエクスプローラーには表示されました。コマンドプロンプトを使用して、元の無効なディレクトリリンクを削除し、/Dオプションなしで再作成しました。

ところで、cmd.exeを管理者として実行していても、「アクセスが拒否されました」というエラーが表示されていました。



1

実行する場合:

mklink / j C:\ path_to_link C:\ destination

動作するはずです。私の場合、powershellとcmdは同じ出力を生成しました。PowerShellの場合は、次のコマンドで開始するだけです。

cmd / c mklink ...


3
はい、ただし注意してください。ジャンクションはハードディレクトリリンクよりもはるかに致命的です。コマンドラインまたはエクスプローラーからリンクを削除すると、リンクが削除されますが、エクスプローラーからジャンクションを削除すると、ディレクトリ内のすべてが削除され、ジャンクション-OOPSが削除されます。mklink /D src tgt代わりに使用してください。
ローレンスドル

0

これは奇妙に聞こえるかもしれませんが、作成しようとしているファイルまたはフォルダーがまだ存在していないことを確認してください。時々、cmdプロンプトで見落としがちです。


0

あなたがしなければならないディレクトリの場合:

mklink /D c:\Users\abc\hello c:\Users\phi\hello
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.