Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Microsoft Visual C++ Redistributable et Visual Studio Runtime C++ (collectivement, « VC Runtime ») sont des composants critiques de nombreuses applications. Sur votre réseau, les machines peuvent toujours exécuter des applications qui installent et utilisent une version hors prise en charge du runtime VC. Vous pouvez utiliser l’audit de fichiers NTFS pour identifier une telle utilisation en vue de remplacer ces applications par celles qui utilisent une version prise en charge du runtime VC. Cet article vous guide tout au long de la configuration de l’audit des fichiers NTFS, fournit des conseils de dépannage et met en évidence les avantages des audits réguliers.
Pour plus d'informations sur les versions de VC Runtime qui ne sont plus prises en charge, voir Microsoft Visual C++ Redistributable derniers téléchargements pris en charge.
Activer l’audit des fichiers NTFS pour déterminer l’utilisation du runtime VC
Cet article décrit les étapes permettant d’activer manuellement l’audit des fichiers NTFS et de passer en revue les événements d’audit pour déterminer quelles applications appellent les versions non prises en charge du runtime VC. Étant donné qu’il existe plusieurs fichiers qu’une application peut utiliser, cet article montre également comment utiliser PowerShell et les applets de commande pour mettre à jour les autorisations d’audit. Pour plus d’informations sur la configuration des stratégies d’audit pour un fichier, consultez Appliquer une stratégie d’audit de base sur un fichier ou un dossier.
Activer manuellement l’audit de l’accès aux objets sur le système
L’accès aux objets doit être activé avant d’activer l’audit au niveau du fichier :
- Sélectionnez Windows+R pour ouvrir la boîte de dialogue Run. Ensuite, entrez et sélectionnez Entrée pour ouvrir l’Éditeur de stratégie de groupe local.
- Accédez à Configuration de l'ordinateur>Paramètres Windows>Paramètres de sécurité>Configuration des stratégies d’audit avancées>Stratégies d’audit du système>Accès aux objets.
- Double-cliquez sur Audit du système de fichiers. Dans la boîte de dialogue Propriétés du système de fichiers d’audit, sélectionnez Configurer les événements d’audit suivantsSuccèsOK.
- Fermez l’Éditeur de stratégie de groupe local.
Vous pouvez également utiliser pour activer l’accès aux objets :
- Répertoriez les paramètres actuels à partir de la ligne de commande avec .
- Activez l’accès aux objets avec .
Activer manuellement l’audit sur un fichier
Pour surveiller le processus qui accède à un fichier VC Runtime, activez l’audit sur le fichier VC Runtime :
- Cliquez avec le bouton droit sur le fichier à auditer, sélectionnez Propriétés, puis sélectionnez l’onglet Sécurité. Pour plus d’informations sur la recherche de fichiers VC Runtime installés, consultez Emplacements installés VC Runtime.
- Sélectionnez avancé.
- Dans la boîte de dialogue Paramètres de sécurité avancés , sélectionnez l’onglet Audit , puis continuez.
- Pour ajouter une nouvelle règle d’audit, sélectionnez Ajouter. Dans la boîte de dialogue Entrée d’audit, sélectionnez un principal, puis entrez le nom de l’utilisateur ou du groupe que vous souhaitez ajouter, par exemple (Tout le monde). Puis sélectionnez OK.
- Dans le champ Type, assurez-vous que Succès est sélectionné.
- Sélectionnez Afficher les autorisations préalablesEffacer toutdossier Traverse/ exécuter le fichierOK.
- Notez qu’une nouvelle ligne dans les entrées d’audit correspond à ce que vous avez sélectionné. Sélectionnez OK.
- Dans la boîte de dialogue Propriétés , sélectionnez OK.
La règle d’audit est désormais activée pour le fichier.
Examiner manuellement les journaux d’audit
L’audit des fichiers NTFS génère l’événement 4663 : une tentative a été effectuée pour accéder à un objet pour chaque fichier qui inclut l’autorisation d’audit et est accessible par un processus.
- Sélectionnez Windows+R pour ouvrir la boîte de dialogue Run. Entrez ensuite
eventvwr.msc, puis sélectionnez Enter pour ouvrir observateur d'événements. - Accédez aux journaux Sécurité dans le Observateur d'événements en développant les Journaux Windows>Sécurité. Le volet de résultats répertorie les événements de sécurité.
- Recherchez les événements d'audit en choisissant Filtrer le journal actuel... dans le volet Actions. Pour limiter les événements à l’ID d’événement 4663 (Audit Success for the File System Category), entrez 4663 dans la zone de texte Include/Excludes Event IDs .
Pour obtenir un exemple d’événement d’audit d’accès aux fichiers 4663, consultez 4663(S) : une tentative a été effectuée pour accéder à un objet.
Utiliser PowerShell pour auditer l’utilisation du runtime VC
Pour mettre à jour les autorisations d’audit des fichiers avec PowerShell, procédez comme suit :
- Définissez la règle d’audit du système de fichiers à appliquer aux fichiers.
- Obtenez le descripteur de sécurité d’un fichier avec .
- Appliquer la règle d’audit au descripteur de sécurité.
- Appliquez le descripteur de sécurité mis à jour sur le fichier d’origine avec .
- Affichez les enregistrements de l'événement d'audit d'accès aux fichiers 4663 avec .
PowerShell : Audit des fichiers d'exécution VC non pris en charge
Le code PowerShell suivant vous permet d’auditer les fichiers VC Runtime installés qui ne sont plus pris en charge.
function Get-AuditRuleForFile {
$auditRuleArguments = 'Everyone' <# identity #>,
'ExecuteFile, Traverse' <# fileSystemRights #>,
'Success' <# flags #>
$auditRule = New-Object System.Security.AccessControl.FileSystemAuditRule($auditRuleArguments)
return $auditRule
}
function Set-FileAuditRule {
param (
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[string]$file,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Security.AccessControl.FileSystemAuditRule]$auditRule
)
$existingAcl = Get-Acl -Path $file
$existingAcl.AddAuditRule($auditRule) | Out-Null
Set-Acl -Path $file -AclObject $existingAcl
}
$newAuditRule = Get-AuditRuleForFile
# Visual Studio Redistributable for 2005 (VC++ 8.0) and 2008 (VC++ 9.0)
Get-ChildItem "$ENV:SystemRoot\WinSxS\Fusion" -filter '*.dll' -ErrorAction SilentlyContinue -Recurse |
Where-Object FullName -IMatch 'microsoft\.vc[89]0' |
ForEach-Object {
Set-FileAuditRule $_.FullName $newAuditRule
}
# Visual Studio Redistributable for 2010 (VC++ 10.0), 2012 (VC++ 11.0) and 2013 (VC++ 12.0)
$languageCodes = 'chs|cht|deu|enu|esn|fra|ita|jpn|kor|rus'
$versions = '(1[012]0)'
$regex = "^((atl|msvc[pr]|vcamp|vccorlib|vcomp)$versions|mfc$versions(u|$languageCodes)?|mfcm$versions(u)?)\.dll$"
Get-ChildItem "$ENV:SystemRoot\SysWOW64","$ENV:SystemRoot\System32" -filter '*.dll' |
Where-Object Name -imatch $regex |
ForEach-Object {
Set-FileAuditRule $_.FullName $newAuditRule
}
PowerShell : Afficher les événements d’audit de fichier
PowerShell fournit des enregistrements d’événements pour différents journaux d’événements, comme indiqué dans le code PowerShell suivant qui répertorie tous les enregistrements de l’événement d’audit d’accès aux fichiers 4663 au cours des 24 dernières heures :
function Get-AuditEntries {
param (
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.DateTime]$oldestTime
)
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4663;StartTime=(Get-Date $oldestTime)} |
ForEach-Object {
$record = [ordered]@{}
$record['TimeCreated'] = $_.TimeCreated
$accessName = ($_.Message |
Select-String -Pattern "Accesses:[\t\s]+(?<Accesses>.+)").Matches.Groups[1]
([xml]$_.ToXML()).Event.EventData.ChildNodes |
ForEach-Object -Begin {
$record[$accessName.Name]=$accessName.Value.Trim()
} -Process {
$record[$_.Name] = $_.'#text'
}
[PSCustomObject]$record
} |
Where-Object { $_.ObjectName -imatch '\.dll$'}
}
Get-AuditEntries -oldestTime (Get-Date).AddHours(-24)
TimeCreated : 11/20/2024 5:00:11 AM
Accesses : Execute/Traverse
SubjectUserSid : \*\*\*\*\*
SubjectUserName : \*\*\*\*\*
SubjectDomainName : WORKGROUP
SubjectLogonId : \*\*\*\*\*
ObjectServer : Security
ObjectType : File
ObjectName : C:\\Windows\\WinSxS\\amd64\_microsoft.vc90.crt\_1fc8b3b9a1e18e3b\_9.0.30729.9635\_none\_08e2c157a83ed5da\\msvcr90.dll
HandleId : 0x93c
AccessList : %%4421
AccessMask : 0x20
ProcessId : 0x24d4
ProcessName : C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe
ResourceAttributes : S:AI
Étapes suivantes après l’audit de l’utilisation du runtime VC
Après avoir déterminé quels processus utilisent les fichiers VC Runtime ou quelles applications ont installé visual C++ Redistributable, désinstallez ces applications ou mettez-les à niveau vers des versions plus récentes qui ne dépendent pas des runtimes VC non pris en charge.
Certaines applications Microsoft nécessitent des versions héritées du runtime VC. Pour plus d’informations, consultez la FAQ sur les bibliothèques Visual C++ redistribuables et d'exécution.
Emplacements d’installation VC Runtime
Le tableau suivant répertorie l’emplacement où chaque version du runtime VC est installée.
| version de Visual Studio | Emplacements d'installation |
|---|---|
| Visual Studio 2013 (VC++ 12.0) | %SystemRoot%\\System32, %SystemRoot%\\SysWOW64 |
| Visual Studio 2012 (VC++ 11.0) | %SystemRoot%\\System32, %SystemRoot%\\SysWOW64 |
| Visual Studio 2010 (VC++ 10.0) | %SystemRoot%\\System32, %SystemRoot%\\SysWOW64 |
| Visual Studio 2008 (VC++ 9.0) | %SystemRoot%\\WinSxS\\Fusion |
| Visual Studio 2005 (VC++ 8.0) | %SystemRoot%\\WinSxS\\Fusion |
Contenu connexe
- Redistribuer des fichiers Visual C++
- Les derniers téléchargements de Visual C++ pris en charge
- FAQ sur le cycle de vie : Bibliothèques Redistributables et d'exécution Visual C++
- Compatibilité binaire C++ entre les versions de Visual Studio