Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Microsoft Visual C++ Redistributable och Visual Studio C++ Runtime (tillsammans "VC Runtime") är viktiga komponenter i många program. I hela nätverket kan datorer fortfarande köra program som installerar och använder en icke-stödd version av VC Runtime. Du kan använda NTFS-filgranskning för att identifiera sådan användning som ett steg mot att ersätta dessa program med program som använder en version av VC Runtime som stöds. Den här artikeln beskriver hur du konfigurerar NTFS-filgranskning, ger felsökningstips och visar fördelarna med regelbundna granskningar.
För mer information om de versioner av VC Runtime som inte längre stöds, se Microsoft Visual C++ Redistributable senaste stödda nedladdningar.
Aktivera NTFS-filgranskning för att fastställa VC Runtime-användning
Den här artikeln innehåller stegen för att manuellt aktivera NTFS-filgranskning och granska granskningshändelser för att avgöra vilka program som anropar de versioner av VC Runtime som inte stöds. Eftersom det finns flera filer som ett program kan använda, visar den här artikeln även hur du använder PowerShell och cmdletar för att uppdatera granskningsbehörigheter. Mer information om hur du konfigurerar granskningsprinciper för en fil finns i Tillämpa en grundläggande granskningsprincip på en fil eller mapp.
Aktivera granskning av objektåtkomst manuellt i systemet
Objektåtkomst måste vara aktiverat innan du aktiverar granskning på filnivå:
- Välj Windows+R för att öppna dialogrutan Run. Ange sedan och tryck på Enter för att öppna Redigeraren för lokal grupprincip.
- Gå till Datorkonfiguration>Windows Inställningar>Säkerhetsinställningar>Advanced Audit Policy Configuration>Systemgranskningsprinciper>Object Access.
- Dubbelklicka på Granska filsystem. I dialogrutan Granska filsystemegenskaper väljer du Konfigurera följande granskningshändelserLyckadesOK.
- Stäng Lokal grupprincipredigerare.
Du kan också använda för att aktivera objektåtkomst:
- Visa en lista över de aktuella inställningarna från kommandoraden med .
- Aktivera objektåtkomst med .
Aktivera granskning av en fil manuellt
Om du vill övervaka vilken process som kommer åt en VC Runtime-fil aktiverar du granskning av VC Runtime-filen:
- Högerklicka på filen som du vill granska, välj Egenskaperoch välj sedan fliken Säkerhet. Mer information om hur du hittar installerade VC Runtime-filer finns i installerade VC Runtime-platser.
- Välj Avancerat.
- I dialogrutan Avancerade säkerhetsinställningar väljer du fliken Granskning och väljer sedan Fortsätt.
- Om du vill lägga till en ny granskningsregel väljer du Lägg till. I dialogrutan för Revisionspost väljer du en huvudansvarig och anger sedan namnet på den användare eller grupp som du vill lägga till, till exempel (Alla). Välj sedan OK.
- Under Typ, verifiera att Framgång har valts.
- Välj Visa förhandsbehörigheterRensa allaTraverse-mappen/kör filenOK.
- Observera att en ny rad i granskningsposterna matchar det du har valt. Välj OK.
- I dialogrutan Egenskaper väljer du OK.
Granskningsregeln är nu aktiverad för filen.
Granska granskningsloggar manuellt
NTFS-filgranskning genererar händelse 4663: Ett försök gjordes att komma åt ett objekt för varje fil som innehåller granskningsbehörigheten och som nås av en process.
- Välj Windows+R för att öppna dialogrutan Run. Ange sedan
eventvwr.mscoch välj Enter för att öppna Zobrazovač udalostí. - Gå till Säkerhet-loggarna i Zobrazovač udalostí genom att expandera Windows-loggar>Säkerhet. I resultatfönstret visas säkerhetshändelser.
- Hitta granskningshändelserna genom att välja Filtrera aktuell logg... i fönstret Åtgärder. Om du vill begränsa händelserna till Händelse-ID 4663 (granskningsframgång för filsystemkategorin) anger du 4663 i textrutan Inkluderar/exkluderar händelse-ID :n.
Ett exempel på granskning av filåtkomsthändelse 4663 finns i 4663(S): Ett försök gjordes att komma åt ett objekt.
Använda PowerShell för att granska VC Runtime-användning
Följ dessa steg för att uppdatera filgranskningsbehörigheter med PowerShell:
- Definiera granskningsregeln för filsystemet som ska tillämpas på filerna.
- Hämta filens säkerhetsbeskrivare med .
- Tillämpa granskningsregeln på säkerhetsbeskrivningen.
- Använd den uppdaterade säkerhetsbeskrivningen på den ursprungliga filen med .
- Visa granskningshändelse 4663-poster för filåtkomst med .
PowerShell: Granska VC Runtime-filer som inte stöds
Med följande PowerShell-kod kan du granska installerade VC Runtime-filer som inte längre stöds.
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: Visa filgranskningshändelser
PowerShell tillhandahåller verktyg för att hämta händelseposter för olika händelseloggar, enligt följande PowerShell-kod som visar alla poster av händelse 4663 för filåtkomstgranskning under de senaste 24 timmarna.
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
Nästa steg efter granskning av VC Runtime-användning
När du har fastställt vilka processer som använder VC Runtime-filerna, eller vilka program som har installerat Visual C++ Redistributable, avinstallerar du programmen eller uppgraderar dem till nyare versioner som inte är beroende av VC-körning som inte stöds.
Vissa Microsoft-program kräver äldre versioner av VC Runtime. Mer information finns i Vanliga frågor och svar om Visual C++ Redistributable- och Runtime-bibliotek.
Installationsplatser för VC Runtime
I följande tabell visas var varje version av VC Runtime är installerad.
| Visual Studio-version | Installerade platser |
|---|---|
| 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 |
Relaterat innehåll
- Omdistribuera Visual C++-filer
- De senaste stödda nedladdningarna av Visual C++
- Vanliga frågor och svar om livscykel: Visual C++ Redistributable- och Runtime-bibliotek
- C++ binär kompatibilitet mellan Visual Studio versioner