diff --git a/docs/ninjaone/automations/test-vc-runtime.md b/docs/ninjaone/automations/test-vc-runtime.md new file mode 100644 index 000000000..b0c56df55 --- /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-28 +--- + +## 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-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 new file mode 100644 index 000000000..05ae71f8b --- /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-28 +--- + +## 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-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 new file mode 100644 index 000000000..d1f345dd4 --- /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-28 +--- + +## 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-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 new file mode 100644 index 000000000..03575176d --- /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-28 +--- + +## 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-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 new file mode 100644 index 000000000..b5ae81d46 --- /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-28 +--- + +## 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/c6895ff6-39ae-403c-9436-4830e1a84d4c/image1.webp) + +## Changelog + +### 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 new file mode 100644 index 000000000..075a658e3 --- /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-28 +--- + +## 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/c6895ff6-39ae-403c-9436-4830e1a84d4c/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-28 + +- Initial version of the document. diff --git a/static/img/docs/81660c29-6528-4cb0-9dbe-964ba1b4588e/image1.webp b/static/img/docs/81660c29-6528-4cb0-9dbe-964ba1b4588e/image1.webp new file mode 100644 index 000000000..cd86370fc Binary files /dev/null and b/static/img/docs/81660c29-6528-4cb0-9dbe-964ba1b4588e/image1.webp differ diff --git a/static/img/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f/image1.webp b/static/img/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f/image1.webp new file mode 100644 index 000000000..091ff8a01 Binary files /dev/null and b/static/img/docs/a63278c8-89e1-4cfc-80dc-7158bd88635f/image1.webp differ diff --git a/static/img/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c/image1.webp b/static/img/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c/image1.webp new file mode 100644 index 000000000..cc8e9e81e Binary files /dev/null and b/static/img/docs/c6895ff6-39ae-403c-9436-4830e1a84d4c/image1.webp differ