@@ -27,6 +27,7 @@ public static async Task<IEnumerable<ICloudProvider>> DetectCloudDrives()
2727 SafetyExtensions . IgnoreExceptions ( DetectpCloudDrive , App . Logger ) ,
2828 SafetyExtensions . IgnoreExceptions ( DetectNutstoreDrive , App . Logger ) ,
2929 SafetyExtensions . IgnoreExceptions ( DetectSeadriveDrive , App . Logger ) ,
30+ SafetyExtensions . IgnoreExceptions ( DetectAutodeskDrive , App . Logger ) ,
3031 } ;
3132
3233 await Task . WhenAll ( tasks ) ;
@@ -292,5 +293,33 @@ private static Task<IEnumerable<ICloudProvider>> DetectSeadriveDrive()
292293
293294 return Task . FromResult < IEnumerable < ICloudProvider > > ( results ) ;
294295 }
296+
297+ private static Task < IEnumerable < ICloudProvider > > DetectAutodeskDrive ( )
298+ {
299+ var results = new List < ICloudProvider > ( ) ;
300+ using var AutodeskKey = Registry . LocalMachine . OpenSubKey ( @"Software\Autodesk\Desktop Connector" ) ;
301+
302+ if ( AutodeskKey is not null )
303+ {
304+ string iconPath = Path . Combine ( programFilesFolder , "Autodesk" , "Desktop Connector" , "DesktopConnector.Applications.Tray.exe" ) ;
305+ var iconFile = Win32API . ExtractSelectedIconsFromDLL ( iconPath , new List < int > ( ) { 32512 } ) . FirstOrDefault ( ) ;
306+ var mainFolder = Path . Combine ( Environment . GetFolderPath ( Environment . SpecialFolder . UserProfile ) , "DC" ) ;
307+ var autodeskFolders = Directory . GetDirectories ( mainFolder , "" , SearchOption . AllDirectories ) ;
308+
309+ foreach ( var autodeskFolder in autodeskFolders )
310+ {
311+ var folderName = Path . GetFileName ( autodeskFolder ) ;
312+ if ( folderName is not null )
313+ results . Add ( new CloudProvider ( CloudProviders . Autodesk )
314+ {
315+ Name = $ "Autodesk - { Path . GetFileName ( autodeskFolder ) } ",
316+ SyncFolder = autodeskFolder ,
317+ IconData = iconFile ? . IconData
318+ } ) ;
319+ }
320+ }
321+
322+ return Task . FromResult < IEnumerable < ICloudProvider > > ( results ) ;
323+ }
295324 }
296325}
0 commit comments