private IEnumerable<string> ListAppProblems(out bool permissionDenied)
{
uint arrayLength;
NativeMethods.RM_REBOOT_REASON rebootReasons;
var apps = ListAppsInternal(out arrayLength, out rebootReasons);
permissionDenied = rebootReasons == NativeMethods.RM_REBOOT_REASON.RmRebootReasonPermissionDenied;
var names = new List<string>();
for (int i = 0; i < arrayLength; i++)
{
if (apps[i].AppStatus == NativeMethods.RM_APP_STATUS.RmStatusErrorOnStop || apps[i].AppStatus == NativeMethods.RM_APP_STATUS.RmStatusErrorOnRestart)
names.Add(apps[i].strAppName);
}
return names;
}