Windows 7でシンボリックリンクを作成する許可


59

特定のユーザーにWindows 7でシンボリックリンクを作成する権限を付与するにはどうすればよいですか?

「グループポリシー」とGoogleで検索しましたが、何も見つかりませんでした。

余談ですが、グループポリシーエディターですべてを検索する方法はありますか?フィルタは特定のサブツリーでのみ機能するようです。フィルターを使用して実際に何かを見つけたことはありません。


2
ところで、シンボリックリンクの作成に管理者権限が必要な理由を誰もが知っていますか?それらで何がそんなに危険ですか?
モンシニョール

1
@Monsignor:ずっと前に、Microsoftはあまりにも多くのプログラムがそれらを安全に処理できないと主張していることを見ました。とにかく、私は彼らが使用するために標高を必要とするのではなくかなりイライラしています。
ジョシュア

回答:


63
  1. 開いてローカルグループポリシーエディタをRun> gpedit.msc。それがうまくいかない場合は、試してくださいsecpol.mscWindows Homeユーザーは最初にgroup-policy-editor有効にする必要があります)。

  2. に移動します(Windows Proユーザーには最初の2つの項目が表示されない場合があります):

    Computer configuration → Windows SettingsSecurity Settings → Local Policies → User Rights Assignmentを編集しCreate symbolic linksます。

    ここに画像の説明を入力してください

  3. シンボリックリンクの作成を許可するユーザーまたはグループを追加します。

  4. 独自のユーザーアカウントを追加した場合、変更を有効にするには、ログアウトしてから再度ログインする必要があります。

:この設定は、Administratorsグループに属するユーザーアカウントには影響しません。UACが昇格されていないアクセストークンを作成するときに特権を削除する方法のため、これらのユーザーは常にmklink(管理者として)昇格された環境で実行する必要があります。グループポリシー設定を見つけるための便利なExcelリファレンスシートがあります。WindowsおよびWindows Serverのグループポリシー設定リファレンス


12
ここでは、誰かが混乱した場合の参考として、次のように見えました:コントロールパネル>管理ツール>ローカルセキュリティポリシー>ローカルポリシー>ユーザー権利の割り当て>シンボリックリンクの作成そして、設定のためにログアウトして再度ログインする必要がある応募する。
セルデク

5
そして、secpol.mscを実行して最初の部分をスキップすると、残っているのはローカルポリシー>ユーザー権利の割り当て>シンボリックリンクの作成
-Seldaek

5
また、CMDまたは単に[実行]ダイアログから「gpupdate / force」を実行すると、設定も適用されます。
トビアスプルタット

1
Microsoft-hated-non-Windows-8-Proユーザーのレジストリを介して同じことを行う方法はありますか?gpedit.mscは利用できません
szx

4
re-「これらのユーザーは常に(管理者として)昇格した環境でmklinkを実行する必要があります」...管理者は常に昇格した状態で実行する必要があります... arg。
トレバーボイドスミス

0

一部のWindows構成は失敗しgpedit.mscます。この場合、代替手段として試すことができます:

  1. ここからこのPowerShellスクリプト実行します
    function addSymLinkPermissions($accountToAdd){
        Write-Host "Checking SymLink permissions.."
        $sidstr = $null
        try {
            $ntprincipal = new-object System.Security.Principal.NTAccount "$accountToAdd"
            $sid = $ntprincipal.Translate([System.Security.Principal.SecurityIdentifier])
            $sidstr = $sid.Value.ToString()
        } catch {
            $sidstr = $null
        }
        Write-Host "Account: $($accountToAdd)" -ForegroundColor DarkCyan
        if( [string]::IsNullOrEmpty($sidstr) ) {
            Write-Host "Account not found!" -ForegroundColor Red
            exit -1
        }
        Write-Host "Account SID: $($sidstr)" -ForegroundColor DarkCyan
        $tmp = [System.IO.Path]::GetTempFileName()
        Write-Host "Export current Local Security Policy" -ForegroundColor DarkCyan
        secedit.exe /export /cfg "$($tmp)" 
        $c = Get-Content -Path $tmp 
        $currentSetting = ""
        foreach($s in $c) {
            if( $s -like "SECreateSymbolicLinkPrivilege*") {
                $x = $s.split("=",[System.StringSplitOptions]::RemoveEmptyEntries)
                $currentSetting = $x[1].Trim()
            }
        }
        if( $currentSetting -notlike "*$($sidstr)*" ) {
            Write-Host "Need to add permissions to SymLink" -ForegroundColor Yellow

            Write-Host "Modify Setting ""Create SymLink""" -ForegroundColor DarkCyan

            if( [string]::IsNullOrEmpty($currentSetting) ) {
                $currentSetting = "*$($sidstr)"
            } else {
                $currentSetting = "*$($sidstr),$($currentSetting)"
            }
            Write-Host "$currentSetting"
        $outfile = @"
    [Unicode]
    Unicode=yes
    [Version]
    signature="`$CHICAGO`$"
    Revision=1
    [Privilege Rights]
    SECreateSymbolicLinkPrivilege = $($currentSetting)
    "@
        $tmp2 = [System.IO.Path]::GetTempFileName()
            Write-Host "Import new settings to Local Security Policy" -ForegroundColor DarkCyan
            $outfile | Set-Content -Path $tmp2 -Encoding Unicode -Force
            Push-Location (Split-Path $tmp2)
            try {
                secedit.exe /configure /db "secedit.sdb" /cfg "$($tmp2)" /areas USER_RIGHTS 
            } finally { 
                Pop-Location
            }
        } else {
            Write-Host "NO ACTIONS REQUIRED! Account already in ""Create SymLink""" -ForegroundColor DarkCyan
            Write-Host "Account $accountToAdd already has permissions to SymLink" -ForegroundColor Green
            return $true;
        }
    }
  1. gpedit.mscに代わるフリーウェアのように見えるpolseditダウンロードします

次に、gpupdate /force変更をすぐに適用するために実行します


1
ソースを与えることに加えて。ソースが存在しない場合に備えて、スクリプトを追加してください。
ミロクスラフ

Windows Starter Edition、Home、Home Premiumにはgpedit.mscは含まれていません。それをインストールする手順は私の質問と回答にありますWindows Starter Edition、Home、Home Premiumにはgpeditが含まれていません、どうすればインストールできますか?
DavidPostill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.