Bagikan melalui


Cara mengaudit penggunaan versi Visual C++ Runtime

Microsoft Visual C++ Redistributable dan Visual Studio C++ Runtime (secara kolektif, "VC Runtime") adalah komponen penting dari banyak aplikasi. Di seluruh jaringan Anda, komputer mungkin masih menjalankan aplikasi yang menginstal dan menggunakan versi VC Runtime yang tidak didukung. Anda dapat menggunakan audit file NTFS untuk mengidentifikasi penggunaan tersebut sebagai langkah untuk mengganti aplikasi tersebut dengan aplikasi yang menggunakan versi Runtime VC yang didukung. Panduan ini memandu Anda menyiapkan audit file NTFS, memberikan tips pemecahan masalah, dan menyoroti manfaat audit reguler.

Untuk informasi selengkapnya tentang versi VC Runtime yang tidak lagi didukung, lihat Microsoft Visual C++ Redistributable unduhan terbaru yang masih didukung.

Mengaktifkan audit file NTFS untuk menentukan penggunaan Runtime VC

Panduan ini menyediakan langkah-langkah untuk mengaktifkan audit file NTFS secara manual dan meninjau peristiwa audit untuk menentukan aplikasi mana yang memanggil versi Runtime VC yang tidak didukung. Karena ada beberapa file yang dapat digunakan oleh aplikasi, panduan ini juga menunjukkan cara menggunakan cmdlet Get-Acl dan Set-Acl PowerShell untuk memperbarui izin audit. Untuk informasi selengkapnya tentang cara mengonfigurasi kebijakan audit untuk file, lihat Menerapkan kebijakan audit dasar pada file atau folder.

Mengaktifkan audit akses objek secara manual pada sistem

Akses objek harus diaktifkan sebelum Anda mengaktifkan audit tingkat file:

  1. Buka Editor Kebijakan Grup Lokal dengan menekan Windows + R untuk membuka dialog Jalankan. Kemudian ketik gpedit.msc dan tekan Enter.
  2. Navigasi ke Konfigurasi Komputer>Pengaturan Windows>Pengaturan Keamanan>Konfigurasi Kebijakan Audit Tingkat Lanjut>Kebijakan Audit Sistem>Akses Objek .
  3. Klik dua kali Audit Sistem File. Dalam dialog Properti Sistem File Audit, pilih Mengonfigurasi peristiwa audit berikut>Berhasil>OK.
  4. Tutup Editor Kebijakan Grup Lokal.

Atau, Anda dapat menggunakan auditpol.exe untuk mengaktifkan akses objek:

  1. Cantumkan pengaturan saat ini dari baris perintah dengan AuditPol.exe /get /category:"Object Access".
  2. Aktifkan akses objek dengan AuditPol.exe /set /category:"Object Access" /subcategory:"File System" /success:enable.

Mengaktifkan audit secara manual pada file

Untuk memantau proses mana yang mengakses file VC Runtime, aktifkan audit pada file VC Runtime:

  1. Klik kanan file yang ingin Anda audit, pilih Properti, lalu pilih tab Keamanan. Untuk informasi selengkapnya tentang menemukan file Runtime VC yang terinstal, lihat lokasi terinstal VC Runtime.
  2. Pilih Tingkat Lanjut .
  3. Dalam kotak dialog Pengaturan Keamanan Tingkat Lanjut, pilih tab Audit lalu pilih Lanjutkan.
  4. Untuk menambahkan aturan audit baru, pilih Tambahkan. Dalam dialog Entri Audit, pilih pengguna utama, lalu ketik nama pengguna atau grup yang ingin Anda tambahkan seperti (Semua Orang), dan kemudian pilih OK.
  5. Di Ketik, pastikan bahwa Keberhasilan dipilih.
  6. Pilih Tampilkan izin tingkat lanjut>Hapus semua folder>Traverse / jalankan file>OK.
  7. Sekarang harus ada baris baru dalam entri Audit yang cocok dengan apa yang telah Anda pilih. Pilih OK.
  8. Di Dialog Properti , pilih OK.

Aturan audit sekarang diaktifkan untuk file tersebut.

Meninjau log audit secara manual

Audit file NTFS menghasilkan "Peristiwa 4663: Upaya dilakukan untuk mengakses objek" untuk setiap file yang menyertakan izin audit dan diakses oleh proses.

  1. Buka Penampil Peristiwa dengan menekan Windows + R untuk membuka dialog Jalankan. Kemudian ketik eventvwr.msc, dan tekan Enter.
  2. Navigasikan ke log Keamanan di Penampil Peristiwa dengan memperluas Log Windows>Security. Panel hasil mencantumkan peristiwa keamanan.
  3. Temukan peristiwa audit dengan memilih Filter Log Terkini... di panel Tindakan. Batasi peristiwa pada ID Peristiwa 4663 (Sukses Audit untuk Kategori Sistem File) dengan cara memasukkan 4663 ke kotak teks Sertakan/Kecualikan ID Peristiwa.

Untuk contoh Peristiwa Audit Akses File 4663, lihat "4663(S): Upaya dilakukan untuk mengakses objek."

Menggunakan PowerShell untuk mengaudit penggunaan VC Runtime

Sebagai gambaran umum, memperbarui Izin Audit File dengan PowerShell mengikuti langkah-langkah berikut:

  1. Tentukan aturan audit sistem file untuk diterapkan ke file.
  2. Dapatkan penjelas keamanan file dengan Get-Acl.
  3. Terapkan aturan audit ke deskriptor keamanan.
  4. Terapkan deskriptor keamanan yang diperbarui pada file asli dengan Set-Acl.
  5. Lihat catatan Peristiwa Pengauditan Akses File 4663 dalam Get-WinEvent.

PowerShell: Mengaudit file VC Runtime yang tidak didukung

Kode PowerShell berikut memungkinkan Anda mengaudit file VC Runtime yang terinstal yang tidak lagi didukung.

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: Menampilkan peristiwa audit file

PowerShell menyediakan Get-WinEvent untuk mendapatkan rekaman peristiwa untuk berbagai log peristiwa seperti yang ditunjukkan dalam kode PowerShell berikut yang mencantumkan semua catatan Peristiwa Audit 4663 selama 24 jam terakhir:

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

Langkah selanjutnya setelah mengaudit penggunaan VC Runtime

Setelah Anda menentukan proses mana yang menggunakan file VC Runtime, atau aplikasi mana yang telah menginstal VC Redistributable, hapus instalan aplikasi tersebut atau tingkatkan ke versi yang lebih baru yang tidak bergantung pada Runtime VC yang tidak didukung.

Beberapa aplikasi Microsoft memerlukan versi lama dari VC Runtime. Untuk lebih detail, lihat FAQ pustaka Visual C++ Redistributable dan runtime | Microsoft Learn.

Lokasi penginstalan VC Runtime

Di sinilah setiap versi VC Runtime diinstal:

Versi Visual Studio Lokasi terinstal
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

Lihat juga

Mendistribusi Ulang File Visual C++
Unduhan Visual C++ terbaru yang didukung
FAQ Siklus Hidup - Visual C++ Redistributable dan pustaka runtime
kompatibilitas biner C++ antara versi Visual Studio