Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pakiet redystrybucyjny Microsoft Visual C++ i środowisko uruchomieniowe Visual Studio C++ (łącznie "środowisko uruchomieniowe VC") są kluczowymi składnikami wielu aplikacji. W całej sieci maszyny mogą nadal uruchamiać aplikacje, które instalują i korzystają z wersji środowiska uruchomieniowego VC, która nie jest już wspierana. Inspekcja plików NTFS służy do identyfikowania takiego użycia, jak krok w kierunku zastąpienia tych aplikacji obsługiwanymi wersjami środowiska uruchomieniowego VC. Ten artykuł przeprowadzi Cię przez proces konfigurowania inspekcji plików NTFS, zawiera porady dotyczące rozwiązywania problemów i wyróżnia zalety regularnych inspekcji.
Aby uzyskać więcej informacji na temat wersji środowiska uruchomieniowego VC, które nie są już obsługiwane, zobacz Microsoft Visual C++ Redistributable, pakiet redystrybucyjny, najnowsze obsługiwane wersje do pobrania.
Włączanie inspekcji plików NTFS w celu określenia użycia środowiska uruchomieniowego VC
Ten artykuł zawiera instrukcje ręcznego włączania audytu plików NTFS i przeglądania zdarzeń audytu w celu określenia, które aplikacje wywołują nieobsługiwane wersje środowiska wykonawczego VC. Ponieważ istnieje kilka plików, których może używać aplikacja, w tym artykule pokazano również, jak za pomocą programu PowerShell i poleceń cmdlet aktualizować uprawnienia inspekcji. Aby uzyskać więcej informacji na temat konfigurowania zasad inspekcji dla pliku, zobacz Stosowanie podstawowych zasad inspekcji w pliku lub folderze.
Ręczne włączanie inspekcji dostępu do obiektów w systemie
Przed włączeniem inspekcji na poziomie plików należy włączyć dostęp do obiektów:
- Wybierz Windows+R, aby otworzyć okno dialogowe Run. Następnie naciśnij Enter, aby otworzyć Edytor lokalnych zasad grupy.
- Przejdź do pozycji Konfiguracja komputera>Ustawienia Windows>Ustawienia zabezpieczeń>Zaawansowana konfiguracja polityki audytu>Systemowe polityki audytu>Dostęp do obiektów.
- Kliknij dwukrotnie Przeprowadź inspekcję systemu plików. W oknie dialogowym właściwości systemu plików inspekcji wybierz pozycję Skonfiguruj następujące zdarzenia inspekcjiPowodzenieOK.
- Zamknij Edytor lokalnych zasad grupy.
Alternatywnie możesz użyć polecenia , aby włączyć dostęp do obiektów:
- Wyświetl listę bieżących ustawień z wiersza polecenia przy użyciu .
- Włącz dostęp do obiektów za pomocą .
Ręczne włączanie inspekcji w pliku
Aby monitorować, który proces uzyskuje dostęp do pliku środowiska uruchomieniowego VC, włącz inspekcję w pliku środowiska uruchomieniowego VC:
- Kliknij prawym przyciskiem myszy plik, który chcesz przeprowadzić inspekcję, wybierz pozycję właściwości , a następnie wybierz kartę Zabezpieczenia. Aby uzyskać więcej informacji na temat znajdowania zainstalowanych plików środowiska uruchomieniowego VC, zobacz zainstalowane lokalizacje środowiska uruchomieniowego VC.
- Wybierz pozycję Advanced.
- W oknie dialogowym Ustawienia zabezpieczeń zaawansowanych wybierz kartę Inspekcja , a następnie wybierz pozycję Kontynuuj.
- Aby dodać nową regułę inspekcji, wybierz pozycję Dodaj. W oknie dialogowym Wpis inspekcji wybierz podmiot zabezpieczeń , a następnie wprowadź nazwę użytkownika lub grupy, którą chcesz dodać, na przykład (Wszyscy). Następnie wybierz opcję OK.
- W polu Typ upewnij się, że wybrano opcję Powodzenie .
- Wybierz Pokaż uprawnienia zaawansowaneWyczyść wszystkoPrzejdź przez folder / wykonaj plikOK.
- Zwróć uwagę, że nowy wiersz w wpisach inspekcji zgadza się z tym, co wybrałeś/wybrałaś. Wybierz pozycję OK.
- W oknie dialogowym Właściwości wybierz przycisk OK.
Reguła inspekcji jest teraz włączona dla pliku.
Ręczne przeglądanie dzienników inspekcji
Inspekcja plików NTFS generuje zdarzenie 4663: Podjęto próbę uzyskania dostępu do obiektu dla każdego pliku, który zawiera uprawnienie inspekcji i jest uzyskiwany przez proces.
- Wybierz Windows+R, aby otworzyć okno dialogowe Run. Następnie wprowadź
eventvwr.msci wybierz Enter, aby otworzyć Podgląd zdarzeń. - Przejdź do dzienników Security w Podglądzie zdarzeń poprzez rozwinięcie Windows Logs>Security. W okienku wyników są wyświetlane zdarzenia zabezpieczeń.
- Znajdź zdarzenia inspekcji, wybierając Filtruj bieżący dziennik... w okienku Akcje. Aby zawęzić zdarzenia do identyfikatora zdarzenia 4663 (powodzenie inspekcji dla kategorii systemu plików), wprowadź wartość 4663 w polu tekstowym Dołącza/wyklucza identyfikatory zdarzeń .
Aby zapoznać się z przykładem zdarzenia inspekcji dostępu do plików 4663, zobacz 4663(S): Podjęto próbę uzyskania dostępu do obiektu.
Przeprowadzanie inspekcji użycia środowiska uruchomieniowego VC przy użyciu programu PowerShell
Aby zaktualizować uprawnienia inspekcji plików za pomocą programu PowerShell, wykonaj następujące kroki:
- Zdefiniuj regułę inspekcji systemu plików , która ma być stosowana do plików.
- Uzyskaj deskryptor zabezpieczeń pliku za pomocą .
- Zastosuj regułę inspekcji do deskryptora zabezpieczeń.
- Zastosuj zaktualizowany deskryptor zabezpieczeń w oryginalnym pliku przy użyciu .
- Wyświetl rekordy zdarzenia inspekcji dostępu do plików 4663 z .
PowerShell: przeprowadź inspekcję nieobsługiwanych plików VC Runtime
Poniższy kod programu PowerShell umożliwia inspekcję zainstalowanych plików środowiska uruchomieniowego VC, które nie są już obsługiwane.
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: wyświetlanie zdarzeń inspekcji plików
Program PowerShell zapewnia pobieranie rekordów zdarzeń dla różnych dzienników zdarzeń, jak pokazano w poniższym kodzie programu PowerShell, który zawiera listę wszystkich rekordów inspekcji dostępu do plików 4663 w ciągu ostatnich 24 godzin:
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
Następne kroki po przeprowadzeniu inspekcji użycia środowiska uruchomieniowego VC
Po określeniu, które procesy używają plików środowiska uruchomieniowego VC lub które aplikacje zainstalowały pakiet redystrybucyjny Visual C++, odinstaluj te aplikacje lub uaktualnij je do nowszych wersji, które nie zależą od nieobsługiwanych środowisk uruchomieniowych VC.
Niektóre aplikacje firmy Microsoft wymagają starszych wersji środowiska uruchomieniowego VC. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące bibliotek pakietu redystrybucyjnego i środowiska uruchomieniowego Visual C++.
Lokalizacje instalacji środowiska uruchomieniowego VC
W poniższej tabeli wymieniono, gdzie jest zainstalowana każda wersja środowiska uruchomieniowego VC.
| wersja Visual Studio | Zainstalowane lokalizacje |
|---|---|
| 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 |
Treści powiązane
- Redystrybuuj pliki Visual C++
- Najnowsze obsługiwane wersje Visual C++ do pobrania
- Często zadawane pytania dotyczące cyklu życia: biblioteki redystrybucyjne i środowiska uruchomieniowego Visual C++
- C++ zgodność binarna między wersjami Visual Studio