Пример #1
0
        private string GetUserSID(string domain, string accountName)
        {
            var wqlGetAccountSid =
                new WQLBuilder()
                .WithWmiClass("Win32_Account")
                .AddParameter("Domain", domain)
                .AddParameter("Name", accountName)
                .Build();

            var wqlResult = WmiProvider.ExecuteWQL(wqlGetAccountSid);

            if (wqlResult.HasItems())
            {
                return(wqlResult.First().GetFieldValueAsString("SID"));
            }

            if (this.TargetDomainRole > 3)
            {
                var wqlGetDomain = "select * from Win32_NTDomain";
                var domainName   = WmiProvider.ExecuteWQL(wqlGetDomain).First().GetFieldValueAsString("DomainName");
                wqlGetAccountSid =
                    new WQLBuilder()
                    .WithWmiClass("Win32_Account")
                    .AddParameter("Domain", domainName)
                    .AddParameter("Name", accountName)
                    .Build();
                wqlResult = WmiProvider.ExecuteWQL(wqlGetAccountSid);
                if (wqlResult != null && wqlResult.Count() > 0)
                {
                    return(wqlResult.First().GetFieldValueAsString("SID"));
                }
            }

            return(string.Empty);
        }
        private bool DoesACLBelongToUser(ManagementBaseObject daclTrustee, string userTrusteeName, WmiDataProvider wmiProvider)
        {
            var winTrustee = this.getWinTrusteeFromManagementObject(daclTrustee);

            if (userTrusteeName.Equals(winTrustee.SIDString))
            {
                return(true);
            }

            string username    = this.getPropertyValueAsString(daclTrustee, "Name");
            var    wql         = new WQLBuilder().WithWmiClass("Win32_Account").AddParameter("SID", userTrusteeName).Build();
            var    accountName = wmiProvider.ExecuteWQL(wql);

            if ((accountName.Count() > 0) && accountName.First().GetValueOf("Name").ToString().Equals(username, StringComparison.InvariantCultureIgnoreCase))
            {
                return(true);
            }

            string userDomain = this.getPropertyValueAsString(daclTrustee, "Domain");

            string[] trusteeParts = userTrusteeName.Split(new string[] { @"\" }, StringSplitOptions.RemoveEmptyEntries);

            bool matchUsername   = username.Equals(trusteeParts.Last(), StringComparison.CurrentCultureIgnoreCase);
            bool matchUserDomain = userDomain.Equals(trusteeParts.First(), StringComparison.CurrentCultureIgnoreCase);

            bool isSystemAccount = (userTrusteeName.IndexOf(@"\") < 0);

            return(isSystemAccount ? matchUsername : (matchUsername && matchUserDomain));
        }
Пример #3
0
        private void CreateExpectationForGetGroupComponent(WmiDataProvider fakeWmiProvider, string groupName)
        {
            var fakeWin32GroupUserRecords = new List <WmiObject>();
            var groupComponent            = GroupComponent(FAKE_COMPUTER_NAME, groupName);
            var wqlAdministratorsUsers    = new WQLBuilder().WithWmiClass("Win32_GroupUser").AddParameter("GroupComponent", groupComponent).Build();

            Expect.Call(fakeWmiProvider.ExecuteWQL(wqlAdministratorsUsers)).Return(new[] { NewWmiObjectForFakeGroupUser("fakeUser") });
        }