Friday, February 17, 2012

Replacing lcd screen on a hp dv6 laptop

I have replaced several lcd screens on the laptops in the past replacing screen on a hp dv6 laptop however was not that straight forward.I had to dismantle the entire laptop to get to the broken lcd.Here is how you get to the lcd.

Screen : Samsung ltn156at05 5kak55804n H02






















HP Pavilion dv6-3127dx
Intel® CoreTM i3-350M processor; 4GB DDR3 memory
500GB Serial ATA hard drive; Multiformat DVD±RW/CD-RW drive with double-layer support
15.6" LED high-definition display; Intel® HD graphics
Built-in TrueVision webcam with digital microphone; 5-in-1 digital media reader
Built-in high-speed wireless LAN (802.11b/g/n); Windows 7 Premium Edition operating system

Wednesday, February 8, 2012

DirectorySearcher PropertiesToLoad Add is not working

If you have played with or is using System.DirectoryServices.ActiveDirectory, you might jump into the consclusio that "DirectorySearcher PropertiesToLoad.Add " is not working/useless/will be ignored.But that might not be the case.

Lets see a sample, this sample below tries to get the list of users with their user name, first name,last name and email.

  Private Sub LoadUsersForDomain(SelectedDomain As Domain)
        If SelectedDomain IsNot Nothing Then
            Dim sentry As DirectoryEntry = SelectedDomain.GetDirectoryEntry
            Dim Searcher As New DirectorySearcher(sentry)
            Dim srs As SearchResultCollection
            Searcher.PropertiesToLoad.Add("samaccountname")
            Searcher.PropertiesToLoad.Add("GivenName")
            Searcher.PropertiesToLoad.Add("sn")
            Searcher.PropertiesToLoad.Add("Mail")
            Searcher.Filter = "(&(objectClass=user)(objectCategory=person))"
            srs = Searcher.FindAll
            For Each Result As SearchResult In srs
                If Result IsNot Nothing Then
                    Dim fuser As New User
                    If Result.Properties("samaccountname") IsNot Nothing AndAlso Result.Properties("samaccountname").Count > 0 Then
                        fuser.UserName = (Result.Properties("samaccountname")(0).ToString())
                    End If
                    If Result.Properties("GivenName") IsNot Nothing AndAlso Result.Properties("GivenName").Count > 0 Then
                        fuser.FirstName = (Result.Properties("GivenName")(0).ToString())
                    End If
                    If Result.Properties("sn") IsNot Nothing AndAlso Result.Properties("sn").Count > 0 Then
                        fuser.LastName = (Result.Properties("sn")(0).ToString())
                    End If
                    If Result.Properties("Mail") IsNot Nothing AndAlso Result.Properties("Mail").Count > 0 Then
                        fuser.Email = (Result.Properties("Mail")(0).ToString())
                    End If
                End If
            Next
            Searcher.Dispose()
            sentry.Dispose()
        End If
    End Sub

When you debug the code, you will notice that for some search results there wont be sn givenname and mail properties in the returned list.

As samaccountname is the only required field when creating a active directory user you will get that all the time in the returned property list, but the others might be there or not depending on the  information got filled in properly or not at the time of creating the user.


----
directorysearcher propertiestoload list
directorysearcher propertiestoload add
directorysearcher clienttimeout
directorysearcher propertiestoload example
directorysearcher properties
directorysearcher filter
directorysearcher propertiestoload email
directorysearcher example

Results from Active Directory search query doesn't contain all the objects

If you are wondering why AD search didnot return all the results, the answer is there is a limit of 1000 records per search.This is the scenario we had:

We have many sub domains on the network like
a1.test.com
a2.test.com

We have users under a1.test.com like a1\user1a,a1\user2a . . . .
We have also users under a2.test.com like a2\user1,a2\user2...; also we have rda2\user3 rda2\user4....;
I dont have lot of knowledge about "AD" structure or the terminology.I dont know how the rda2\user3,user4 ended up under a2.test.com

My user is rda2\user3 and if look at the user domain using the "set" command I get a2.test.com, my user dns domain is rda2.

The problem is in my windows app I am trying to show the list of users under every domain
It shows somethings like this in the treeview
a1.test.com
a1\user1a
a1\user2a
a2.test.com
a2\user1
a2\user2
But users rda2\user3 and rda2\user4 is missing from the list.

I use the following code to get the list of users.Also I use the windows add user dialog on my machine I can see all the users if I pick "a2.test.com" as my source and hit find now.

--To get the list of users
Dim ds As New DirectorySearcher(Domain.GetCurrentDomain.GetDirectoryEntry)
ds.PropertiesToLoad.Add(samaccountname)
ds.Filter = "(&(objectClass=user)(objectCategory=person))"
For Each sr As SearchResult In ds.FindAll()
WriteLog("getUsersInGroup first for DomainName " + DomainName)
GetUser() -- code below
Next

--To get user
Searcher = New DirectorySearcher(Domain.GetCurrentDomain.GetDirectoryEntry())
Searcher.Filter = "(&(objectCategory=person)(objectClass=user)(samaccountname=" & adn.UserName & "))"
Searcher.PropertiesToLoad.Add(LDAP_PROPERTY_FIRST_NAME)
Searcher.PropertiesToLoad.Add(LDAP_PROPERTY_LAST_NAME)
Searcher.PropertiesToLoad.Add(LDAP_PROPERTY_EMAIL)

It seems like that the Domain I am trying to search has more than 1000 objects and the usersrda2\user3 and rda2\user4 are added recently so they are never returned back, I tried to use the windows built-in user search dialog and got a error "that there are more than 10000 objects", so to solve the problem

 I have added a filter textbox and is filtering the results.Now I have the users I wanted in the treeview.

Other option would be to set the DirectorySearcher.PageSize to value that is greater than 0 and less than 1000 and get all the results back, keep in mind this might be slow.