From 3e5d25656131b9b76a481c42f87224f8468c03a3 Mon Sep 17 00:00:00 2001 From: devanladdu Date: Thu, 24 Sep 2026 13:30:20 -0400 Subject: [PATCH 1/2] Add Visual C++ Health Remediation docs Adds documentation and assets for the Visual C++ Health Remediation NinjaOne solution. New files: Test VC Runtime automation doc, compound conditions for Windows Servers and Workstations, custom fields (cPVAL VC Runtime Remediation and Health Status), and the solution overview. Also adds three screenshots. The content explains detection, optional remediation (reinstall + DISM/SFC), setup steps, dependencies, and troubleshooting. --- docs/ninjaone/automations/test-vc-runtime.md | 104 ++++++++++ .../test-vc-runtime-windows-servers.md | 51 +++++ .../test-vc-runtime-windows-workstations.md | 51 +++++ .../cpval-vc-runtime-health-status.md | 41 ++++ .../cpval-vc-runtime-remediation.md | 52 +++++ ...visual-cpp-health-remediation-ninja-one.md | 179 ++++++++++++++++++ .../image1.webp | Bin 0 -> 16064 bytes .../image1.webp | Bin 0 -> 20286 bytes .../image1.webp | Bin 0 -> 10466 bytes 9 files changed, 478 insertions(+) create mode 100644 docs/ninjaone/automations/test-vc-runtime.md create mode 100644 docs/ninjaone/compound-conditions/test-vc-runtime-windows-servers.md create mode 100644 docs/ninjaone/compound-conditions/test-vc-runtime-windows-workstations.md create mode 100644 docs/ninjaone/custom-fields/cpval-vc-runtime-health-status.md create mode 100644 docs/ninjaone/custom-fields/cpval-vc-runtime-remediation.md create mode 100644 docs/solutions/visual-cpp-health-remediation-ninja-one.md create mode 100644 static/img/docs/07fdc412-cf16-4e61-a760-c7269e016731/image1.webp create mode 100644 static/img/docs/81660c29-6528-4cb0-9dbe-964ba1b4588e/image1.webp create mode 100644 static/img/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f/image1.webp diff --git a/docs/ninjaone/automations/test-vc-runtime.md b/docs/ninjaone/automations/test-vc-runtime.md new file mode 100644 index 000000000..03f2cf295 --- /dev/null +++ b/docs/ninjaone/automations/test-vc-runtime.md @@ -0,0 +1,104 @@ +--- +id: 'a63278c8-89e1-4cfc-80dc-7158bd88635f' +slug: /a63278c8-89e1-4cfc-80dc-7158bd88635f +title: 'Test VC Runtime' +title_meta: 'Test VC Runtime' +keywords: ['visual-c++', 'vcredist', 'runtime', 'health-check', 'remediation', 'dism', 'sfc', 'windows'] +description: 'Checks the Microsoft Visual C++ 2015-2022 runtime for problems and can repair it by reinstalling the runtime and running the built-in Windows repair tools.' +tags: ['update', 'windows', 'automation'] +draft: false +unlisted: false +last_update: + date: 2026-09-24 +--- + +## Overview + +This script checks whether the Microsoft Visual C++ 2015-2022 runtime is healthy and can repair it if it is corrupted. Many Windows applications need this runtime to start. The script is part of the [Visual C++ Health Remediation](/docs/6646d475-e16b-4fa0-b758-fede6155ed96) solution. + +## Choose a Mode + +The `Remediate` checkbox decides whether the script only checks the runtime or also repairs it. + +| Remediate | What Happens | Use It When | +| :--- | :--- | :--- | +| Unchecked | Checks the runtime and reports the result. Nothing on the device changes. | You want to find affected devices without making changes. | +| Checked | Checks the runtime and repairs it if it is corrupted. Healthy devices are left unchanged. | You want to fix affected devices. | + +## What the Repair Does + +When the runtime is corrupted and `Remediate` is checked, the script: + +1. Downloads and installs the latest Visual C++ runtime from Microsoft. +2. Repairs Windows system files with DISM and System File Checker (SFC), the built-in Windows repair tools. +3. Checks the runtime again to confirm the repair worked. +4. Deletes the files it downloaded. + +The script never restarts the device. If a restart is needed to finish the repair, the activity output says so. + +## Understand the Results + +After each run, the result is saved to the [cPVAL VC Runtime Health Status](/docs/81660c29-6528-4cb0-9dbe-964ba1b4588e) custom field. + +| Result | Exit Code | What It Means | +| :--- | :--- | :--- | +| `Healthy` | `0` | The runtime is working. No action is needed. | +| `Corrupted` | `1` | The runtime is damaged or missing files. Run the script with `Remediate` checked to repair it. | + +## Before You Run the Script + +- The device needs internet access. Repair runs also download installers from Microsoft. +- Repair runs can take 30 minutes or more. Set the automation timeout to allow for this. +- Keep the automation's architecture set to 64-bit. The script stops if it runs as 32-bit. + +## Troubleshooting + +| Problem | Cause | Solution | +| :--- | :--- | :--- | +| The activity shows as failed after a repair run. | The script records the original corruption as an error, even when the repair works. | Look for `Visual C++ runtime state: Healthy` in the activity output. This means the repair worked. | +| The result is still `Corrupted` after a repair run. | A repair step failed, or the device needs a restart to finish. | Check the activity output for the failed step. Restart the device if the output asks for it, then run the script again. | +| Repairs fail on devices that get updates from WSUS (Windows Server Update Services). | DISM cannot download repair files through WSUS. | In Group Policy, enable **Specify settings for optional component installation and component repair**. Select the option to download repair content directly from Windows Update. | +| The script ends with an error before showing a result. | The device could not download the script, or security software blocked it. | Check the device's internet access and security software, then run the script again. | + +## Sample Run + +> **Note:** The [Windows Workstations](/docs/0f9b6490-325a-4863-8d1a-e4e38f21f0e6) and [Windows Servers](/docs/8be26d10-ce6c-49b1-99ac-bd5b3bdafc2d) compound conditions run this script automatically on devices in scope. Run it manually to check or repair a single device. + +![Sample Screenshot](../../../static/img/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f/image1.webp) + +## Dependencies + +- [Test-VcRuntime](/docs/bb5b1652-515d-4981-95ca-a983d1e04b84) +- [Custom Field: cPVAL VC Runtime Health Status](/docs/81660c29-6528-4cb0-9dbe-964ba1b4588e) +- [Custom Field: cPVAL VC Runtime Remediation](/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c) +- [Solution: Visual C++ Health Remediation](/docs/6646d475-e16b-4fa0-b758-fede6155ed96) + +## Custom Fields + +| Custom Field | Type | Example | Scope | Available Options | Editable | Description | +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | +| [cPVAL VC Runtime Health Status](/docs/81660c29-6528-4cb0-9dbe-964ba1b4588e) | Text | `Healthy` | Device | N/A | No | Shows the result of the latest run: `Healthy` or `Corrupted`. | +| [cPVAL VC Runtime Remediation](/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c) | Dropdown | `Windows` | System, Organization, Location, Device | `Windows`, `Windows Servers`, `Windows Workstations`, `Disable` | Yes | Selects which devices the solution runs on. Set to `Disable` to exclude a device or location. | + +## Script Variables + +| Name | Type | Example | Default | Available Options | Description | +| :--- | :--- | :--- | :--- | :--- | :--- | +| `Remediate` | Checkbox | `True` | `False` | `True`, `False` | Check to repair a corrupted runtime. Leave unchecked to only check it. | + +> **💡 Note:** Do not edit the script file. It is digitally signed, and any change stops it from running. + +## Automation Setup/Import + +[Automation Configuration](https://github.com/ProVal-Tech/ninjarmm/blob/main/scripts/test-vc-runtime.ps1) + +## Output + +- **Activity Details:** The result and a log of each step. +- **Custom Field:** `cPVAL VC Runtime Health Status` shows `Healthy` or `Corrupted`. + +## Changelog + +### 2026-09-24 + +- Initial version of the document diff --git a/docs/ninjaone/compound-conditions/test-vc-runtime-windows-servers.md b/docs/ninjaone/compound-conditions/test-vc-runtime-windows-servers.md new file mode 100644 index 000000000..142b2284f --- /dev/null +++ b/docs/ninjaone/compound-conditions/test-vc-runtime-windows-servers.md @@ -0,0 +1,51 @@ +--- +id: '8be26d10-ce6c-49b1-99ac-bd5b3bdafc2d' +slug: /8be26d10-ce6c-49b1-99ac-bd5b3bdafc2d +title: 'Test VC Runtime - Windows Servers' +title_meta: 'Test VC Runtime - Windows Servers' +keywords: ['visual-c++', 'vcredist', 'runtime', 'health-check', 'remediation', 'dism', 'sfc', 'windows'] +description: 'Finds Windows servers with a corrupted Microsoft Visual C++ runtime and repairs them automatically.' +tags: ['update', 'windows', 'automation'] +draft: false +unlisted: false +last_update: + date: 2026-09-24 +--- + +## Summary + +This compound condition finds Windows servers with a corrupted Microsoft Visual C++ runtime and repairs them automatically. It is part of the [Visual C++ Health Remediation](/docs/6646d475-e16b-4fa0-b758-fede6155ed96) solution. + +## What It Does + +1. Every 24 hours, it runs [Test VC Runtime](/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f) to check the runtime. This check makes no changes. +2. If the check finds corruption, it runs [Test VC Runtime](/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f) again with `Remediate` checked to repair it. +3. It resets on its own once the runtime is healthy again. + +A check that fails for another reason, such as no internet access, does not trigger a repair. The repair never restarts the server. + +## Turn It On + +Set [cPVAL VC Runtime Remediation](/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c) to `Windows` or `Windows Servers` for the organization, location, or device. Set it to `Disable` to exclude one. + +## Details + +- **Name:** `Test VC Runtime - Windows Servers` +- **Description:** `Finds Windows servers with a corrupted Visual C++ runtime and runs Test VC Runtime to repair it.` +- **Recommended Agent Policies:** `Windows Server Policy [Default]` + +## Dependencies + +- [Automation: Test VC Runtime](/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f) +- [Custom Field: cPVAL VC Runtime Remediation](/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c) +- [Solution: Visual C++ Health Remediation](/docs/6646d475-e16b-4fa0-b758-fede6155ed96) + +## Compound Condition Creation + +- [Compound Condition Configuration](https://github.com/ProVal-Tech/ninjarmm/blob/main/compound-conditions/test-vc-runtime-windows-servers.toml) + +## Changelog + +### 2026-09-24 + +- Initial version of the document diff --git a/docs/ninjaone/compound-conditions/test-vc-runtime-windows-workstations.md b/docs/ninjaone/compound-conditions/test-vc-runtime-windows-workstations.md new file mode 100644 index 000000000..3cc2f9515 --- /dev/null +++ b/docs/ninjaone/compound-conditions/test-vc-runtime-windows-workstations.md @@ -0,0 +1,51 @@ +--- +id: '0f9b6490-325a-4863-8d1a-e4e38f21f0e6' +slug: /0f9b6490-325a-4863-8d1a-e4e38f21f0e6 +title: 'Test VC Runtime - Windows Workstations' +title_meta: 'Test VC Runtime - Windows Workstations' +keywords: ['visual-c++', 'vcredist', 'runtime', 'health-check', 'remediation', 'dism', 'sfc', 'windows'] +description: 'Finds Windows workstations with a corrupted Microsoft Visual C++ runtime and repairs them automatically.' +tags: ['update', 'windows', 'automation'] +draft: false +unlisted: false +last_update: + date: 2026-09-24 +--- + +## Summary + +This compound condition finds Windows workstations with a corrupted Microsoft Visual C++ runtime and repairs them automatically. It is part of the [Visual C++ Health Remediation](/docs/6646d475-e16b-4fa0-b758-fede6155ed96) solution. + +## What It Does + +1. Every 24 hours, it runs [Test VC Runtime](/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f) to check the runtime. This check makes no changes. +2. If the check finds corruption, it runs [Test VC Runtime](/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f) again with `Remediate` checked to repair it. +3. It resets on its own once the runtime is healthy again. + +A check that fails for another reason, such as no internet access, does not trigger a repair. The repair never restarts the workstation. + +## Turn It On + +Set [cPVAL VC Runtime Remediation](/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c) to `Windows` or `Windows Workstations` for the organization, location, or device. Set it to `Disable` to exclude one. + +## Details + +- **Name:** `Test VC Runtime - Windows Workstations` +- **Description:** `Finds Windows workstations with a corrupted Visual C++ runtime and runs Test VC Runtime to repair it.` +- **Recommended Agent Policies:** `Windows Workstation Policy [Default]` + +## Dependencies + +- [Automation: Test VC Runtime](/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f) +- [Custom Field: cPVAL VC Runtime Remediation](/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c) +- [Solution: Visual C++ Health Remediation](/docs/6646d475-e16b-4fa0-b758-fede6155ed96) + +## Compound Condition Creation + +- [Compound Condition Configuration](https://github.com/ProVal-Tech/ninjarmm/blob/main/compound-conditions/test-vc-runtime-windows-workstations.toml) + +## Changelog + +### 2026-09-24 + +- Initial version of the document diff --git a/docs/ninjaone/custom-fields/cpval-vc-runtime-health-status.md b/docs/ninjaone/custom-fields/cpval-vc-runtime-health-status.md new file mode 100644 index 000000000..9dbf606a8 --- /dev/null +++ b/docs/ninjaone/custom-fields/cpval-vc-runtime-health-status.md @@ -0,0 +1,41 @@ +--- +id: '81660c29-6528-4cb0-9dbe-964ba1b4588e' +slug: /81660c29-6528-4cb0-9dbe-964ba1b4588e +title: 'cPVAL VC Runtime Health Status' +title_meta: 'cPVAL VC Runtime Health Status' +keywords: ['visual-c++', 'vcredist', 'runtime', 'health-check', 'remediation', 'dism', 'sfc', 'windows'] +description: 'Stores the VC Runtime Health status returned by the Test VC Runtime script. Indicates whether the VC runtime is healthy or corrupted.' +tags: ['update', 'windows', 'automation'] +draft: false +unlisted: false +last_update: + date: 2026-09-24 +--- + +## Summary + +Stores the VC Runtime Health status returned by the 'Test VC Runtime' script. Indicates whether the VC runtime is healthy or corrupted. + +## Details + +| Label | Field Name | Example | Definition Scope | Type | Required | Default Value | Dropdown Options | Editable | Custom Field Tab | +| ----- | ---------- | ------- | ---------------- | ---- | -------- | ------------- | ---------------- | -------- | ---------------- | +| `cPVAL VC Runtime Health Status` | `cpvalVcRuntimeHealthStatus` | `Healthy` | `Device` | `Text` | `True` | | | `No` | `Visual C++ Remediation` | + +## Dependencies + +- [Solution: Visual C++ Health Remediation](/docs/6646d475-e16b-4fa0-b758-fede6155ed96) + +## Custom Field Creation + +- [Custom Field Configuration](https://github.com/ProVal-Tech/ninjarmm/blob/main/custom-fields/cpval-vc-runtime-health-status.toml) + +## Sample Screenshot + +![Sample Screenshot](../../../static/img/docs/81660c29-6528-4cb0-9dbe-964ba1b4588e/image1.webp) + +## Changelog + +### 2026-09-24 + +- Initial version of the document diff --git a/docs/ninjaone/custom-fields/cpval-vc-runtime-remediation.md b/docs/ninjaone/custom-fields/cpval-vc-runtime-remediation.md new file mode 100644 index 000000000..6b1f399ae --- /dev/null +++ b/docs/ninjaone/custom-fields/cpval-vc-runtime-remediation.md @@ -0,0 +1,52 @@ +--- +id: 'c6895ff6-39ae-403c-9436-4830e1a84d4c' +slug: /c6895ff6-39ae-403c-9436-4830e1a84d4c +title: 'cPVAL VC Runtime Remediation' +title_meta: 'cPVAL VC Runtime Remediation' +keywords: ['visual-c++', 'vcredist', 'runtime', 'health-check', 'remediation', 'dism', 'sfc', 'windows'] +description: 'This custom field is used to trigger the automation for Visual C++ Remediation. It is referenced in compound conditions to determine whether corrupted VC runtime needs to be remediated.' +tags: ['update', 'windows', 'automation'] +draft: false +unlisted: false +last_update: + date: 2026-09-24 +--- + +## Summary + +This custom field is used to trigger the automation for Visual C++ Remediation. It is referenced in compound conditions to determine whether corrupted VC runtime needs to be remediated. + +## Details + +| Label | Field Name | Example | Definition Scope | Type | Required | Default Value | Dropdown Options | Editable | Custom Field Tab | +| ----- | ---------- | ------- | ---------------- | ---- | -------- | ------------- | ---------------- | -------- | ---------------- | +| `cPVAL VC Runtime Remediation` | `cpvalVcRuntimeRemediation` | `Windows` | `System`,`Organization`, `Location`, `Device` | `Dropdown` | `True` | | `Windows`, `Windows Servers`, `Windows Workstations`, `Disable` | `Yes` | `Visual C++ Remediation` | + +### Dropdown options + +| Option | Description | +| ------ | ----------- | +| Disable | No deployment action. Can be used for excluding a device or location. | +| Windows | Enable Visual C++ Health Remediation to all Windows devices in scope. | +| Windows Servers | Enable Visual C++ Health Remediation only to Windows Server devices in scope. | +| Windows Workstations | Enable Visual C++ Health Remediation only to Windows workstation devices in scope. | + +## Dependencies + +- [Compound Condition: Test VC Runtime - Windows Workstations](/docs/0f9b6490-325a-4863-8d1a-e4e38f21f0e6) +- [Compound Condition: Test VC Runtime - Windows Servers](/docs/8be26d10-ce6c-49b1-99ac-bd5b3bdafc2d) +- [Solution: Visual C++ Health Remediation](/docs/6646d475-e16b-4fa0-b758-fede6155ed96) + +## Custom Field Creation + +- [Custom Field Configuration](https://github.com/ProVal-Tech/ninjarmm/blob/main/custom-fields/cpval-vc-runtime-remediation.toml) + +## Sample Screenshot + +![Sample Screenshot](../../../static/img/docs/07fdc412-cf16-4e61-a760-c7269e016731/image1.webp) + +## Changelog + +### 2026-09-24 + +- Initial version of the document diff --git a/docs/solutions/visual-cpp-health-remediation-ninja-one.md b/docs/solutions/visual-cpp-health-remediation-ninja-one.md new file mode 100644 index 000000000..74a54f969 --- /dev/null +++ b/docs/solutions/visual-cpp-health-remediation-ninja-one.md @@ -0,0 +1,179 @@ +--- +id: '6646d475-e16b-4fa0-b758-fede6155ed96' +slug: /6646d475-e16b-4fa0-b758-fede6155ed96 +title: 'Visual C++ Health Remediation' +title_meta: 'Visual C++ Health Remediation Solution' +keywords: ['visual-c++', 'vcredist', 'runtime', 'health-check', 'remediation', 'dism', 'sfc', 'windows'] +description: 'A NinjaOne solution that finds Windows devices with a corrupted Microsoft Visual C++ runtime and repairs them automatically.' +tags: ['update', 'windows', 'automation'] +draft: false +unlisted: false +last_update: + date: 2026-09-24 +--- + +## Purpose + +Many Windows applications need the Microsoft Visual C++ 2015-2022 runtime to start. When its files are damaged or missing, those applications fail to open. This solution finds affected Windows workstations and servers in NinjaOne and repairs them automatically. + +## How It Works + +The solution runs in three steps: + +1. **Check:** Every 24 hours, a compound condition runs the [Test VC Runtime](/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f) automation to check the runtime. This check makes no changes. +2. **Repair:** If the runtime is corrupted, the condition runs [Test VC Runtime](/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f) again with `Remediate` checked. It reinstalls the runtime and repairs Windows system files. +3. **Report:** Each device shows the result in the [cPVAL VC Runtime Health Status](/docs/81660c29-6528-4cb0-9dbe-964ba1b4588e) custom field. The condition resets once the runtime is healthy. + +## Key Capabilities + +* **Daily Detection:** Checks every opted-in device once a day. +* **Automatic Repair:** Reinstalls the latest runtime from Microsoft and repairs Windows system files with DISM and System File Checker (SFC), the built-in Windows repair tools. +* **Safe by Default:** The check makes no changes. Repairs run only on devices where corruption is found. +* **No Restarts:** Never restarts a device. If a restart is needed, the activity output says so. +* **Flexible Scope:** Turn it on for all Windows devices, workstations only, or servers only. Exclude any organization, location, or device. +* **Clear Reporting:** Each device shows `Healthy` or `Corrupted` in a custom field. + +--- + +## Associated Content + +### Custom Fields + +> **Note on Enablement:** `cPVAL VC Runtime Remediation` has **no default value**. You *must* set it to turn the solution on. See [Step 4](#step-4-enable-the-solution-opt-in). + +| Name | Default | Example | Level | Managed By | Function | +| :--- | :--- | :--- | :--- | :--- | :--- | +| [cPVAL VC Runtime Remediation](/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c) | *(unset)* | `Windows` | System, Org, Loc, Dev | Manual | Turns the solution on and selects which devices it covers. | +| [cPVAL VC Runtime Health Status](/docs/81660c29-6528-4cb0-9dbe-964ba1b4588e) | *(blank)* | `Healthy` | Device | Script (Auto) | Shows the result of the latest check: `Healthy` or `Corrupted`. | + +#### **System-Level Fields** + +![Image1](../../static/img/docs/07fdc412-cf16-4e61-a760-c7269e016731/image1.webp) + +#### **Device-Level Fields** + +![Image2](../../static/img/docs/81660c29-6528-4cb0-9dbe-964ba1b4588e/image1.webp) + +### Automations + +| Name | Function | +| :--- | :--- | +| [Test VC Runtime](/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f) | Checks the runtime and, with `Remediate` checked, repairs it. Saves the result to `cPVAL VC Runtime Health Status`. | + +### Compound Conditions + +| Name | Function | +| :--- | :--- | +| [Test VC Runtime - Windows Workstations](/docs/0f9b6490-325a-4863-8d1a-e4e38f21f0e6) | Checks opted-in workstations every 24 hours and repairs any with a corrupted runtime. | +| [Test VC Runtime - Windows Servers](/docs/8be26d10-ce6c-49b1-99ac-bd5b3bdafc2d) | Checks opted-in servers every 24 hours and repairs any with a corrupted runtime. | + +--- + +## Implementation + +### Step 1: Create Custom Fields + +This solution uses **2 custom fields**. You can create them in either of two ways. + +#### Option A: Import Them From the ProVal NinjaRMM Field Sync Portal + +The [NinjaRMM Field Sync](https://ninjafields.provaltech.com/) portal creates both fields for you, with the correct type, scope, permissions, and tab already set. + +1. Sign in to the [NinjaRMM Field Sync](https://ninjafields.provaltech.com/) portal. +2. Set the **Source Instance** to `ProVal Dev`. +3. Open **Filters** and set the **Custom Tab** filter to `Visual C++ Remediation`. +4. Confirm the field count reads **2 fields**. +5. Set the **Target Instance** to the partner instance you are implementing in. +6. Select both fields and click **Deploy Selected**. + +> **⚠️ Validate the result before moving on.** Confirm that both fields appear on the tabs shown in the [System-Level Fields](#system-level-fields) and [Device-Level Fields](#device-level-fields) screenshots. + +#### Option B: Create the Fields Manually + +Create each field as described in its document: + +* [Custom Field: cPVAL VC Runtime Remediation](/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c) +* [Custom Field: cPVAL VC Runtime Health Status](/docs/81660c29-6528-4cb0-9dbe-964ba1b4588e) + +### Step 2: Create the Automation + +Create the following automation as described in the document: + +* [Automation: Test VC Runtime](/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f) + +> *Pro Tip:* Keep the automation's architecture set to 64-bit. The script stops if it runs as 32-bit. + +### Step 3: Create Compound Conditions + +Create the following compound conditions as described in the document: + +* [Compound Condition: Test VC Runtime - Windows Workstations](/docs/0f9b6490-325a-4863-8d1a-e4e38f21f0e6) +* [Compound Condition: Test VC Runtime - Windows Servers](/docs/8be26d10-ce6c-49b1-99ac-bd5b3bdafc2d) + +### Step 4: Enable the Solution (Opt-In) + +The solution is **opt-in** by design. Set [cPVAL VC Runtime Remediation](/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c) at the System, Organization, Location, or Device level: + +| Value | Devices Covered | +| :--- | :--- | +| `Windows` | All Windows workstations and servers. | +| `Windows Workstations` | Windows workstations only. | +| `Windows Servers` | Windows servers only. | +| `Disable` | None. Use it to exclude an organization, location, or device. | + +You'll know it worked when opted-in devices show `Healthy` or `Corrupted` in `cPVAL VC Runtime Health Status`. This happens within 24 hours. + +--- + +## FAQs + +### General Usage + +**Q. What does this solution do?** +**A:** It finds Windows devices where the Microsoft Visual C++ runtime is damaged or missing files, and repairs them. Applications that need the runtime can then start normally. + +**Q. Is this solution turned on automatically?** +**A:** No. It is **opt-in**. Set `cPVAL VC Runtime Remediation` to turn it on. See [Step 4](#step-4-enable-the-solution-opt-in). + +**Q. Which devices are supported?** +**A:** 64-bit Windows 10 and 11, and Windows Server 2016 and later. Devices need internet access. + +**Q. Does the daily check change anything on the device?** +**A:** No. The check only confirms that the runtime's core files and Windows Registry entries are present. Changes happen only when a repair runs on a corrupted device. + +**Q. Can I exclude a single device?** +**A:** Yes. Set `cPVAL VC Runtime Remediation` to `Disable` on that device. A device-level value overrides the organization and location values. + +### Repairs + +**Q. What does a repair do?** +**A:** It reinstalls the latest Visual C++ runtime from Microsoft and repairs Windows system files with DISM and SFC. It then checks the runtime again and deletes the files it downloaded. + +**Q. Will a repair restart my devices?** +**A:** No. If a restart is needed to finish the repair, the activity output says so. Restart the device at a convenient time. + +**Q. How long does a repair take?** +**A:** Usually several minutes. It can take 30 minutes or more when Windows needs deeper repairs. + +**Q. Can I check or repair a single device on demand?** +**A:** Yes. Run the [Test VC Runtime](/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f) automation on the device. Check `Remediate` to repair it, or leave it unchecked to only check it. + +**Q. Can I edit the script to change its behavior?** +**A:** No. The script is digitally signed, and any change stops it from running. + +### Troubleshooting + +| Problem | Cause | Solution | +| :--- | :--- | :--- | +| The repair activity shows as failed. | The script records the original corruption as an error, even when the repair works. | Check `cPVAL VC Runtime Health Status`. `Healthy` means the repair worked. | +| A device still shows `Corrupted` after a repair. | A repair step failed, or the device needs a restart to finish. | Check the activity output for the failed step. Restart the device if asked, then run [Test VC Runtime](/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f) with `Remediate` checked. | +| Repairs fail on devices that get updates from WSUS (Windows Server Update Services). | DISM cannot download repair files through WSUS. | In Group Policy, enable **Specify settings for optional component installation and component repair**. Select the option to download repair content directly from Windows Update. | +| `cPVAL VC Runtime Health Status` is blank. | The solution is not turned on for the device, or the check could not run. | Confirm `cPVAL VC Runtime Remediation` is set for the device. Check that the device has internet access. | + +--- + +## Changelog + +### 2026-09-24 + +- Initial version of the document. diff --git a/static/img/docs/07fdc412-cf16-4e61-a760-c7269e016731/image1.webp b/static/img/docs/07fdc412-cf16-4e61-a760-c7269e016731/image1.webp new file mode 100644 index 0000000000000000000000000000000000000000..cc8e9e81e1f353c1ea4d85928de9e472a15e6ece GIT binary patch literal 16064 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 literal 0 HcmV?d00001 From 96c986949b1c999ee7589e84385fe95dfd2e246a Mon Sep 17 00:00:00 2001 From: Rj98-sh Date: Mon, 28 Sep 2026 11:50:06 -0400 Subject: [PATCH 2/2] QA - Update --- docs/ninjaone/automations/test-vc-runtime.md | 4 ++-- .../test-vc-runtime-windows-servers.md | 4 ++-- .../test-vc-runtime-windows-workstations.md | 4 ++-- .../custom-fields/cpval-vc-runtime-health-status.md | 4 ++-- .../custom-fields/cpval-vc-runtime-remediation.md | 6 +++--- .../visual-cpp-health-remediation-ninja-one.md | 6 +++--- .../image1.webp | Bin 7 files changed, 14 insertions(+), 14 deletions(-) rename static/img/docs/{07fdc412-cf16-4e61-a760-c7269e016731 => c6895ff6-39ae-403c-9436-4830e1a84d4c}/image1.webp (100%) diff --git a/docs/ninjaone/automations/test-vc-runtime.md b/docs/ninjaone/automations/test-vc-runtime.md index 03f2cf295..b0c56df55 100644 --- a/docs/ninjaone/automations/test-vc-runtime.md +++ b/docs/ninjaone/automations/test-vc-runtime.md @@ -9,7 +9,7 @@ tags: ['update', 'windows', 'automation'] draft: false unlisted: false last_update: - date: 2026-09-24 + date: 2026-09-28 --- ## Overview @@ -99,6 +99,6 @@ After each run, the result is saved to the [cPVAL VC Runtime Health Status](/doc ## Changelog -### 2026-09-24 +### 2026-09-28 - Initial version of the document diff --git a/docs/ninjaone/compound-conditions/test-vc-runtime-windows-servers.md b/docs/ninjaone/compound-conditions/test-vc-runtime-windows-servers.md index 142b2284f..05ae71f8b 100644 --- a/docs/ninjaone/compound-conditions/test-vc-runtime-windows-servers.md +++ b/docs/ninjaone/compound-conditions/test-vc-runtime-windows-servers.md @@ -9,7 +9,7 @@ tags: ['update', 'windows', 'automation'] draft: false unlisted: false last_update: - date: 2026-09-24 + date: 2026-09-28 --- ## Summary @@ -46,6 +46,6 @@ Set [cPVAL VC Runtime Remediation](/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c) t ## Changelog -### 2026-09-24 +### 2026-09-28 - Initial version of the document diff --git a/docs/ninjaone/compound-conditions/test-vc-runtime-windows-workstations.md b/docs/ninjaone/compound-conditions/test-vc-runtime-windows-workstations.md index 3cc2f9515..d1f345dd4 100644 --- a/docs/ninjaone/compound-conditions/test-vc-runtime-windows-workstations.md +++ b/docs/ninjaone/compound-conditions/test-vc-runtime-windows-workstations.md @@ -9,7 +9,7 @@ tags: ['update', 'windows', 'automation'] draft: false unlisted: false last_update: - date: 2026-09-24 + date: 2026-09-28 --- ## Summary @@ -46,6 +46,6 @@ Set [cPVAL VC Runtime Remediation](/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c) t ## Changelog -### 2026-09-24 +### 2026-09-28 - Initial version of the document diff --git a/docs/ninjaone/custom-fields/cpval-vc-runtime-health-status.md b/docs/ninjaone/custom-fields/cpval-vc-runtime-health-status.md index 9dbf606a8..03575176d 100644 --- a/docs/ninjaone/custom-fields/cpval-vc-runtime-health-status.md +++ b/docs/ninjaone/custom-fields/cpval-vc-runtime-health-status.md @@ -9,7 +9,7 @@ tags: ['update', 'windows', 'automation'] draft: false unlisted: false last_update: - date: 2026-09-24 + date: 2026-09-28 --- ## Summary @@ -36,6 +36,6 @@ Stores the VC Runtime Health status returned by the 'Test VC Runtime' script. In ## Changelog -### 2026-09-24 +### 2026-09-28 - Initial version of the document diff --git a/docs/ninjaone/custom-fields/cpval-vc-runtime-remediation.md b/docs/ninjaone/custom-fields/cpval-vc-runtime-remediation.md index 6b1f399ae..b5ae81d46 100644 --- a/docs/ninjaone/custom-fields/cpval-vc-runtime-remediation.md +++ b/docs/ninjaone/custom-fields/cpval-vc-runtime-remediation.md @@ -9,7 +9,7 @@ tags: ['update', 'windows', 'automation'] draft: false unlisted: false last_update: - date: 2026-09-24 + date: 2026-09-28 --- ## Summary @@ -43,10 +43,10 @@ This custom field is used to trigger the automation for Visual C++ Remediation. ## Sample Screenshot -![Sample Screenshot](../../../static/img/docs/07fdc412-cf16-4e61-a760-c7269e016731/image1.webp) +![Sample Screenshot](../../../static/img/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c/image1.webp) ## Changelog -### 2026-09-24 +### 2026-09-28 - Initial version of the document diff --git a/docs/solutions/visual-cpp-health-remediation-ninja-one.md b/docs/solutions/visual-cpp-health-remediation-ninja-one.md index 74a54f969..075a658e3 100644 --- a/docs/solutions/visual-cpp-health-remediation-ninja-one.md +++ b/docs/solutions/visual-cpp-health-remediation-ninja-one.md @@ -9,7 +9,7 @@ tags: ['update', 'windows', 'automation'] draft: false unlisted: false last_update: - date: 2026-09-24 + date: 2026-09-28 --- ## Purpose @@ -48,7 +48,7 @@ The solution runs in three steps: #### **System-Level Fields** -![Image1](../../static/img/docs/07fdc412-cf16-4e61-a760-c7269e016731/image1.webp) +![Image1](../../static/img/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c/image1.webp) #### **Device-Level Fields** @@ -174,6 +174,6 @@ You'll know it worked when opted-in devices show `Healthy` or `Corrupted` in `cP ## Changelog -### 2026-09-24 +### 2026-09-28 - Initial version of the document. diff --git a/static/img/docs/07fdc412-cf16-4e61-a760-c7269e016731/image1.webp b/static/img/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c/image1.webp similarity index 100% rename from static/img/docs/07fdc412-cf16-4e61-a760-c7269e016731/image1.webp rename to static/img/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c/image1.webp