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)); }
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") }); }