Skip to content

Commit 5205c84

Browse files
committed
Code Quality: Prevent crash when detecting startup state
1 parent 6591701 commit 5205c84

File tree

1 file changed

+26
-9
lines changed

1 file changed

+26
-9
lines changed

src/Files.App/ViewModels/Settings/AdvancedViewModel.cs

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using Microsoft.Win32;
66
using SevenZip;
77
using System.IO;
8+
using System.Runtime.InteropServices;
89
using System.Text;
910
using System.Windows.Input;
1011
using Windows.ApplicationModel;
@@ -354,6 +355,7 @@ public bool ShowFlattenOptions
354355
OnPropertyChanged();
355356
}
356357
}
358+
357359
public async Task OpenFilesOnWindowsStartupAsync()
358360
{
359361
var stateMode = await ReadState();
@@ -369,12 +371,19 @@ public async Task OpenFilesOnWindowsStartupAsync()
369371

370372
if (state != OpenOnWindowsStartup)
371373
{
372-
StartupTask startupTask = await StartupTask.GetAsync("3AA55462-A5FA-4933-88C4-712D0B6CDEBB");
373-
if (OpenOnWindowsStartup)
374-
await startupTask.RequestEnableAsync();
375-
else
376-
startupTask.Disable();
377-
await DetectOpenFilesAtStartupAsync();
374+
try
375+
{
376+
StartupTask startupTask = await StartupTask.GetAsync("3AA55462-A5FA-4933-88C4-712D0B6CDEBB");
377+
if (OpenOnWindowsStartup)
378+
await startupTask.RequestEnableAsync();
379+
else
380+
startupTask.Disable();
381+
await DetectOpenFilesAtStartupAsync();
382+
}
383+
catch (COMException ex)
384+
{
385+
App.Logger?.LogWarning(ex, "RPC server unavailable, returning default state");
386+
}
378387
}
379388
}
380389

@@ -409,8 +418,16 @@ public async Task DetectOpenFilesAtStartupAsync()
409418

410419
public async Task<StartupTaskState> ReadState()
411420
{
412-
var state = await StartupTask.GetAsync("3AA55462-A5FA-4933-88C4-712D0B6CDEBB");
413-
return state.State;
421+
try
422+
{
423+
var state = await StartupTask.GetAsync("3AA55462-A5FA-4933-88C4-712D0B6CDEBB");
424+
return state.State;
425+
}
426+
catch (COMException ex)
427+
{
428+
App.Logger?.LogWarning(ex, "RPC server unavailable, returning default state");
429+
return StartupTaskState.Disabled;
430+
}
414431
}
415432
}
416-
}
433+
}

0 commit comments

Comments
 (0)