public static bool IsWinIdAdmin(string acctDomain, string account, string localAdminGrp, string domainAdmiGrp) { try { var dcNames = Configuration.OrganizationSetting.DcNames; //is non-dc if (!dcNames.ToLower().IsIntersectingAfterSplitWithSeparator(MachineInfoHelper.GetMachineInfo("machinename").ToLower(), ';')) { var isInAdminGroup = LocalAccountHelper.IsInGroup(acctDomain, account, localAdminGrp); if (isInAdminGroup) { return(true); } } else//is dc { if (Configuration.OrganizationSetting.ShortDomainName == acctDomain & DomainAccountHelper.IsInGroup(Configuration.OrganizationSetting.ShortDomainName, account, "Domain Admins")) { return(true); } } return(false); } catch (Exception ex) { return(false); } }
//DesignatedRunAsAdminAccountStatus internal void RefreshDesignatedRunAsAdminAccountStatus() { try { RunningParams.DesignatedRunAsAdminAccountStatus = UniversalStatus.NotOk; var domain = ""; var account = RunningParams.DesignatedRunAsAdminAccountName; var password = RunningParams.DesignatedRunAsAdminAccountPassword; if (string.IsNullOrEmpty(account) | string.IsNullOrEmpty(password)) { return; } if (RunningParams.IsDesignatedRunAsAdminAccountDomainAcct) { new NetworkLocationService().RefreshNetworkDistance(); //? necessary if (RunningParams.NetworkDistance == NetworkDistance.Wan | RunningParams.NetworkDistance == NetworkDistance.Unknown) { return; } if (MachineInfoHelper.GetMachineInfo("domainname") != Configuration.OrganizationSetting.FullDomainName.ToLower()) { return; } domain = Configuration.OrganizationSetting.ShortDomainName; } if (!NetworkAndSystemHelper.IsWinIdAdmin(domain, account, "administrators", "Domain Admins")) { return; } if (LocalAccountHelper.IsValidAccountAndPassword(domain, account, password)) { RunningParams.DesignatedRunAsAdminAccountStatus = UniversalStatus.Ok; if (RunningParams.CurrentWinIdAsRunAsAdminAccountStatus == UniversalStatus.NotOk) { //RunningParams.CurrentRunAsAdminAccountDomain = domain; //RunningParams.CurrentRunAsAdminAccountName = account; //RunningParams.CurrentRunAsAdminAccountPassword = password; } if (RunningParams.Win10CompatibilityStatus == UniversalStatus.Ok && RunningParams.SeclogonWinServiceStatus == UniversalStatus.Ok) { RunningParams.CurrentRunAsAdminAccountDomain = domain; RunningParams.CurrentRunAsAdminAccountName = account; RunningParams.CurrentRunAsAdminAccountPassword = password; } } UpdateRunAsAdminAccountStatus(); } catch (Exception ex) { throw new ArgumentException("\n>> " + GetType().FullName + ".RefreshDesignatedRunAsAdminAccountStatus Error: " + ex.Message); } }
//##DefaultRunAsAdminAccountStatus internal void RefreshDefaultRunAsAdminAccountStatus() { try { var account = ""; var password = ""; RunningParams.DefaultRunAsAdminAccountStatus = UniversalStatus.NotOk; //domain account if (!string.IsNullOrEmpty(Configuration.OrganizationSetting.RunAsAdminDomainAccount)) { new NetworkLocationService().RefreshNetworkDistance(); //? necessary //local account check if (!string.IsNullOrEmpty(Configuration.OrganizationSetting.RunAsAdminLocalAccount)) { account = Configuration.OrganizationSetting.RunAsAdminLocalAccount; var encrptedPassword = Configuration.OrganizationSetting.RunAsAdminLocalAccountPassword; password = encrptedPassword; if (NetworkAndSystemHelper.IsWinIdAdmin("", account, "administrators", "Domain Admins")) { if (LocalAccountHelper.IsValidAccountAndPassword("", account, password)) { RunningParams.DefaultRunAsAdminAccountStatus = UniversalStatus.Ok; if (RunningParams.CurrentWinIdAsRunAsAdminAccountStatus == UniversalStatus.NotOk) { RunningParams.CurrentRunAsAdminAccountDomain = string.Empty; RunningParams.CurrentRunAsAdminAccountName = account; RunningParams.CurrentRunAsAdminAccountPassword = password; } } } return; }//local account check end //domain account check if (RunningParams.NetworkDistance != (int)NetworkDistance.Wan & RunningParams.NetworkDistance != NetworkDistance.Unknown) { if (MachineInfoHelper.GetMachineInfo("domainname") == Configuration.OrganizationSetting.FullDomainName.ToLower()) { var domain = Configuration.OrganizationSetting.ShortDomainName; account = Configuration.OrganizationSetting.RunAsAdminDomainAccount; var encrptedPassword = Configuration.OrganizationSetting.RunAsAdminDomainAccountPassword; password = encrptedPassword; if (NetworkAndSystemHelper.IsWinIdAdmin(domain, account, "administrators", "Domain Admins")) { if (LocalAccountHelper.IsValidAccountAndPassword(domain, account, password)) { RunningParams.DefaultRunAsAdminAccountStatus = UniversalStatus.Ok; if (RunningParams.CurrentWinIdAsRunAsAdminAccountStatus == UniversalStatus.NotOk) { //RunningParams.CurrentRunAsAdminAccountDomain = domain; //RunningParams.CurrentRunAsAdminAccountName = account; //RunningParams.CurrentRunAsAdminAccountPassword = password; } if (RunningParams.Win10CompatibilityStatus == UniversalStatus.Ok && RunningParams.SeclogonWinServiceStatus == UniversalStatus.Ok) { RunningParams.CurrentRunAsAdminAccountDomain = domain; RunningParams.CurrentRunAsAdminAccountName = account; RunningParams.CurrentRunAsAdminAccountPassword = password; } } } }//domain account check ends } } UpdateRunAsAdminAccountStatus(); } catch (Exception ex) { throw new ArgumentException("\n>> " + GetType().FullName + ".RefreshDefaultRunAsAdminAccountStatus Error: " + ex.Message); } }