Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Расширяемый пакет Microsoft Visual C++ и библиотеки Visual Studio C++ (совместно «библиотеки VC») являются важными компонентами многих приложений. В вашей сети компьютеры по-прежнему могут работать с приложениями, которые устанавливают и используют не поддерживаемую версию VC Runtime. Вы можете использовать аудит файлов NTFS для определения такого использования как шага по замене этих приложений на те, которые используют поддерживаемую версию среды выполнения VC. В этой статье описано, как настроить аудит файлов NTFS, получить советы по устранению неполадок и выделить преимущества регулярных аудита.
Дополнительные сведения о версиях среды выполнения VC, которые больше не поддерживаются, см. в разделе последние поддерживаемые загрузки Microsoft Visual C++ Redistributable.
Включение аудита файлов NTFS для определения использования среды выполнения VC
В этой статье приведены инструкции по ручному включению аудита файлов NTFS и проверке событий аудита, чтобы определить, какие приложения вызывает неподдерживаемые версии среды выполнения VC. Так как приложение может использовать несколько файлов, в этой статье также показано, как использовать PowerShell и командлеты для обновления разрешений аудита. Дополнительные сведения о настройке политик аудита для файла см. в статье Применение базовой политики аудита к файлу или папке.
Включение аудита доступа к объектам вручную в системе
Перед включением аудита на уровне файлов необходимо включить доступ к объектам:
- Выберите #REF!+R, чтобы открыть диалоговое окно Run. Затем введите данные и нажмите клавишу Enter, чтобы открыть редактор локальной групповой политики.
- Перейдите в раздел Computer Configuration>#REF! Settings>Security Settings>Конфигурация расширенной политики аудита>System Audit Policies>Object Access.
- Дважды щелкните Audit File System. В диалоговом окне "Свойства файловой системы аудита" выберите Настройте следующие события аудитаУспехОК.
- Закройте редактор локальных групповых политик.
Кроме того, можно использовать для включения доступа к объектам:
- Выведите список текущих параметров в командной строке с помощью .
- Включите доступ к объекту с помощью .
Включение аудита в файле вручную
Чтобы отслеживать, какой процесс обращается к файлу среды выполнения VC, включите аудит в файле среды выполнения VC:
- Щелкните правой кнопкой мыши файл, который вы хотите проанализировать, выберите Свойства, а затем выберите вкладку Безопасность. Чтобы получить дополнительную информацию о поиске установленных файлов среды выполнения VC, см. расположение установленных VC Runtime.
- Выберите Advanced.
- В диалоговом окне "Дополнительные параметры безопасности " выберите вкладку "Аудит " и нажмите кнопку "Продолжить".
- Чтобы добавить новое правило аудита, выберите Добавить. В диалоговом окне "Аудит записи" выберите субъект, а затем введите имя пользователя или группы, которую вы хотите добавить, например (Все). Затем нажмите кнопку "ОК".
- В разделе "Тип" убедитесь, что выбран параметр "Успех".
- Выберите Показать предварительные разрешенияОчистить всеОбход папок / Выполнение файловОК.
- Обратите внимание, что новая строка в записях аудита соответствует выбранному вами элементу. Выберите ОК.
- В диалоговом окне "Свойства" нажмите кнопку "ОК".
Теперь правило аудита включено для файла.
Проверка журналов аудита вручную
Аудит файлов NTFS создает событие 4663: предпринята попытка получить доступ к объекту для каждого файла, включающего разрешение аудита и доступ к которому осуществляется процессом.
- Выберите #REF!+R, чтобы открыть диалоговое окно Run. Затем введите
eventvwr.mscи выберите Enter, чтобы открыть Просмотр событий. - Перейдите к журналам Security в журнале Просмотр событий, расширив #REF! Logs>Security. В панели результатов перечислены события безопасности.
- Найдите события аудита, выбрав Фильтр текущего журнала... в области действий. Чтобы ограничить события идентификатором события 4663 (Успешный аудит для категории файловой системы), введите 4663 в текстовое поле "Включить/Исключить идентификаторы событий".
Пример события аудита доступа к файлам 4663 см. в разделе 4663(S): предпринята попытка получить доступ к объекту.
Использование PowerShell для аудита использования среды выполнения VC
Чтобы обновить разрешения аудита файлов с помощью PowerShell, выполните следующие действия.
- Определите правило аудита файловой системы для применения к файлам.
- Получите дескриптор безопасности файла с .
- Применить правило аудита к дескриптору безопасности.
- Примените обновленный дескриптор безопасности к исходному файлу с .
- Посмотреть записи аудита доступа к файлам события 4663 с .
PowerShell: аудит файлов VC Runtime, которые не поддерживаются
Следующий код PowerShell позволяет выполнять аудит установленных файлов среды выполнения VC, которые больше не поддерживаются.
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: просмотр событий аудита файлов
PowerShell предоставляет возможность получения записей событий для различных журналов событий, как показано в следующем коде PowerShell, который перечисляет все записи события аудита доступа к файлам 4663 за последние 24 часа:
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
Дальнейшие действия после аудита использования среды выполнения VC
После определения того, какие процессы используют файлы среды выполнения VC или какие приложения установили распространяемый компонент Visual C++, удалите эти приложения или обновите их до более новых версий, которые не зависят от неподдерживаемых сред выполнения VC.
Для некоторых приложений Майкрософт требуются устаревшие версии среды выполнения VC. Дополнительные сведения см. в статьях о распространяемых библиотеках Visual C++ и библиотеках среды выполнения.
Расположения установки среды выполнения VC
В следующей таблице перечислены, где установлена каждая версия среды выполнения VC.
| версия Visual Studio | Установленные расположения |
|---|---|
| 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 |
Связанный контент
- Распространение файлов Visual C++
- Последние поддерживаемые загрузки Visual C++
- Часто задаваемые вопросы о жизненном цикле: распространяемые библиотеки Visual C++ и библиотеки среды выполнения
- C++ двоичная совместимость между версиями Visual Studio