Megosztás a következőn keresztül:


A Visual C++ futtatókörnyezet verzióhasználatának naplózása

A Microsoft Visual C++ terjeszthető és a Visual Studio C++ futtatókörnyezet (együttesen "VC Runtime") számos alkalmazás kritikus összetevői. Előfordulhat, hogy a hálózaton a gépek továbbra is futtatnak olyan alkalmazásokat, amelyek a VC futtatókörnyezet egy nem támogatott verzióját telepítik és használják. AZ NTFS-fájlnaplózással azonosíthatja az ilyen használatot, mivel az alkalmazásokat olyan alkalmazásokkal cserélheti le, amelyek a VC-futtatókörnyezet támogatott verzióját használják. Ez az útmutató végigvezeti az NTFS-fájlok naplózásának beállításán, hibaelhárítási tippeket nyújt, és kiemeli a rendszeres naplózás előnyeit.

A már nem támogatott VC runtime-verziókról további információt Microsoft Visual C++ terjeszthető legújabb támogatott letöltésekcímű témakörben talál.

NTFS-fájl naplózásának engedélyezése a VC-futtatókörnyezet használatának meghatározásához

Ez az útmutató az NTFS-fájlok manuális naplózásának engedélyezéséhez és a naplózási események áttekintéséhez szükséges lépéseket ismerteti annak megállapításához, hogy mely alkalmazások hívják meg a VC-futtatókörnyezet nem támogatott verzióit. Mivel egy alkalmazás több fájlt is használhat, ez az útmutató azt is bemutatja, hogyan frissítheti a naplózási engedélyeket a PowerShell Get-Acl és Set-Acl parancsmagjaival. A fájlok naplózási házirendjeinek konfigurálásáról további információt Alapvető naplózási szabályzat alkalmazása fájlra vagy mappáracímű témakörben talál.

Objektumhozzáférés-naplózás manuális engedélyezése a rendszeren

A fájlszintű naplózás engedélyezése előtt engedélyezni kell az objektumhozzáférést:

  1. Nyissa meg a Helyi csoportházirend-szerkesztő a Windows + R lenyomásával nyissa meg a Futtatás párbeszédpanelt. Ezután írja be gpedit.msc, és nyomja le Enterbillentyűt.
  2. Navigáljon számítógép konfigurációs>Windows-beállítások>Biztonsági beállítások>Speciális naplózási házirend-konfiguráció>Rendszernaplózási szabályzatok>Objektumhozzáférés.
  3. Kattintson duplán a Audit Fájlrendszerelemre. A Fájlrendszer tulajdonságai párbeszédpanelen válassza a A következő audit események konfigurálása>Sikeres>OK.
  4. Zárja be a Helyi csoportházirend-szerkesztő.

Másik lehetőségként auditpol.exe is használhatja az objektumhozzáférés engedélyezéséhez:

  1. A parancssorból listázhatja az aktuális beállításokat a AuditPol.exe /get /category:"Object Access"használatával.
  2. Objektumhozzáférés engedélyezése AuditPol.exe /set /category:"Object Access" /subcategory:"File System" /success:enable.

Fájl naplózásának manuális engedélyezése

Ha ellenőrizni szeretné, hogy melyik folyamat fér hozzá egy VC-futtatókörnyezeti fájlhoz, engedélyezze a naplózást a VC-futtatókörnyezetfájlon:

  1. Kattintson a jobb gombbal a naplózni kívánt fájlra, válassza a Tulajdonságoklehetőséget, majd válassza a Biztonsági lapot. A telepített VC-futtatókörnyezeti fájlok kereséséről további információt VC Futtatókörnyezet telepített helyeicímű témakörben talál.
  2. Válassza Speciálislehetőséget.
  3. A Speciális biztonsági beállítások párbeszédpanelen válassza a Naplózás lapot, majd válassza a Folytatáslehetőséget.
  4. Új naplózási szabály hozzáadásához válassza a hozzáadása lehetőséget. A Naplózási bejegyzés párbeszédpanelen jelöljön ki egy fő elnevezést, majd írja be a hozzáadni kívánt felhasználó vagy csoport nevét, például (Mindenki), majd válassza a OKlehetőséget.
  5. A Típusterületen győződjön meg arról, hogy a Sikeres van kijelölve.
  6. Válassza az Előzetes engedélyek megjelenítése>Az összes>Traverse mappa törlése/fájl végrehajtása>OK.
  7. Most egy új sornak kell lennie a auditálási bejegyzések között, amelyek megfelelnek az Ön által választottaknak. Válassza OKlehetőséget.
  8. A Tulajdonságok párbeszédpanelen válassza OKlehetőséget.

A naplózási szabály immár engedélyezve van a fájlra.

Naplók manuális áttekintése

Az NTFS fájl-naplózás "Event 4663: Kísérlet történt egy objektum elérésére" minden olyan fájl esetében kerül rögzítésre, amely tartalmazza a naplózási engedélyt, és amelyet egy folyamat elér.

  1. A Eseménynapló megnyitásához nyomja le a Windows + R billentyűt a Futtatás párbeszédpanel megnyitásához. Ezután írja be a eventvwr.msc, majd nyomja le Enterbillentyűt.
  2. Nyissa meg a Biztonsági naplókat az Eseménynapló programban, a Windows-naplók kibontásával és a>Biztonságkiválasztásával. Az eredmények panelen biztonsági események láthatók.
  3. Az audit események megkereséséhez válassza a Aktuális napló szűrése... lehetőséget a Műveletek panelen belül. Szűkítse az eseményeket az alábbi eseményazonosítóra: 4663 (auditálási siker a fájlrendszer kategóriában), ha beírja a 4663-at az Eseményazonosítók szövegmezőbe.

A 4663-at tartalmazó fájlhozzáférési naplózási eseményre példa: "4663(S): Kísérlet történt egy objektum elérésére."

A PowerShell használata a VC futtatókörnyezet használatának naplózásához

Áttekintésként a fájlnaplózási engedélyek PowerShell-lel való frissítése az alábbi lépéseket követi:

  1. A fájl(ok)ra alkalmazandó fájlrendszer-naplózási szabály meghatározása.
  2. Szerezd meg egy fájl biztonsági leíróját Get-Aclsegítségével.
  3. Az auditszabály alkalmazása a biztonsági leíróra.
  4. Alkalmazza a frissített biztonsági leírást az eredeti fájlra Set-Acl.
  5. Fájlhozzáférési naplózási esemény 4663 rekordjainak megtekintése Get-WinEvent.

PowerShell: Nem támogatott VC futtatókörnyezeti fájlok ellenőrzése

Az alábbi PowerShell-kód lehetővé teszi a már nem támogatott telepített VC-futtatókörnyezeti fájlok naplózását.

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: Fájlnaplózási események megtekintése

A PowerShell a Get-WinEvent használható különböző eseménynaplók eseményrekordjainak lekéréséhez, ahogy az az alábbi PowerShell-kódban látható, amely az elmúlt 24 órában az összes Auditálási esemény 4663 rekordot felsorolja.

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

Következő lépések a VC-futtatókörnyezet használatának naplózása után

Miután megállapította, hogy mely folyamatok használják a VC-futtatókörnyezet fájljait, vagy mely alkalmazások telepítették a VC terjeszthetőjét, távolítsa el ezeket az alkalmazásokat, vagy frissítse őket újabb verziókra, amelyek nem függnek a nem támogatott VC-futtatókörnyezettől.

Egyes Microsoft-alkalmazásokhoz a VC-futtatókörnyezet régebbi verzióira van szükség. További információ: Visual C++ terjeszthető és futtatókörnyezeti kódtárak – gyakori kérdések | Microsoft Learn.

VC futtatókörnyezet telepítési helyei

Itt települnek a VC-futtatókörnyezet egyes verziói:

Visual Studio verzió Telepített hely(ek)
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

Lásd még:

Visual C++ fájlok újraterjesztése
A legújabb támogatott Visual C++ letöltések
Életciklus gyakori kérdések – Visual C++ terjeszthető és futtatókörnyezeti kódtárak
Visual Studio-verziók közötti C++ bináris kompatibilitás