Add dark theme and repair features

- Dark theme with white text for better readability
- Flush DNS, Reset TCP/IP, Reboot buttons
- ShellView.xaml: dark background, white text colors
- ShellViewModel.cs: new repair commands
- Publish settings for self-contained EXE
This commit is contained in:
Kevin Simmons committed 2026-10-04 19:32:05 -05:00
1 parent e57c29f781
commit 8068fca5bc
4 files changed
+161 -139

No files matched your search

@@ -19,6 +19,9 @@
<Company>Enterprise IT</Company>
<Product>Enterprise Troubleshooter</Product>
<Description>Enterprise Windows 11 24H2+ Troubleshooting Application for VDI and Physical Endpoints</Description>
<PublishSingleFile>true</PublishSingleFile>
<SelfContained>true</SelfContained>
<PublishTrimmed>false</PublishTrimmed>
</PropertyGroup>
<ItemGroup>
@@ -9,7 +9,6 @@
MinWidth="900"
MinHeight="600"
WindowStartupLocation="CenterScreen"
Background="#F3F3F3"
FontFamily="Segoe UI"
FontSize="14">
@@ -62,23 +61,24 @@
<TextBlock Text="{Binding}"
FontWeight="SemiBold"
FontSize="14"
Foreground="#1A1A1A"/>
Foreground="#D4D4D4"/>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="Padding" Value="12"/>
<Setter Property="Margin" Value="0,0,12,12"/>
<Setter Property="BorderBrush" Value="#D0D0D0"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Background" Value="White"/>
</Style>
<Setter Property="BorderBrush" Value="#3E3E42"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Background" Value="#3D3D40"/>
<Setter Property="Foreground" Value="#FFFFFF"/>
</Style>
<Style TargetType="TextBox">
<Setter Property="FontFamily" Value="Consolas"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="IsReadOnly" Value="True"/>
<Setter Property="Background" Value="#1E1E1E"/>
<Setter Property="Foreground" Value="#D4D4D4"/>
<Setter Property="Foreground" Value="#FFFFFF"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="8"/>
</Style>
@@ -88,6 +88,10 @@
</DataTemplate>
</Window.Resources>
<Window.Background>
<SolidColorBrush Color="#2D2D30"/>
</Window.Background>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
@@ -123,7 +127,7 @@
</Border>
<!-- ===== TOOLBAR ===== -->
<Border Grid.Row="1" Background="White" BorderBrush="#D0D0D0"
<Border Grid.Row="1" Background="#3D3D40" BorderBrush="#3E3E42"
BorderThickness="0,1,0,1" Padding="16,10">
<Grid>
<Grid.ColumnDefinitions>
@@ -147,10 +151,19 @@
<Button Content="GPO Refresh" Command="{Binding RunGpUpdateCommand}"
Background="#D83B01" Foreground="White"
IsEnabled="{Binding IsRepairMode}"/>
<Button Content="Flush DNS" Command="{Binding FlushDnsCommand}"
Background="#D83B01" Foreground="White"
IsEnabled="{Binding IsRepairMode}"/>
<Button Content="Reset TCP/IP" Command="{Binding ResetTcpIpCommand}"
Background="#D83B01" Foreground="White"
IsEnabled="{Binding IsRepairMode}"/>
<Button Content="Reboot" Command="{Binding RebootCommand}"
Background="#D83B01" Foreground="White"
IsEnabled="{Binding !IsRunningAnyDiagnostic}"/>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="Repair Mode:" Foreground="#555" VerticalAlignment="Center"
<TextBlock Text="Repair Mode:" Foreground="White" VerticalAlignment="Center"
Margin="0,0,8,0" FontWeight="SemiBold"/>
<ToggleButton x:Name="RepairModeToggle" Content="Repair Mode" Width="120"
Padding="8,4" Background="#E0E0E0" Foreground="#333"
@@ -206,100 +219,100 @@
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Margin="0,0,4,4">
<TextBlock Text="Adapters" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<Border Background="{Binding NetworkResult.AdaptersStatus, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding NetworkResult.AdaptersStatus}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
</StackPanel>
<StackPanel Grid.Column="0" Margin="0,0,4,4">
<TextBlock Text="Adapters" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding NetworkResult.AdaptersStatus, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding NetworkResult.AdaptersStatus}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
</StackPanel>
<StackPanel Grid.Column="1" Margin="4,0,4,4">
<TextBlock Text="Gateway" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<Border Background="{Binding NetworkResult.DefaultGatewayReachable, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding NetworkResult.DefaultGatewayReachable}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding NetworkResult.DefaultGateway}" FontSize="11" Foreground="#888" Margin="0,2,0,0"/>
</StackPanel>
<StackPanel Grid.Column="1" Margin="4,0,4,4">
<TextBlock Text="Gateway" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding NetworkResult.DefaultGatewayReachable, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding NetworkResult.DefaultGatewayReachable}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding NetworkResult.DefaultGateway}" FontSize="11" Foreground="White" Margin="0,2,0,0"/>
</StackPanel>
<StackPanel Grid.Column="2" Margin="4,0,0,4">
<TextBlock Text="DNS" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<Border Background="{Binding NetworkResult.DnsResolution, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding NetworkResult.DnsResolution}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
</StackPanel>
</Grid>
<StackPanel Grid.Column="2" Margin="4,0,0,4">
<TextBlock Text="DNS" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding NetworkResult.DnsResolution, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding NetworkResult.DnsResolution}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
</StackPanel>
</Grid>
<StackPanel Margin="0,4,0,0">
<TextBlock FontSize="11" Margin="0,1,0,1">
<Run FontWeight="SemiBold" Foreground="#555" Text="DHCP: "/>
<Run Foreground="#888" Text="{Binding NetworkResult.DhcpStatus}"/>
</TextBlock>
<TextBlock FontSize="11" Margin="0,1,0,1">
<Run FontWeight="SemiBold" Foreground="#555" Text="Internet: "/>
<Run Foreground="#888" Text="{Binding NetworkResult.InternetConnectivity}"/>
</TextBlock>
<TextBlock FontSize="11" Margin="0,1,0,1" TextWrapping="Wrap">
<Run FontWeight="SemiBold" Foreground="#555" Text="DNS Staleness: "/>
<Run Foreground="#888" Text="{Binding NetworkResult.DnsStalenessText}"/>
</TextBlock>
<TextBlock FontSize="11" Margin="0,1,0,1" TextWrapping="Wrap">
<Run FontWeight="SemiBold" Foreground="#555" Text="NTP Time Skew: "/>
<Run Foreground="#888" Text="{Binding NetworkResult.NtpTimeSkewText}"/>
</TextBlock>
<TextBlock FontSize="11" Margin="0,1,0,1" TextWrapping="Wrap">
<Run FontWeight="SemiBold" Foreground="#555" Text="DNS Servers: "/>
<Run Foreground="#888" Text="{Binding NetworkResult.DnsServersText}"/>
</TextBlock>
<TextBlock FontSize="11" Margin="0,1,0,1" TextWrapping="Wrap">
<Run FontWeight="SemiBold" Foreground="#555" Text="Active: "/>
<Run Foreground="#888" Text="{Binding NetworkResult.ActiveAdapterNamesText}"/>
</TextBlock>
</StackPanel>
<StackPanel Margin="0,4,0,0">
<TextBlock FontSize="11" Margin="0,1,0,1">
<Run FontWeight="SemiBold" Foreground="White" Text="DHCP: "/>
<Run Foreground="White" Text="{Binding NetworkResult.DhcpStatus}"/>
</TextBlock>
<TextBlock FontSize="11" Margin="0,1,0,1">
<Run FontWeight="SemiBold" Foreground="White" Text="Internet: "/>
<Run Foreground="White" Text="{Binding NetworkResult.InternetConnectivity}"/>
</TextBlock>
<TextBlock FontSize="11" Margin="0,1,0,1" TextWrapping="Wrap">
<Run FontWeight="SemiBold" Foreground="White" Text="DNS Staleness: "/>
<Run Foreground="White" Text="{Binding NetworkResult.DnsStalenessText}"/>
</TextBlock>
<TextBlock FontSize="11" Margin="0,1,0,1" TextWrapping="Wrap">
<Run FontWeight="SemiBold" Foreground="White" Text="NTP Time Skew: "/>
<Run Foreground="White" Text="{Binding NetworkResult.NtpTimeSkewText}"/>
</TextBlock>
<TextBlock FontSize="11" Margin="0,1,0,1" TextWrapping="Wrap">
<Run FontWeight="SemiBold" Foreground="White" Text="DNS Servers: "/>
<Run Foreground="White" Text="{Binding NetworkResult.DnsServersText}"/>
</TextBlock>
<TextBlock FontSize="11" Margin="0,1,0,1" TextWrapping="Wrap">
<Run FontWeight="SemiBold" Foreground="White" Text="Active: "/>
<Run Foreground="White" Text="{Binding NetworkResult.ActiveAdapterNamesText}"/>
</TextBlock>
</StackPanel>
<TextBlock Text="Running network diagnostics..." Foreground="#0078D4"
FontSize="12" FontWeight="SemiBold" Margin="0,8,0,0"
Visibility="{Binding IsNetworkRunning, Converter={StaticResource BoolToVis}}"/>
</StackPanel>
</GroupBox>
<TextBlock Text="Running network diagnostics..." Foreground="#0078D4"
FontSize="12" FontWeight="SemiBold" Margin="0,8,0,0"
Visibility="{Binding IsNetworkRunning, Converter={StaticResource BoolToVis}}"/>
</StackPanel>
</GroupBox>
<!-- ===== PROFILE & STORAGE PANEL ===== -->
<GroupBox Grid.Row="0" Grid.Column="1" Header="Profile &amp; Storage">
<StackPanel Margin="0,8,0,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- ===== PROFILE & STORAGE PANEL ===== -->
<GroupBox Grid.Row="0" Grid.Column="1" Header="Profile &amp; Storage">
<StackPanel Margin="0,8,0,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Margin="0,0,8,0">
<TextBlock Text="Disk Space" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<Border Background="{Binding StorageResult.LocalDiskSpace, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding StorageResult.LocalDiskSpace}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding StorageResult.DiskFreePercent, StringFormat={}{0:F1}% free}"
FontSize="11" Foreground="#888" Margin="0,2,0,0"/>
<TextBlock Text="{Binding StorageResult.DiskFreeBytes, StringFormat={}{0:N0} GB free}"
FontSize="10" Foreground="#999" Margin="0,1,0,0"
Visibility="{Binding StorageResult.DiskFreeBytes, Converter={StaticResource BoolToVis}}"/>
</StackPanel>
<StackPanel Grid.Column="0" Margin="0,0,8,0">
<TextBlock Text="Disk Space" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding StorageResult.LocalDiskSpace, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding StorageResult.LocalDiskSpace}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding StorageResult.DiskFreePercent, StringFormat={}{0:F1}% free}"
FontSize="11" Foreground="White" Margin="0,2,0,0"/>
<TextBlock Text="{Binding StorageResult.DiskFreeBytes, StringFormat={}{0:N0} GB free}"
FontSize="10" Foreground="White" Margin="0,1,0,0"
Visibility="{Binding StorageResult.DiskFreeBytes, Converter={StaticResource BoolToVis}}"/>
</StackPanel>
<StackPanel Grid.Column="1">
<TextBlock Text="Temp Folder" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<Border Background="{Binding StorageResult.UserProfileTempSize, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding StorageResult.UserProfileTempSize}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding StorageResult.UserProfileTempBytes, StringFormat={}{0:N0} bytes}"
FontSize="11" Foreground="#888" Margin="0,2,0,0"/>
<StackPanel Grid.Column="1">
<TextBlock Text="Temp Folder" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding StorageResult.UserProfileTempSize, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding StorageResult.UserProfileTempSize}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding StorageResult.UserProfileTempBytes, StringFormat={}{0:N0} bytes}"
FontSize="11" Foreground="White" Margin="0,2,0,0"/>
<Button Content="Clean Temp" Command="{Binding CleanTempFoldersCommand}"
FontSize="10" Padding="8,3" Margin="0,4,0,0"
Background="#FFF3E0" Foreground="#E65100" FontWeight="SemiBold"
@@ -308,27 +321,27 @@
</StackPanel>
</Grid>
<TextBlock Text="Omnissa Horizon" FontWeight="SemiBold" FontSize="12" Foreground="#555" Margin="0,8,0,4"/>
<TextBlock Text="Omnissa Horizon" FontWeight="SemiBold" FontSize="12" Foreground="White" Margin="0,8,0,4"/>
<Border Background="{Binding StorageResult.HorizonAgentStatus, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,0,0,4">
<TextBlock Text="{Binding StorageResult.HorizonAgentStatus}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding StorageResult.HorizonProtocol}"
FontSize="10" Foreground="#888" Margin="0,0,0,2"
FontSize="10" Foreground="White" Margin="0,0,0,2"
Visibility="{Binding StorageResult.HorizonProtocol, Converter={StaticResource BoolToVis}}"/>
<TextBlock Text="{Binding StorageResult.HorizonConnectionState}"
FontSize="10" Foreground="#888" Margin="0,0,0,2"
FontSize="10" Foreground="White" Margin="0,0,0,2"
Visibility="{Binding StorageResult.HorizonConnectionState, Converter={StaticResource BoolToVis}}"/>
<TextBlock Text="App Volumes" FontWeight="SemiBold" FontSize="12" Foreground="#555" Margin="0,4,0,4"/>
<TextBlock Text="App Volumes" FontWeight="SemiBold" FontSize="12" Foreground="White" Margin="0,4,0,4"/>
<Border Background="{Binding StorageResult.AppVolumesStatus, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,0,0,4">
<TextBlock Text="{Binding StorageResult.AppVolumesStatus}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding StorageResult.AppVolumesInfo}"
FontSize="11" Foreground="#888" Margin="0,0,0,4" TextWrapping="Wrap"/>
FontSize="11" Foreground="White" Margin="0,0,0,4" TextWrapping="Wrap"/>
<ItemsControl ItemsSource="{Binding StorageResult.LargeUserProfiles}" Margin="0,8,0,0">
<ItemsControl.ItemTemplate>
@@ -337,12 +350,12 @@
CornerRadius="4" Padding="8,6" Margin="0,0,0,4">
<StackPanel>
<TextBlock>
<Run Text="User: " Foreground="#888" FontWeight="SemiBold"/>
<Run Text="User: " Foreground="White" FontWeight="SemiBold"/>
<Run Text="{Binding UserName}" Foreground="#333" FontWeight="Bold"/>
</TextBlock>
<TextBlock Text="{Binding TempSizeHuman}" Foreground="#E65100"
FontWeight="SemiBold" FontSize="12" Margin="0,2,0,2"/>
<TextBlock Text="{Binding TempPath}" FontSize="9" Foreground="#999"
<TextBlock Text="{Binding TempPath}" FontSize="9" Foreground="White"
TextWrapping="Wrap"/>
</StackPanel>
</Border>
@@ -367,7 +380,7 @@
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Margin="0,0,8,0">
<TextBlock Text="Service State" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<TextBlock Text="Service State" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding PrintResult.SpoolerState, Converter={StaticResource ServiceStateToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding PrintResult.SpoolerState}"
@@ -376,7 +389,7 @@
</StackPanel>
<StackPanel Grid.Column="1" Margin="0,0,8,0">
<TextBlock Text="Pending Jobs" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<TextBlock Text="Pending Jobs" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<TextBlock Text="{Binding PrintResult.PendingJobs, StringFormat={}{0} job(s)}"
FontSize="13" Margin="0,2,0,0"/>
</StackPanel>
@@ -387,9 +400,9 @@
IsEnabled="{Binding IsRepairMode}"/>
</Grid>
<TextBlock Text="{Binding PrintResult.QueueInfo}" FontSize="11" Foreground="#888" Margin="0,4,0,0"/>
<TextBlock Text="{Binding PrintResult.QueueInfo}" FontSize="11" Foreground="White" Margin="0,4,0,0"/>
<TextBlock Text="{Binding PrintResult.VdiPrinterRedirected}"
FontSize="11" Foreground="#888" Margin="0,2,0,0" TextWrapping="Wrap"/>
FontSize="11" Foreground="White" Margin="0,2,0,0" TextWrapping="Wrap"/>
<TextBlock Text="Running print diagnostics..." Foreground="#0078D4"
FontSize="12" FontWeight="SemiBold" Margin="0,8,0,0"
@@ -407,33 +420,33 @@
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Margin="0,0,8,0">
<TextBlock Text="SFC Scan" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<TextBlock Text="SFC Scan" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding HealthResult.SfcHealth, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding HealthResult.SfcHealth}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding HealthResult.SfcOutput}"
FontSize="10" Foreground="#888" Margin="0,4,0,0"
FontSize="10" Foreground="White" Margin="0,4,0,0"
TextWrapping="Wrap" MaxHeight="60"
Visibility="{Binding HealthResult.SfcOutput, Converter={StaticResource BoolToVis}}"/>
</StackPanel>
<StackPanel Grid.Column="1">
<TextBlock Text="DISM Scan" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<TextBlock Text="DISM Scan" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding HealthResult.DISMHealth, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding HealthResult.DISMHealth}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding HealthResult.DISMOutput}"
FontSize="10" Foreground="#888" Margin="0,4,0,0"
FontSize="10" Foreground="White" Margin="0,4,0,0"
TextWrapping="Wrap" MaxHeight="60"
Visibility="{Binding HealthResult.DISMOutput, Converter={StaticResource BoolToVis}}"/>
</StackPanel>
</Grid>
<TextBlock Text="Pending Reboot" FontWeight="SemiBold" FontSize="12" Foreground="#555" Margin="0,8,0,4"/>
<TextBlock Text="Pending Reboot" FontWeight="SemiBold" FontSize="12" Foreground="White" Margin="0,8,0,4"/>
<Border Background="{Binding HealthResult.PendingReboot, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,0,0,4">
<TextBlock Text="{Binding HealthResult.PendingReboot}"
@@ -441,42 +454,42 @@
</Border>
<StackPanel Margin="0,0,0,4">
<TextBlock FontSize="11" Foreground="#777">
<Run FontWeight="SemiBold" Foreground="#555" Text="CBS RebootPending: "/>
<Run FontWeight="SemiBold" Foreground="White" Text="CBS RebootPending: "/>
<Run Foreground="{Binding HealthResult.CBSRebootPending, Converter={StaticResource StatusToBrush}}"
Text="{Binding HealthResult.CBSRebootPending, StringFormat={}{0}}"/>
</TextBlock>
<TextBlock FontSize="11" Foreground="#777">
<Run FontWeight="SemiBold" Foreground="#555" Text="WU RebootRequired: "/>
<Run FontWeight="SemiBold" Foreground="White" Text="WU RebootRequired: "/>
<Run Foreground="{Binding HealthResult.WURebootRequired, Converter={StaticResource StatusToBrush}}"
Text="{Binding HealthResult.WURebootRequired, StringFormat={}{0}}"/>
</TextBlock>
<TextBlock FontSize="11" Foreground="#777">
<Run FontWeight="SemiBold" Foreground="#555" Text="PendingFileRenameOps: "/>
<Run FontWeight="SemiBold" Foreground="White" Text="PendingFileRenameOps: "/>
<Run Foreground="{Binding HealthResult.PendingFileRenameOperations, Converter={StaticResource StatusToBrush}}"
Text="{Binding HealthResult.PendingFileRenameOperations, StringFormat={}{0}}"/>
</TextBlock>
<TextBlock FontSize="11" Foreground="#777">
<Run FontWeight="SemiBold" Foreground="#555" Text="WU RebootRequired Key: "/>
<Run FontWeight="SemiBold" Foreground="White" Text="WU RebootRequired Key: "/>
<Run Foreground="{Binding HealthResult.RebootRequiredRegistryKey, Converter={StaticResource StatusToBrush}}"
Text="{Binding HealthResult.RebootRequiredRegistryKey, StringFormat={}{0}}"/>
</TextBlock>
</StackPanel>
<TextBlock Text="{Binding HealthResult.PendingRebootReason}"
FontSize="11" Foreground="#888" Margin="0,0,0,4" TextWrapping="Wrap"/>
FontSize="11" Foreground="White" Margin="0,0,0,4" TextWrapping="Wrap"/>
<TextBlock Text="Windows Update" FontWeight="SemiBold" FontSize="12" Foreground="#555" Margin="0,8,0,4"/>
<TextBlock Text="Windows Update" FontWeight="SemiBold" FontSize="12" Foreground="White" Margin="0,8,0,4"/>
<Border Background="{Binding HealthResult.WindowsUpdateStatus, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,0,0,4">
<TextBlock Text="{Binding HealthResult.WindowsUpdateStatus}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding HealthResult.WindowsUpdateServiceState}"
FontSize="10" Foreground="#888" Margin="0,0,0,2"
FontSize="10" Foreground="White" Margin="0,0,0,2"
Visibility="{Binding HealthResult.WindowsUpdateServiceState, Converter={StaticResource BoolToVis}}"/>
<TextBlock Text="{Binding HealthResult.LastSuccessUpdate, StringFormat='Last success: {0}'}"
FontSize="11" Foreground="#888" Margin="0,2,0,0"/>
FontSize="11" Foreground="White" Margin="0,2,0,0"/>
<TextBlock Text="{Binding HealthResult.LastUpdateCheck, StringFormat='Last check: {0}'}"
FontSize="11" Foreground="#888" Margin="0,2,0,0"/>
FontSize="11" Foreground="White" Margin="0,2,0,0"/>
<TextBlock Text="Running Windows health diagnostics..." Foreground="#0078D4"
FontSize="12" FontWeight="SemiBold" Margin="0,8,0,0"
@@ -500,46 +513,46 @@
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Grid.Column="0">
<TextBlock Text="Domain" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<TextBlock Text="Domain" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding AdResult.DomainJoined, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding AdResult.DomainJoined}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding AdResult.DomainName}"
FontSize="10" Foreground="#888" Margin="0,2,0,0" TextWrapping="Wrap"/>
FontSize="10" Foreground="White" Margin="0,2,0,0" TextWrapping="Wrap"/>
</StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" Margin="16,0,0,0">
<TextBlock Text="Logged On User" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<TextBlock Text="Logged On User" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<TextBlock Text="{Binding AdResult.LoggedOnUser}"
FontSize="12" Foreground="#333" FontWeight="SemiBold" Margin="0,2,0,0"/>
<TextBlock Text="{Binding AdResult.LogonServer}"
FontSize="10" Foreground="#888" Margin="0,1,0,0"/>
FontSize="10" Foreground="White" Margin="0,1,0,0"/>
</StackPanel>
<StackPanel Grid.Row="1" Grid.Column="0" Margin="0,8,0,0">
<TextBlock Text="Domain Controller" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<TextBlock Text="Domain Controller" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding AdResult.DcReachable, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding AdResult.DcReachable}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding AdResult.DomainController}"
FontSize="10" Foreground="#888" Margin="0,2,0,0" TextWrapping="Wrap"/>
FontSize="10" Foreground="White" Margin="0,2,0,0" TextWrapping="Wrap"/>
<TextBlock Text="{Binding AdResult.DcLatencyText}"
FontSize="11" Foreground="#555" Margin="0,1,0,0" FontWeight="SemiBold"/>
FontSize="11" Foreground="White" Margin="0,1,0,0" FontWeight="SemiBold"/>
</StackPanel>
<StackPanel Grid.Row="1" Grid.Column="1" Margin="16,8,0,0">
<TextBlock Text="AD Site" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<TextBlock Text="AD Site" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding AdResult.DcSite, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding AdResult.DcSite}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding AdResult.DcSiteName}"
FontSize="10" Foreground="#888" Margin="0,2,0,0"/>
FontSize="10" Foreground="White" Margin="0,2,0,0"/>
</StackPanel>
<Grid Grid.Row="2" Grid.ColumnSpan="2" Margin="0,8,0,0">
@@ -549,25 +562,25 @@
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<TextBlock Text="SYSVOL Share" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<TextBlock Text="SYSVOL Share" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding AdResult.SysvolShare, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding AdResult.SysvolShare}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding AdResult.SysvolShareText}"
FontSize="10" Foreground="#888" Margin="0,2,0,0" TextWrapping="Wrap"/>
FontSize="10" Foreground="White" Margin="0,2,0,0" TextWrapping="Wrap"/>
</StackPanel>
<StackPanel Grid.Column="1" Margin="16,0,0,0">
<TextBlock Text="Netlogon Share" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<TextBlock Text="Netlogon Share" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding AdResult.NetlogonShare, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding AdResult.NetlogonShare}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding AdResult.NetlogonShareText}"
FontSize="10" Foreground="#888" Margin="0,2,0,0" TextWrapping="Wrap"/>
FontSize="10" Foreground="White" Margin="0,2,0,0" TextWrapping="Wrap"/>
</StackPanel>
</Grid>
@@ -578,22 +591,22 @@
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<TextBlock Text="Trust Relationship" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<TextBlock Text="Trust Relationship" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<Border Background="{Binding AdResult.TrustRelationship, Converter={StaticResource StatusToBrush}}"
CornerRadius="3" Padding="8,3" Margin="0,2,0,0">
<TextBlock Text="{Binding AdResult.TrustRelationship}"
FontSize="12" Foreground="White" FontWeight="SemiBold"/>
</Border>
<TextBlock Text="{Binding AdResult.TrustRelationshipText}"
FontSize="10" Foreground="#888" Margin="0,2,0,0" TextWrapping="Wrap"/>
FontSize="10" Foreground="White" Margin="0,2,0,0" TextWrapping="Wrap"/>
</StackPanel>
<StackPanel Grid.Column="1" Margin="16,0,0,0">
<TextBlock Text="GPO Last Apply" FontWeight="SemiBold" FontSize="12" Foreground="#555"/>
<TextBlock FontSize="11" Foreground="#555" Margin="0,2,0,0">
<TextBlock Text="GPO Last Apply" FontWeight="SemiBold" FontSize="12" Foreground="White"/>
<TextBlock FontSize="11" Foreground="White" Margin="0,2,0,0">
<Run Text="User: " FontWeight="SemiBold"/><Run Text="{Binding AdResult.LastUserGpoTime}"/>
</TextBlock>
<TextBlock FontSize="11" Foreground="#555" Margin="0,1,0,0">
<TextBlock FontSize="11" Foreground="White" Margin="0,1,0,0">
<Run Text="Computer: " FontWeight="SemiBold"/><Run Text="{Binding AdResult.LastComputerGpoTime}"/>
</TextBlock>
</StackPanel>
+6
View File
@@ -0,0 +1,6 @@
$file = 'E:\Geekanarchy\Net-Apps\EnterpriseTroubleshooter\EnterpriseTroubleshooter.sln\EnterpriseTroubleshooter\Views\ShellView.xaml'
$content = Get-Content $file -Raw
$content = $content.Replace('Foreground="#555"', 'Foreground="White"')
$content = $content.Replace('Foreground="#888"', 'Foreground="White"')
$content = $content.Replace('Foreground="#999"', 'Foreground="White"')
Set-Content $file -Value $content -NoNewline