Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Microsoft Visual C++ Redistributable e Visual Studio runtime C++ (collettivamente "VC Runtime") sono componenti critici di molte applicazioni. In tutta la rete, i computer potrebbero ancora eseguire applicazioni che installano e usano una versione non supportata del VC Runtime. È possibile usare il controllo dei file NTFS per identificare tale utilizzo, ad esempio un passaggio per sostituire le applicazioni con quelle che usano una versione supportata di VC Runtime. Questo articolo illustra come configurare il controllo dei file NTFS, fornisce suggerimenti per la risoluzione dei problemi ed evidenzia i vantaggi dei controlli regolari.
Per ulteriori informazioni sulle versioni di VC Runtime non più supportate, consultare gli ultimi download supportati di Microsoft Visual C++ Redistributable.
Abilitare il controllo dei file NTFS per determinare l'utilizzo di VC Runtime
Questo articolo illustra la procedura per abilitare manualmente il controllo dei file NTFS ed esaminare gli eventi di controllo per determinare quali applicazioni chiamano le versioni non supportate di VC Runtime. Poiché sono disponibili diversi file che un'applicazione può usare, questo articolo illustra anche come usare PowerShell e i cmdlet per aggiornare le autorizzazioni di controllo. Per altre informazioni su come configurare i criteri di controllo per un file, vedere Applicare criteri di controllo di base in un file o una cartella.
Abilitare manualmente il controllo dell'accesso agli oggetti nel sistema
L'accesso agli oggetti deve essere abilitato prima di abilitare il controllo a livello di file:
- Selezionare Windows+R per aprire la finestra di dialogo Run. Quindi immettere e selezionare Invio per aprire Editor Criteri di gruppo locali.
- Passare a Configurazione computer>Windows Impostazioni>Impostazioni di sicurezza>Configurazione dei criteri di controllo avanzata> Policy di controllo del sistema>Object Access.
- Fare doppio clic su Audit File System. Nella finestra di dialogo proprietà del file system di controllo selezionare Configurare gli eventi di controllo seguentiOperazione riuscitaOK.
- Chiudere Editor Criteri di gruppo locale.
In alternativa, è possibile usare per abilitare l'accesso agli oggetti:
- Elencare le impostazioni correnti dalla riga di comando con .
- Abilitare l'accesso agli oggetti con .
Abilitare manualmente il controllo in un file
Per monitorare il processo che accede a un file di runtime VC, abilitare il controllo nel file di runtime VC:
- Fare clic con il pulsante destro del mouse sul file che si desidera controllare, selezionare Proprietàe quindi selezionare la scheda Sicurezza. Per ulteriori informazioni su come trovare i file VC Runtime installati, vedere percorsi installati di VC Runtime.
- Selezionare Avanzato.
- Nella finestra di dialogo Impostazioni di sicurezza avanzate selezionare la scheda Controllo e quindi selezionare Continua.
- Per aggiungere una nuova regola di controllo, selezionare Aggiungi. Nella finestra di dialogo Voce di controllo, selezionare un principale e quindi immettere il nome dell'utente o del gruppo da aggiungere, come (Tutti). Quindi, seleziona OK.
- In Tipo verificare che l'opzione Successo sia selezionata.
- Selezionare Mostra autorizzazioni avanzateCancella tuttoAttraversa cartella / esegui fileOK.
- Nota che una nuova riga nel registro delle voci di controllo corrisponde a ciò che hai selezionato. Selezionare OK.
- Nella finestra di dialogo Proprietà selezionare OK.
La regola di controllo è ora abilitata per il file.
Esaminare manualmente i log di controllo
Il controllo dei file NTFS genera l'evento 4663: è stato effettuato un tentativo di accedere a un oggetto per ogni file che include l'autorizzazione di controllo ed è accessibile da un processo.
- Selezionare Windows+R per aprire la finestra di dialogo Run. Immettere quindi
eventvwr.msce selezionare Invio per aprire Visualizzatore eventi. - Accedere ai registri di Sicurezza nel Visualizzatore eventi, espandendo i Registri di Windows>Sicurezza. Nel riquadro dei risultati sono elencati gli eventi di sicurezza.
- Trova gli eventi di controllo scegliendo Filtra log corrente... nel riquadro Azioni. Per restringere gli eventi all'ID evento 4663 (Audit Success for the File System Category), immettere 4663 nella casella di testo Include/Escludi ID evento .
Per un esempio dell'evento di controllo dell'accesso ai file 4663, vedere 4663(S): Tentativo di accesso a un oggetto.
Usare PowerShell per controllare l'utilizzo di VC Runtime
Per aggiornare le autorizzazioni di controllo dei file con PowerShell, seguire questa procedura:
- Definire la regola di controllo del file system da applicare ai file.
- Ottenere il descrittore di sicurezza di un file con .
- Applicare la regola di controllo al descrittore di sicurezza.
- Applicare il descrittore di sicurezza aggiornato nel file originale con .
- Visualizza i record dell'evento di controllo dell'accesso ai file 4663 con .
PowerShell: Controllare i file di runtime VC non supportati
Il codice di PowerShell seguente consente di controllare i file di runtime VC installati che non sono più supportati.
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: visualizzare gli eventi di controllo dei file
PowerShell consente di ottenere i record degli eventi per vari registri eventi, come illustrato nel seguente codice PowerShell che elenca tutti i record dell'evento 4663 di controllo dell'accesso ai file nelle ultime 24 ore.
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
Passaggi successivi dopo il controllo dell'utilizzo di VC Runtime
Dopo aver determinato quali processi usano i file di runtime VC o quali applicazioni hanno installato Visual C++ Redistributable, disinstallare tali applicazioni o aggiornarle a versioni più recenti che non dipendono da runtime VC non supportati.
Alcune applicazioni Microsoft richiedono versioni legacy di VC Runtime. Per altre informazioni, vedere Le domande frequenti sulle librerie Visual C++ Redistributable e Runtime.
Percorsi di installazione di VC Runtime
Nella tabella seguente sono elencate le posizioni in cui è installata ogni versione del runtime vc.
| Visual Studio versione | Luoghi installati |
|---|---|
| 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 |
Contenuti correlati
- Ridistribuire i file di Visual C++
- Download supportati più recenti di Visual C++
- Domande frequenti sul ciclo di vita: Librerie ridistribuibili e di runtime di Visual C++
- compatibilità binaria C++ tra versioni Visual Studio