Comment puis-je accorder à un utilisateur particulier l'autorisation de créer des liens symboliques dans Windows 7?
J'ai effectué une recherche dans "Stratégie de groupe" et Google, mais je n'ai rien trouvé.
En passant, y a-t-il un moyen de parcourir tout dans l'éditeur de stratégie de groupe? Les filtres ne semblent fonctionner que sur des sous-arbres particuliers. Je n'ai jamais rien trouvé en utilisant les filtres.
Ouvrez l’éditeur de stratégie de groupe locale: Run
> gpedit.msc
. Si cela ne fonctionne pas, essayez secpol.msc
(Remarque, Windows Homeles utilisateurs devront peut-être activer le groupe. -policy-editor en premier).
Allez à (les utilisateurs de Windows Pro peuvent ne pas voir les deux premiers éléments):
Computer configuration → Windows Settings
→ Security Settings → Local Policies → User Rights Assignment
et modifiez le code Create symbolic links
.
Ajoutez l'utilisateur ou le groupe que vous souhaitez autoriser à créer des liens symboliques.
Si vous avez ajouté votre propre compte utilisateur, vous devez vous déconnecter et vous connecterpour que la modification soit prise en compte.
Remarque : ce paramètre n'a aucun effet sur les comptes d'utilisateurs appartenant au groupe Administrateurs. Ces utilisateurs devront toujours toujours exécuter mklink
dans un environnement élevé (en tant qu'administrateur) en raison de la façon dont le contrôle de compte d'utilisateur supprime les privilèges lors de la création d'un jeton d'accès non élevé . Il existe une feuille de référence Excel pratique pour rechercher les paramètres de stratégie de groupe: Référence des paramètres de stratégie de groupe pour Windows et Windows Server
Certaines configurations Windows manquent gpedit.msc
. Dans ce cas, vous pouvez essayer comme alternative:
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;
}
}
Ensuite, lancez gpupdate /force
pour appliquer les modifications immédiatement