Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Microsoft Visual C++ Redistributable en Visual Studio C++ Runtime (gezamenlijk VC Runtime) zijn essentiële onderdelen van veel toepassingen. In uw netwerk worden op computers mogelijk nog steeds toepassingen uitgevoerd die een out-of-support-versie van de VC Runtime installeren en gebruiken. U kunt NTFS-bestandscontrole gebruiken om gebruik te identificeren als een stap voor het vervangen van deze toepassingen door toepassingen die een ondersteunde versie van de VC Runtime gebruiken. Dit artikel begeleidt u bij het instellen van NTFS-bestandscontrole, biedt tips voor probleemoplossing en markeert de voordelen van regelmatige controles.
Zie Microsoft Visual C++ Redistributable nieuwste ondersteunde downloadsvoor meer informatie over de versies van VC Runtime die niet meer worden ondersteund.
Ntfs-bestandscontrole inschakelen om het VC Runtime-gebruik te bepalen
Dit artikel bevat de stappen voor het handmatig inschakelen van NTFS-bestandscontrole en het controleren van controlegebeurtenissen om te bepalen welke toepassingen de niet-ondersteunde versies van de VC Runtime aanroepen. Omdat er verschillende bestanden zijn die een toepassing kan gebruiken, laat dit artikel ook zien hoe u de PowerShell en cmdlets kunt gebruiken om controlemachtigingen bij te werken. Zie Een basiscontrolebeleid toepassen op een bestand of mapvoor meer informatie over het configureren van controlebeleid voor een bestand of map.
Objecttoegangscontrole handmatig inschakelen op het systeem
Objecttoegang moet zijn ingeschakeld voordat u controle op bestandsniveau inschakelt:
- Selecteer Windows+R om het dialoogvenster Run te openen. Voer vervolgens Enter in en selecteer Enter om de editor voor lokaal groepsbeleid te openen.
- Ga naar Computerconfiguratie>Windows Settings>Security Settings>Advanced Audit Policy Configuration>System Audit Policies>Object Access.
- Dubbelklik op Audit File System. In het dialoogvenster 'Eigenschappen van bestandssysteem', selecteer configureer de volgende controlegebeurtenissen: Geslaagd, OK.
- Sluit de Editor voor lokaal groepsbeleid.
U kunt ook objecttoegang inschakelen:
- Geef de huidige instellingen van de opdrachtregel weer met .
- Objecttoegang met inschakelen.
Controle op een bestand handmatig inschakelen
Als u wilt controleren welk proces toegang heeft tot een VC Runtime-bestand, schakelt u controle in op het VC Runtime-bestand:
- Klik met de rechtermuisknop op het bestand dat u wilt controleren, selecteer Eigenschappenen selecteer vervolgens het tabblad Security. Zie geïnstalleerde VC Runtime-locatiesvoor meer informatie over het vinden van geïnstalleerde VC Runtime-bestanden.
- Selecteer Geavanceerde.
- Selecteer in het dialoogvenster Geavanceerde beveiligingsinstellingen het tabblad Controle en selecteer vervolgens Doorgaan.
- Als u een nieuwe controleregel wilt toevoegen, selecteert u Toevoegen. Selecteer een principal in het dialoogvenster Controlevermelding en voer vervolgens de naam in van de gebruiker of groep die u wilt toevoegen, zoals (Iedereen). Selecteer vervolgens OK.
- Zorg ervoor dat Succes is geselecteerd bij Type.
- Selecteer Geavanceerde machtigingen weergevenAlles wissenMap doorzoeken/bestand uitvoerenOK.
- U ziet dat een nieuwe rij in de controlevermeldingen overeenkomt met wat u hebt geselecteerd. Selecteer OK-.
- Selecteer OK in het dialoogvenster Eigenschappen.
De controleregel is nu ingeschakeld voor het bestand.
Auditlogboeken handmatig controleren
Ntfs-bestandscontrole genereert gebeurtenis 4663: er is geprobeerd toegang te krijgen tot een object voor elk bestand dat de controlemachtiging bevat en wordt geopend door een proces.
- Selecteer Windows+R om het dialoogvenster Run te openen. Voer vervolgens
eventvwr.mscin en selecteer Enter om Logboeken te openen. - Ga naar de Security-logboeken in de Logboeken, door Windows Logs>Security uit te vouwen. In het resultatenvenster worden beveiligingsevenementen weergegeven.
- Zoek de auditevenementen door Huidig logboek filteren... te kiezen in het deelvenster Acties. Als u de gebeurtenissen wilt beperken tot gebeurtenis-id 4663 (Succesvolle controle voor de categorie bestandssysteem), voert u 4663 in het tekstvak Inclusief/uitsluiten gebeurtenis-id's in.
Zie 4663(S) voor een voorbeeld van bestandstoegangscontrole-gebeurtenis 4663(S): er is een poging gedaan om toegang te krijgen tot een object.
PowerShell gebruiken om vc-runtimegebruik te controleren
Voer de volgende stappen uit om machtigingen voor bestandscontrole bij te werken met PowerShell:
- Definieer de controleregel voor het bestandssysteem die moet worden toegepast op de bestanden.
- Haal de beveiligingsdescriptor van een bestand op met .
- De controleregel toepassen op de beveiligingsdescriptor.
- Pas de bijgewerkte beveiligingsdescriptor toe op het oorspronkelijke bestand met .
- Bestandstoegangscontrole gebeurtenis 4663 records weergeven met .
PowerShell: Controleer VC Runtime-bestanden zonder ondersteuning
Met de volgende PowerShell-code kunt u geïnstalleerde VC Runtime-bestanden controleren die niet meer worden ondersteund.
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: Controlegebeurtenissen van bestanden weergeven
PowerShell biedt om gebeurtenisrecords op te halen voor verschillende gebeurtenislogboeken, zoals wordt weergegeven in de volgende PowerShell-code waarin alle records van bestandstoegangscontrolegebeurtenis 4663 in de afgelopen 24 uur worden vermeld:
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
Volgende stappen na het controleren van VC Runtime-gebruik
Nadat u hebt vastgesteld welke processen gebruikmaken van de VC Runtime-bestanden of welke toepassingen visual C++ Redistributable hebben geïnstalleerd, verwijdert u deze toepassingen of voert u een upgrade uit naar nieuwere versies die niet afhankelijk zijn van niet-ondersteunde VC Runtimes.
Voor sommige Microsoft-toepassingen zijn oudere versies van de VC Runtime vereist. Zie de veelgestelde vragen over Visual C++ Redistributable en Runtime-bibliotheken voor meer informatie.
VC Runtime-installatielocaties
In de volgende tabel ziet u waar elke versie van de VC Runtime is geïnstalleerd.
| Visual Studio versie | Geïnstalleerde locaties |
|---|---|
| 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 |
Verwante inhoud
- Visual C++-bestanden opnieuw distribueren
- De meest recente ondersteunde Visual C++-downloads
- Veelgestelde vragen over de levenscyclus: Redistributable- en Runtime-bibliotheken van Visual C++
- C++ binaire compatibiliteit tussen Visual Studio versies