Visual C++ Çalışma Zamanı sürümü kullanımını denetleme
Microsoft Visual C++ Yeniden Dağıtılabilir ve Visual Studio C++ Çalışma Zamanı (topluca "VC Çalışma Zamanı") birçok uygulamanın kritik bileşenleridir. Ağınız genelinde makineler, VC Çalışma Zamanı'nın destek dışı sürümünü yükleyen ve kullanan uygulamaları çalıştırıyor olabilir. NTFS dosya denetimini, bu uygulamaları VC Çalışma Zamanı'nın desteklenen bir sürümünü kullanan uygulamalarla değiştirme adımı olarak tanımlamak için kullanabilirsiniz. Bu kılavuz, NTFS dosya denetimini ayarlama konusunda size yol gösterir, sorun giderme ipuçları sağlar ve düzenli denetimlerin avantajlarını vurgular.
Artık desteklenmeyen VC Çalışma Zamanı sürümleri hakkında daha fazla bilgi için bkz. Microsoft Visual C++ Yeniden Dağıtılabilir en son desteklenen indirmeler.
VC Çalışma Zamanı kullanımını belirlemek için NTFS dosya denetimini etkinleştirme
Bu kılavuz, NTFS dosya denetimini el ile etkinleştirme ve hangi uygulamaların VC Çalışma Zamanı'nın desteklenmeyen sürümlerini çağırdığını belirlemek için denetim olaylarını gözden geçirme adımlarını sağlar. Bir uygulama tarafından kullanılabilecek birkaç dosya olduğundan, bu kılavuz denetim izinlerini güncelleştirmek için PowerShell'in Get-Acl
ve Set-Acl
cmdlet'lerinin nasıl kullanılacağını da gösterir. Bir dosya için denetim ilkelerini yapılandırma hakkında daha fazla bilgi için bkz. bir dosya veya klasöre temel denetim ilkesi uygulama.
Sistemde nesne erişimi denetimini el ile etkinleştirme
Dosya düzeyinde denetimi etkinleştirmeden önce nesne erişimi etkinleştirilmelidir:
-
Windows
+R
tuşlarına basarak Çalıştır iletişim kutusunu açın ve Yerel Grup İlkesi Düzenleyicisi açın. Ardındangpedit.msc
yazın ve basın Enter. - Bilgisayar Yapılandırması>Windows Ayarları>Güvenlik Ayarları>Gelişmiş Denetim İlkesi Yapılandırması>Sistem Denetim İlkeleri>Nesne Erişimigidin.
- Denetim Dosya Sistemiüzerinde çift tıklayın. Denetim Dosya Sistemi Özellikleri iletişim kutusunda, Aşağıdaki denetim olaylarını yapılandırınseçeneğini belirleyin>,Başarılı>, ardındanTamam'a tıklayın.
- Yerel Grup İlkesi Düzenleyicisikapatın.
Alternatif olarak, nesne erişimini etkinleştirmek için auditpol.exe
kullanabilirsiniz:
- Komut satırından geçerli ayarları
AuditPol.exe /get /category:"Object Access"
ile listeleyin. -
AuditPol.exe /set /category:"Object Access" /subcategory:"File System" /success:enable
ile nesne erişimini etkinleştirin.
Dosyada denetimi el ile etkinleştirme
Bir VC Çalışma Zamanı dosyasına erişen işlemi izlemek için VC Çalışma Zamanı dosyasında denetimi etkinleştirin:
- Denetlemek istediğiniz dosyaya sağ tıklayın, özellikler seçin ve ardından Güvenlik sekmesini seçin. Yüklü VC Çalışma Zamanı dosyalarını bulma hakkında daha fazla bilgi için bkz. VC Çalışma Zamanı yüklü konumları.
- Gelişmişseçin.
- Gelişmiş Güvenlik Ayarları iletişim kutusunda, Denetim sekmesini ve ardından Devam'ı seçin.
- Yeni bir denetim kuralı eklemek için Ekleseçin. Denetim Girdisi iletişim kutusunda bir sorumlu seçin, ardından (Herkes)gibi eklemek istediğiniz kullanıcı veya grubun adını yazın ve Tamam'ı seçin.
- Türbölümünde, Başarı'ün seçili olduğundan emin olun.
- Önce gelişmiş izinleri göster seçin, ardından>, tümünü temizle>, klasöre göz at / dosyayı çalıştır>, ve Tamam.
- Artık Denetim girdilerinde seçtiğinizle eşleşen yeni bir satır olmalıdır. Tamam seçin.
- Özellikler İletişim Kutusunda Tamamseçeneğini belirleyin.
Denetim kuralı artık dosya için etkinleştirilmiştir.
Denetim günlüklerini el ile gözden geçirme
NTFS dosya denetimi, denetim iznini içeren ve bir işlem tarafından erişilen her dosya için "Olay 4663: Bir nesneye erişme girişiminde bulunuldu" oluşturur.
-
Windows
+R
tuşlarına basarak Çalıştır iletişim kutusunu açın, ardından Olay Görüntüleyicisi açın. Ardındaneventvwr.msc
yazın ve Enterbasın. - Güvenlik günlüklerine gitmek için, Olay Görüntüleyicisi'nde Windows Günlükleri'ni genişleterek>Güvenlik'e gidin. Sonuçlar bölmesinde güvenlik olayları listelenir.
- Geçerli Günlüğü Filtrele... seçerek, Eylemler bölmesinde denetim olaylarını bulun. Olayları Olay Kimliği 4663 (Dosya Sistemi Kategorisi için Denetim Başarısı) ile sınırlandırmak için 4663'ü Ekler/Dışlar Olay Kimlikleri metin kutusuna girin.
Dosya Erişim Denetimi Olayı 4663 örneği için bkz. "4663(S): Bir nesneye erişme girişiminde bulunuldu."
VC Çalışma Zamanı kullanımını denetlemek için PowerShell kullanma
Genel bakış olarak, PowerShell ile Dosya Denetimi İzinlerini güncelleştirmek şu adımları izler:
- Dosyalara uygulanacak dosya sistemi denetim kuralını tanımlayın.
-
Get-Acl
ile bir dosyanın güvenlik tanımlayıcısını alın. - Güvenlik tanımlayıcısına denetim kuralı uygulayın.
-
Set-Acl
ile özgün dosyaya güncelleştirilmiş güvenlik tanımlayıcısını uygulayın. - Dosya Erişimi Denetimi Olayı 4663 kayıtlarını
Get-WinEvent
ile görüntüleyin.
PowerShell: Destek dışı VC Çalışma Zamanı dosyalarını denetleme
Aşağıdaki PowerShell kodu, artık desteklenmeyen yüklü VC Çalışma Zamanı dosyalarını denetlemenizi sağlar.
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: Dosya denetim olaylarını görüntüleme
PowerShell, son 24 saat içindeki tüm Denetim Olayı 4663 kayıtlarını listeleyen aşağıdaki PowerShell kodunda gösterildiği gibi çeşitli olay günlüklerinin olay kayıtlarını almak için Get-WinEvent
sağlar:
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 Çalışma Zamanı kullanımını denetledikten sonraki adımlar
Hangi işlemlerin VC Çalışma Zamanı dosyalarını kullandığını veya hangi uygulamaların VC Yeniden Dağıtılabilir'i yüklediğini belirledikten sonra, bu uygulamaları kaldırın veya desteklenmeyen VC Çalışma Zamanlarına bağımlı olmayan daha yeni sürümlere yükseltin.
Bazı Microsoft uygulamaları için VC Çalışma Zamanı'nın eski sürümleri gerekir. Ayrıntılar için bkz. Visual C++ Yeniden Dağıtılabilir ve Çalışma Zamanı Kitaplıkları SSS | Microsoft Learn.
VC Runtime yükleme konumları
VC Çalışma Zamanı'nın her sürümünün yüklendiği yer:
Visual Studio Sürüm | Yüklü Konumlar |
---|---|
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 |
Ayrıca bkz.
Visual C++ Dosyalarını Yeniden Dağıtma
Desteklenen en son Visual C++ indirmeleri
Yaşam Döngüsü Sık Sorulan Sorular - Visual C++ Yeniden Dağıtılabilir ve çalışma zamanı kitaplıkları
Visual Studio sürümleri arasında C++ ikili uyumluluk