特定のユーザーにWindows 7でシンボリックリンクを作成する権限を付与するにはどうすればよいですか?
「グループポリシー」とGoogleで検索しましたが、何も見つかりませんでした。
余談ですが、グループポリシーエディターですべてを検索する方法はありますか?フィルタは特定のサブツリーでのみ機能するようです。フィルターを使用して実際に何かを見つけたことはありません。
特定のユーザーにWindows 7でシンボリックリンクを作成する権限を付与するにはどうすればよいですか?
「グループポリシー」とGoogleで検索しましたが、何も見つかりませんでした。
余談ですが、グループポリシーエディターですべてを検索する方法はありますか?フィルタは特定のサブツリーでのみ機能するようです。フィルターを使用して実際に何かを見つけたことはありません。
回答:
開いてローカルグループポリシーエディタを:Run
> gpedit.msc
。それがうまくいかない場合は、試してくださいsecpol.msc
(Windows Homeユーザーは最初にgroup-policy-editorを有効にする必要があります)。
に移動します(Windows Proユーザーには最初の2つの項目が表示されない場合があります):
Computer configuration → Windows Settings
→ Security Settings → Local Policies → User Rights Assignment
を編集しCreate symbolic links
ます。
シンボリックリンクの作成を許可するユーザーまたはグループを追加します。
独自のユーザーアカウントを追加した場合、変更を有効にするには、ログアウトしてから再度ログインする必要があります。
注:この設定は、Administratorsグループに属するユーザーアカウントには影響しません。UACが昇格されていないアクセストークンを作成するときに特権を削除する方法のため、これらのユーザーは常にmklink
(管理者として)昇格された環境で実行する必要があります。グループポリシー設定を見つけるための便利なExcelリファレンスシートがあります。WindowsおよびWindows Serverのグループポリシー設定リファレンス
一部のWindows構成は失敗しgpedit.msc
ます。この場合、代替手段として試すことができます:
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;
}
}
次に、gpupdate /force
変更をすぐに適用するために実行します