public IEnumerable <StatusDetail> GetStatusInternalGroove() { //const string hklm = "HKEY_LOCAL_MACHINE"; const string subkeyString = @"Software\Microsoft\Office"; // SkyDrive\UserSyncRoots\"; using (var key = Registry.CurrentUser.OpenSubKey(subkeyString)) { if (key == null) { yield return(new StatusDetail() { Status = ServiceStatus.OnDemandOrUnknown, ServiceType = "Groove" }); } else { if (key.SubKeyCount == 0) { yield return(new StatusDetail() { Status = ServiceStatus.OnDemandOrUnknown }); } foreach (var subkey in key.GetSubKeyNames()) { using (var userKey = key.OpenSubKey(String.Format("{0}{1}", subkey, @"\Common\Internet"))) { if (userKey != null && userKey.GetValue("LocalSyncClientDiskLocation") as String[] != null) { string[] folders = userKey.GetValue("LocalSyncClientDiskLocation") as String[]; foreach (var folder in folders) { var detail = new StatusDetail(); try { detail.UserName = WindowsIdentity.GetCurrent().Name; detail.UserSID = UserPrincipal.Current.Sid.ToString(); string[] parts = subkey.Split('!'); detail.ServiceType = String.Format("Groove{0}", parts[parts.Length - 1]); } catch (Exception ex) { detail.UserName = String.Format("Groove - {0}: {1}", ex.GetType().ToString(), ex.Message); OneDriveLib.WriteLog.WriteErrorEvent(detail.UserName); } detail.LocalPath = folder; detail.StatusString = GetStatus(detail.LocalPath).ToString(); yield return(detail); } } } } } } }
public IEnumerable <StatusDetail> GetStatusInternal() { //const string hklm = "HKEY_LOCAL_MACHINE"; const string subkeyString = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\"; // SkyDrive\UserSyncRoots\"; using (var key = Registry.LocalMachine.OpenSubKey(subkeyString)) { if (key == null) { yield return(new StatusDetail() { Status = ServiceStatus.OnDemandOrUnknown }); } else { if (key.SubKeyCount == 0) { yield return(new StatusDetail() { Status = ServiceStatus.OnDemandOrUnknown, ServiceType = "OneDrive" }); } foreach (var subkey in key.GetSubKeyNames()) { using (var userKey = key.OpenSubKey(String.Format("{0}{1}", subkey, @"\UserSyncRoots"))) { if (userKey != null) { foreach (var valueName in userKey.GetValueNames()) { var detail = new StatusDetail(); try { var id = new SecurityIdentifier(valueName); string userName = id.Translate(typeof(NTAccount)).Value; detail.UserName = userName; detail.UserSID = valueName; string[] parts = userKey.Name.Split('!'); if (parts.Length > 1) { detail.ServiceType = parts[Math.Min(2, parts.Length - 1)].Split('|')[0]; } else { detail.ServiceType = "INVALID"; } } catch (Exception ex) { detail.UserName = String.Format("{0}: {1}", ex.GetType().ToString(), ex.Message); OneDriveLib.WriteLog.WriteErrorEvent("OneDrive " + detail.UserName); } detail.LocalPath = userKey.GetValue(valueName) as string; detail.StatusString = GetStatus(detail.LocalPath).ToString(); yield return(detail); } } } } } } }