<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Active Directory and LDAP</title><link>http://forums.asp.net/93.aspx</link><description>Questions about Active Directory and other directory stores, such as those accessible via LDAP, are appropriate here.</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/2259886.aspx</link><pubDate>Thu, 27 Mar 2008 17:16:54 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2259886</guid><dc:creator>walalm</dc:creator><author>walalm</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2259886.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=2259886</wfw:commentRss><description>&lt;p&gt;Dunn, first, thanks for your acclaration.&lt;/p&gt;
&lt;p&gt;I have a Question for you. Im programming in an Windows XP Machine, and using ASP.net, im connecting to a server that uses Windows Server 2003,&amp;nbsp;I retrieve the list of users in our AD fine, but when im trying to change a password, or my own password, i can&amp;#39;t because the same error all we have:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span id="lblErrorPass" style="FONT-WEIGHT:bold;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Verdana;"&gt;Unknown name. (Exception from HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;, what do i have to do?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Thanks in advance.&lt;/p&gt;</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/2225977.aspx</link><pubDate>Tue, 11 Mar 2008 16:20:53 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2225977</guid><dc:creator>DaleP</dc:creator><author>DaleP</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2225977.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=2225977</wfw:commentRss><description>&lt;p&gt;Well, I&amp;#39;m guessing that it didn&amp;#39;t work because you need to use &amp;quot;...NULL, NULL, AuthenticationTypes.None&amp;quot;. You are using C# and my example was in VB.&lt;/p&gt;
&lt;p&gt;Here is my code though (in VB):&lt;/p&gt;&lt;font size="2"&gt;Parent = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; DirectoryEntry(LDAP &amp;amp; OUPath, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Nothing&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Nothing&lt;/font&gt;&lt;font size="2"&gt;, AuthenticationTypes.None)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;This will be used to hold the CN value for the new user.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; user = Parent.Children.Add(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;CN=&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; UserID, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;user&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Assign the SAM and UPN for the user&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;user.Properties(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;sAMAccountName&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;).Value = UserID&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;user.Properties(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;userPrincipalName&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;).Value = UserID&lt;/p&gt;user.Properties(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;displayName&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;).value = (FName &amp;amp; &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot; &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; LName &amp;amp; &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot; &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; Moniker)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;user.properties(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;company&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;).value = Session(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;OriginalBusinessUnit&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/p&gt;
&lt;p&gt;user.properties(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;homeDrive&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;).value = &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;x:&amp;quot;&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;user.properties(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;homeDirectory&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;).value = UserPrivatePath&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;user.properties(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;info&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;).value = UserNotes&lt;/p&gt;
&lt;p&gt;user.properties(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;userPrincipalName&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;).value = UserID &amp;amp; &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;@domain.com&amp;quot;&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;user.properties(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;extensionAttribute9&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;).value = UserNotes &amp;amp; &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot; &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; DateTime.Now&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Commit the new user to the AD OU&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;user.CommitChanges()&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Sets the new user account variables such as name and password&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;user.Invoke(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;SetPassword&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Object&lt;/font&gt;&lt;font size="2"&gt;() {Password})&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;user.Invoke(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;Put&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;givenName&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, FName)&lt;/p&gt;user.Invoke(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;Put&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;sn&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, LName)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Set the Terminal Services profile path and home directory&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;user.InvokeSet(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;TerminalServicesProfilePath&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Object&lt;/font&gt;&lt;font size="2"&gt;() {&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;path to TSProfile&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; UserID})&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;user.InvokeSet(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;TerminalServicesHomeDirectory&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Object&lt;/font&gt;&lt;font size="2"&gt;() {path to user folder}&lt;/font&gt;&lt;font size="2"&gt;)&lt;/p&gt;user.InvokeSet(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;TerminalServicesHomeDrive&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Object&lt;/font&gt;&lt;font size="2"&gt;() {&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;x:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;})&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;user.invokeset(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;pwdlastset&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;0&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Commit the changes to the account&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;user.CommitChanges()&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Enable the account in the AD so it can be used&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;font size="2"&gt; Session(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;cbAccountEnable&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;) = 1 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; flags &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer&lt;/font&gt;&lt;font size="2"&gt; = user.Properties(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;userAccountControl&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;).Value&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;user.Properties(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;userAccountControl&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;).Value = flags &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;And&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Not&lt;/font&gt;&lt;font size="2"&gt; ADS_UF_ACCOUNTDISABLE&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;user.CommitChanges()&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Hope that helps...&lt;/p&gt;&lt;/font&gt;</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/2222902.aspx</link><pubDate>Mon, 10 Mar 2008 13:38:22 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2222902</guid><dc:creator>richminichiello</dc:creator><author>richminichiello</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2222902.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=2222902</wfw:commentRss><description>&lt;p&gt;DaleP,&lt;/p&gt;
&lt;p&gt;This seems to contradict some of the code written on page 2 (on or about line 23 where extra line breaks were removed) where it states that the Authentication Type is secure:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;string ldapPath = &amp;quot;&lt;/em&gt;&lt;a&gt;&lt;em&gt;LDAP://dc=domain,dc=com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;quot;;&lt;br /&gt;DirectoryEntry de = new DirectoryEntry(ldapPath);&lt;br /&gt;de.AuthenticationType = AuthenticationTypes.Secure;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Either way, I did change the code to:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;string ldapPath = &amp;quot;&lt;/em&gt;&lt;a&gt;&lt;em&gt;LDAP://dc=domain,dc=com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;quot;;&lt;br /&gt;DirectoryEntry de = new DirectoryEntry(ldapPath, Nothing, Nothing, AuthenticationTypes.None);&lt;br /&gt;//de.AuthenticationType = AuthenticationTypes.Secure;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;and it returned a Compilation Error:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Description: &lt;/strong&gt;An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Compiler Error Message: &lt;/b&gt;CS0103: The name &amp;#39;Nothing&amp;#39; does not exist in the current context&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Source Error:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
&lt;table class="" bgcolor="#ffffcc"&gt;

&lt;tr&gt;
&lt;td class=""&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=""&gt;&lt;code&gt;&lt;pre&gt;Line 21: 			i.ImpersonateUser(username, domain, password);
Line 22: 			string ldapPath = &lt;a&gt;LDAP://dc=domain,dc=com&lt;/a&gt;;
&lt;font color="red"&gt;Line 23: 			DirectoryEntry de = new DirectoryEntry(ldapPath,Nothing, Nothing, AuthenticationTypes.None);
&lt;/font&gt;&lt;/pre&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Would it be possible for you to reply with the full source of the code you used to make your page?&amp;nbsp; &lt;/p&gt;
&lt;p&gt;I truly appreciate any help you can give.&lt;/p&gt;</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/2217414.aspx</link><pubDate>Thu, 06 Mar 2008 21:32:41 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2217414</guid><dc:creator>DaleP</dc:creator><author>DaleP</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2217414.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=2217414</wfw:commentRss><description>&lt;p&gt;Well, if I understand what you&amp;#39;re asking, I got around this by:&lt;/p&gt;
&lt;p&gt;1: Setting up a new IIS Application Pool that runs under the &lt;strong&gt;domain administrator&lt;/strong&gt; account&lt;/p&gt;
&lt;p&gt;2: I setup my DirectoryEntry string like this -&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;font size="2"&gt;Parent = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; DirectoryEntry(&amp;quot;&lt;a&gt;LDAP://&lt;font color="#800000" size="2"&gt;OU=Users,DC={domain},DC=com&lt;/a&gt;&amp;quot;&lt;/font&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Nothing&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Nothing&lt;/font&gt;&lt;font size="2"&gt;, AuthenticationTypes.None)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;3: Upload the site to the directory your website is located in (running under the application pool with admin privs) and run it.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;This allows the logged in user to perform specific tasks, like resetting a password, without granting them access to the A.D. or impersonating another account through code.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Also the AuthenticationTypes should be set to &amp;quot;None&amp;quot; since your not passing any credentials. If you don&amp;#39;t specify any it defaults to &amp;quot;Secure&amp;quot; which caused trouble for me for a couple days. Why it caused me trouble I guess I&amp;#39;m not sure, but telling it &amp;quot;None&amp;quot; resolved it.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Hope this is what you are looking for.&lt;/p&gt;&lt;/font&gt;</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/2217363.aspx</link><pubDate>Thu, 06 Mar 2008 21:10:04 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2217363</guid><dc:creator>richminichiello</dc:creator><author>richminichiello</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2217363.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=2217363</wfw:commentRss><description>&lt;p&gt;I guess the error would be needed...&lt;img src="http://forums.asp.net/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Description: &lt;/strong&gt;An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Exception Details: &lt;/b&gt;System.Runtime.InteropServices.COMException: An operations error occurred.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Source Error:&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;
&lt;table class="" bgcolor="#ffffcc"&gt;

&lt;tr&gt;
&lt;td class=""&gt;&lt;code&gt;&lt;pre&gt;Line 26: 			DirectorySearcher ds = new DirectorySearcher(de,qry);
Line 27: 				
&lt;font color="red"&gt;Line 28: 			SearchResult sr = ds.FindOne();
&lt;/font&gt;Line 29: 			if(sr==null)
Line 30: 			{&lt;/pre&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/2217361.aspx</link><pubDate>Thu, 06 Mar 2008 21:09:03 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2217361</guid><dc:creator>richminichiello</dc:creator><author>richminichiello</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2217361.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=2217361</wfw:commentRss><description>&lt;p&gt;I&amp;#39;m not sure if this is a dead post or not.&amp;nbsp; It seems like a while since there has been any activity.&amp;nbsp; I do, however, need some help.&amp;nbsp; I work for a school that has over 230 thousand users...each with their own username and password.&amp;nbsp; What I am trying to do is make a website that I could distribute to the teachers so that they could reset their student&amp;#39;s passwords if needed.&amp;nbsp; Right now, even with hundreds of local admins at the sites, they are having a real hard time keeping up with the password reset requests.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;I have read through this post and so far, the only part that is making any sense to me (being that I am a novice with ASP) is the post from Dunnry on the second page :&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;pre class="coloredcode"&gt;&lt;span class="st"&gt;&amp;quot;System.DirectoryServices, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot;&lt;/span&gt;%&amp;gt;
&lt;span class="st"&gt;&amp;quot;Dunnry.Security&amp;quot;&lt;/span&gt; %&amp;gt;
&lt;span class="st"&gt;&amp;quot;System.DirectoryServices&amp;quot;&lt;/span&gt; %&amp;gt;
&lt;span class="st"&gt;&amp;quot;Dunnry.Security&amp;quot;&lt;/span&gt; %&amp;gt;

	&amp;quot;C#&amp;quot;&lt;/span&gt; runat=&lt;span class="st"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;
		&lt;span class="kwd"&gt;void&lt;/span&gt; Page_Load(Object Src, EventArgs E ) { 
			&lt;span class="kwd"&gt;if&lt;/span&gt;(!Page.IsPostBack)
			{
			}
		} 
		&lt;span class="kwd"&gt;private void&lt;/span&gt; ResetPassword(&lt;span class="kwd"&gt;object&lt;/span&gt; sender, EventArgs e)
		{	
			
			&lt;span class="cmt"&gt;//for impersonation&lt;/span&gt;
			&lt;span class="kwd"&gt;string&lt;/span&gt; username = &lt;span class="st"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;
			&lt;span class="kwd"&gt;string&lt;/span&gt; password = &lt;span class="st"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;
			&lt;span class="kwd"&gt;string&lt;/span&gt; domain = &lt;span class="st"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;
			
			Impersonate i = &lt;span class="kwd"&gt;new&lt;/span&gt; Impersonate(LogonProvider.LOGON32_PROVIDER_WINNT50);
			i.ImpersonateUser(username, domain, password);
			&lt;span class="kwd"&gt;string&lt;/span&gt; ldapPath = &lt;span class="st"&gt;&amp;quot;LDAP:&lt;span class="cmt"&gt;//dc=domain,dc=com&amp;quot;;&lt;/span&gt;
			DirectoryEntry de = new DirectoryEntry(ldapPath);
			de.AuthenticationType = AuthenticationTypes.Secure;
			string qry = String.Format(&amp;quot;&lt;/span&gt;(&amp;amp;(objectClass=user)(objectCategory=person)(sAMAccountName={0}))&lt;span class="st"&gt;&amp;quot;, txtUsername.Text);
			DirectorySearcher ds = new DirectorySearcher(de,qry);
				
			SearchResult sr = ds.FindOne();
			if(sr==null)
			{
				lblMessage.Text = &amp;quot;&lt;/span&gt;User not found&lt;span class="st"&gt;&amp;quot;;
				return;
			}
			try
			{	
				DirectoryEntry user = sr.GetDirectoryEntry();
				user.AuthenticationType = AuthenticationTypes.Secure;
				user.Invoke(&amp;quot;&lt;/span&gt;SetPassword&lt;span class="st"&gt;&amp;quot;, new object[]{txtPassword.Text});
				
				lblMessage.Text = &amp;quot;&lt;/span&gt;Success &lt;br /&gt;&lt;span class="st"&gt;&amp;quot;;
			}
			catch(Exception ex)
			{
				&lt;span class="cmt"&gt;//throw ex;&lt;/span&gt;
				lblMessage.Text = &amp;quot;&lt;/span&gt;Failure: &lt;span class="st"&gt;&amp;quot; + ex.Message;
				if(ex.InnerException != null)
					lblMessage.Text += &amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="st"&gt;&amp;quot; + ex.InnerException.Message;
			}
			finally
			{
				de.Close();
				i.UndoImpersonation();
			}
		}
	&amp;lt;/script&amp;gt;
	&amp;lt;body&amp;gt;
		&amp;lt;form runat=&amp;quot;&lt;/span&gt;server&lt;span class="st"&gt;&amp;quot;&amp;amp;gt;
			UserName: &amp;lt;asp:textbox id=&amp;quot;&lt;/span&gt;txtUsername&lt;span class="st"&gt;&amp;quot; runat=&amp;quot;&lt;/span&gt;server&lt;span class="st"&gt;&amp;quot;/&amp;gt;&amp;lt;br&amp;gt;
			New Password: &amp;lt;asp:textbox id=&amp;quot;&lt;/span&gt;txtPassword&lt;span class="st"&gt;&amp;quot; runat=&amp;quot;&lt;/span&gt;server&lt;span class="st"&gt;&amp;quot;/&amp;gt;&amp;lt;br&amp;gt;
			&amp;lt;asp:button id=&amp;quot;&lt;/span&gt;btnReset&lt;span class="st"&gt;&amp;quot; runat=&amp;quot;&lt;/span&gt;server&lt;span class="st"&gt;&amp;quot; Text=&amp;quot;&lt;/span&gt;Reset&lt;span class="st"&gt;&amp;quot; OnClick=&amp;quot;&lt;/span&gt;ResetPassword&lt;span class="st"&gt;&amp;quot; /&amp;gt;&amp;lt;br&amp;gt;
			&amp;lt;asp:label id=&amp;quot;&lt;/span&gt;lblMessage&lt;span class="st"&gt;&amp;quot; runat=&amp;quot;&lt;/span&gt;server&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;
			I am running &lt;span class="kwd"&gt;as&lt;/span&gt;: &lt;br /&gt;
			My process &lt;span class="kwd"&gt;is&lt;/span&gt; running &lt;span class="kwd"&gt;as&lt;/span&gt;: 
		
	

&lt;/pre&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Well, I did exactly what the instrutions said, and I know that this is not a recommended solution (due to the aspnet user having an &amp;#39;Act as part of the operating system right&amp;#39;). I can only get so far, though. When I put in a username and new password, I get an error when I hit the &amp;#39;Reset&amp;#39; button: &lt;/p&gt;&lt;/pre&gt;</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/1639837.aspx</link><pubDate>Tue, 27 Mar 2007 21:30:39 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1639837</guid><dc:creator>DaleP</dc:creator><author>DaleP</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1639837.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=1639837</wfw:commentRss><description>&lt;p&gt;New question to an old post; Can you describe whats happening in this line of code:&lt;/p&gt;&lt;p&gt;----------------------------------------------------------------------------------------------------------------&lt;/p&gt;&lt;p&gt;'Enable account &lt;/p&gt;&lt;pre&gt;Const ADS_UF_ACCOUNTDISABLE As Integer = &amp;amp;H2 &lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Dim flags As Integer = user.Properties("userAccountControl").Value &lt;br /&gt;user.Properties("userAccountControl").Value = flags And Not ADS_UF_ACCOUNTDISABLE &lt;br /&gt;user.CommitChanges() &lt;br /&gt;-------------------------------------------------------------------------------------------------------------------&lt;/p&gt;&lt;p&gt;I've been reading in chapter 10 of your book "The .NET Developers Guide to Directory Services User Account Management" on this and I think I need a little instruction on it. I am using it, it works but I just don't understand why or how it works.&lt;/p&gt;&lt;p&gt;Thanks!&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/1382586.aspx</link><pubDate>Mon, 28 Aug 2006 13:50:51 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1382586</guid><dc:creator>Hoff</dc:creator><author>Hoff</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1382586.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=1382586</wfw:commentRss><description>&lt;p&gt;Hi! I&amp;#39;m trying to let helpdesk users reset users password in the AD using a web application. I get a logon dialog to the server that the IIS is running and the web application is on. I have no idea why?. According to my application the impersonation seems to work fine, but it still wants me to login. The error occurs here:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserEntryChange = result.GetDirectoryEntry()&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserEntryChange.Invoke(&amp;quot;setpassword&amp;quot;, &amp;quot;p@ssw0rd&amp;quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblDebug.Text = &amp;quot;The password has been changed&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserEntryChange.CommitChanges()&lt;/p&gt;&lt;p&gt;Any ideas what is wrong?&lt;/p&gt;&lt;p&gt;I&amp;#39;m using IIS6 and Win 2k3 server. I know that this solution is not secure but I just want it to work now. Is there a better way to let help desk users reset users password in the AD?. Really would be thankfull for all help I can get. I&amp;#39;m stuck right now:/&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Best regards&lt;/p&gt;&lt;p&gt;hoff&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Imports System&lt;br /&gt;Imports System.DirectoryServices&lt;br /&gt;Imports System.Web.Caching&lt;br /&gt;Imports System.Security&lt;br /&gt;Imports System.Security.Principal&lt;br /&gt;&lt;br /&gt;Partial Class _Default&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Inherits System.Web.UI.Page&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim LOGON32_LOGON_INTERACTIVE As Integer = 2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim LOGON32_PROVIDER_DEFAULT As Integer = 0&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim impersonationContext As WindowsImpersonationContext&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Declare Function LogonUserA Lib &amp;quot;advapi32.dll&amp;quot; (ByVal lpszUsername As String, _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ByVal lpszDomain As String, _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ByVal lpszPassword As String, _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ByVal dwLogonType As Integer, _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ByVal dwLogonProvider As Integer, _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ByRef phToken As IntPtr) As Integer&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Declare Auto Function DuplicateToken Lib &amp;quot;advapi32.dll&amp;quot; ( _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ByVal ExistingTokenHandle As IntPtr, _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ByVal ImpersonationLevel As Integer, _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ByRef DuplicateTokenHandle As IntPtr) As Integer&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Declare Auto Function RevertToSelf Lib &amp;quot;advapi32.dll&amp;quot; () As Long&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Declare Auto Function CloseHandle Lib &amp;quot;kernel32.dll&amp;quot; (ByVal handle As IntPtr) As Long&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Sub Page_Load(ByVal s As Object, ByVal e As EventArgs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub Run(ByVal userName As String, ByVal password As String)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim _userName, _password As String&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _userName = userName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _password = password&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If impersonateValidUser(_userName, &amp;quot;hoff.test.se&amp;quot;, _password) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblAfter.Text = WindowsIdentity.GetCurrent().Name&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39; Insert your code that runs under the security context of a specific user here.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; undoImpersonation()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Function impersonateValidUser(ByVal userName As String, _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ByVal domain As String, ByVal password As String) As Boolean&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim tempWindowsIdentity As WindowsIdentity&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim token As IntPtr = IntPtr.Zero&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim tokenDuplicate As IntPtr = IntPtr.Zero&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; impersonateValidUser = False&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If RevertToSelf() Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, token) &amp;lt;&amp;gt; 0 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If DuplicateToken(token, 2, tokenDuplicate) &amp;lt;&amp;gt; 0 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempWindowsIdentity = New WindowsIdentity(tokenDuplicate)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; impersonationContext = tempWindowsIdentity.Impersonate()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not impersonationContext Is Nothing Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; impersonateValidUser = True&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not tokenDuplicate.Equals(IntPtr.Zero) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(tokenDuplicate)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not token.Equals(IntPtr.Zero) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(token)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub undoImpersonation()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; impersonationContext.Undo()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblAfterImp.Text = WindowsIdentity.GetCurrent().Name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim UserEntry As New DirectoryEntry&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim AuthUser, AuthPass, Domain As String&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthUser = txtUsername.Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthPass = txtPassword.Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Domain = txtDomain.Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cache(&amp;quot;UserName&amp;quot;) = AuthUser&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cache(&amp;quot;UserPsw&amp;quot;) = AuthPass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim oOU As New System.DirectoryServices.DirectoryEntry(&amp;quot;LDAP://hoff.test.se&amp;quot;, AuthUser, AuthPass, AuthenticationTypes.Secure)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserEntry = searchUser2(oOU)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protected Sub btnChangePsw_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnChangePsw.Click&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim UserID, UserPassword As String&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserID = Cache.Get(&amp;quot;UserName&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserPassword = Cache.Get(&amp;quot;UserPsw&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblBeforeImp.Text = WindowsIdentity.GetCurrent().Name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;Impersonate...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If impersonateValidUser(UserID, &amp;quot;hoff.test.se&amp;quot;, UserPassword) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim oOUChange As New System.DirectoryServices.DirectoryEntry(&amp;quot;LDAP://hoff.test.se&amp;quot;, UserID, UserPassword, AuthenticationTypes.Secure)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ChangeUserPsw(oOUChange)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblDebug.Text = &amp;quot;Impersonation failed&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; undoImpersonation()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Function searchUser2(ByVal myEntry As System.DirectoryServices.DirectoryEntry)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstResults.Items.Clear()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblDebug.Text = &amp;quot;&amp;quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim mySearch As New System.DirectoryServices.DirectorySearcher(myEntry)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim UserEntrySearch As New DirectoryEntry&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblDebug.Text = txtSearch.Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mySearch.Filter = &amp;quot;(SAMAccountName=&amp;quot; &amp;amp; txtSearch.Text &amp;amp; &amp;quot;)&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mySearch.PropertiesToLoad.Add(&amp;quot;cn&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mySearch.PropertiesToLoad.Add(&amp;quot;sAMAccountName&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mySearch.PropertiesToLoad.Add(&amp;quot;description&amp;quot;)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;search results&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim result As System.DirectoryServices.SearchResult&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each result In mySearch.FindAll()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If result.Properties.Count &amp;gt; 0 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstResults.Items.Add(result.Properties(&amp;quot;cn&amp;quot;)(0))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstResults.Items.Add(result.Properties(&amp;quot;sAMAccountName&amp;quot;)(0))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstResults.Items.Add(result.Properties(&amp;quot;description&amp;quot;)(0))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstResults.Items.Add(result.Path.ToString)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserEntrySearch = result.GetDirectoryEntry()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblDebug.Text = &amp;quot;No user was found&amp;quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next result&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return UserEntrySearch&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch ex As Exception&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblDebug.Text = &amp;quot;Wrong username/password&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return Nothing&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Sub ChangeUserPsw(ByVal myEntry As System.DirectoryServices.DirectoryEntry)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim mySearch As New System.DirectoryServices.DirectorySearcher(myEntry)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim UserEntryChange As New DirectoryEntry&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;search filter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mySearch.Filter = &amp;quot;(SAMAccountName=&amp;quot; &amp;amp; txtSearch.Text &amp;amp; &amp;quot;)&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mySearch.PropertiesToLoad.Add(&amp;quot;cn&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mySearch.PropertiesToLoad.Add(&amp;quot;sAMAccountName&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mySearch.PropertiesToLoad.Add(&amp;quot;description&amp;quot;)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;the results from the search&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim result As System.DirectoryServices.SearchResult&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each result In mySearch.FindAll()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If result.Properties.Count = 0 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblDebug.Text = &amp;quot;The user was not found&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserEntryChange = result.GetDirectoryEntry()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserEntryChange.Invoke(&amp;quot;setpassword&amp;quot;, &amp;quot;p@ssw0rd&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblDebug.Text = &amp;quot;Password has been changed&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserEntryChange.CommitChanges()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserEntryChange.Close()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next result&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch ex As Exception&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Throw&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protected Sub btnReset_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnReset.Click&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtUsername.Text = &amp;quot;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtPassword.Text = &amp;quot;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtSearch.Text = &amp;quot;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblDebug.Text = &amp;quot;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstResults.Items.Clear()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;End Class&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/1349577.aspx</link><pubDate>Mon, 24 Jul 2006 13:21:35 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1349577</guid><dc:creator>dpwb</dc:creator><author>dpwb</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1349577.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=1349577</wfw:commentRss><description>&lt;p&gt;Include System.DirectoryServices into your project&lt;/p&gt;
&lt;p&gt;Above your class add&lt;/p&gt;
&lt;p&gt;using System.DirectoryServices&lt;/p&gt;
&lt;p&gt;The following should be included under your asp button&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DirectoryEntry de = new DirectoryEntry();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;de.Path = "LDAP://&lt;em&gt;ADName/&lt;/em&gt;CN=Users;DC&lt;em&gt;=controllerNameSeperatedByCommas&lt;/em&gt;";&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;de.Username = "&lt;em&gt;controllerNameSeperatedByCommas&lt;/em&gt;\&lt;em&gt;ADAdminAccount&lt;/em&gt;";&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;de.Password = "&lt;em&gt;ADAdminPassword&lt;/em&gt;";&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DirectorySearcher deSearch = new DirectorySearcher();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;deSearch.SearchRoot = de;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;deSearchFilter = "(&amp;amp;(objectClass=user)(SAMAccountName=" + txtAccount.Text + "))";&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SearchResult account = deSearch.FindOne();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DirectoryEntry user = account.GetDirectoryEntry();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;object[] oPassword = new object[] { txtNewPassword.Text};&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;object ret = user.Invoke("SetPassword", oPassword);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;user.CommitChanges();&lt;/p&gt;
&lt;p&gt;cheers&lt;/p&gt;
&lt;p&gt;dpwb&lt;/p&gt;</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/1349573.aspx</link><pubDate>Mon, 24 Jul 2006 13:17:16 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1349573</guid><dc:creator>dpwb</dc:creator><author>dpwb</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1349573.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=1349573</wfw:commentRss><description>&lt;p&gt;Include System.DirectoryServices into your project&lt;/p&gt;
&lt;p&gt;Above your class add&lt;/p&gt;
&lt;p&gt;using System.DirectoryServices&lt;/p&gt;
&lt;p&gt;The following should be included under your asp button&lt;/p&gt;
&lt;p&gt;try&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DirectoryEntry de = new DirectoryEntry();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;de.Path = "LDAP://&lt;em&gt;ADName/&lt;/em&gt;CN=Users;DC&lt;em&gt;=controllerNameSeperatedByCommas&lt;/em&gt;";&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;de.Username = "&lt;em&gt;controllerNameSeperatedByCommas&lt;/em&gt;\&lt;em&gt;ADAdminAccount&lt;/em&gt;";&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;de.Password = "&lt;em&gt;ADAdminPassword&lt;/em&gt;";&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DirectorySearcher deSearch = new DirectorySearcher();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;deSearch.SearchRoot = de;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;deSearchFilter = "(&amp;amp;(objectClass=user)(SAMAccountName=" + txtAccount.Text + "))";&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SearchResult account = deSearch.FindOne();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DirectoryEntry user = account.GetDirectoryEntry();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/1346958.aspx</link><pubDate>Thu, 20 Jul 2006 15:41:46 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1346958</guid><dc:creator>BillyBoBob</dc:creator><author>BillyBoBob</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1346958.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=1346958</wfw:commentRss><description>&lt;p&gt;Would someone be gracious enough to give me a simple path of how to put this together. I'm no developer but can tinker with things as needed. &lt;/p&gt;
&lt;p&gt;I have Microsoft Visual Web Developer and access to Visual Studio 2005. I would just like a simple form for a delegated authority in AD to reset a password for one of their subordinates. How do I use the text box fields from my aspx page for username and password to accomplish this? &lt;/p&gt;
&lt;p&gt;again, I GREATLY appreciate any help that can be given. Thanks.&lt;/p&gt;</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/1326472.aspx</link><pubDate>Tue, 27 Jun 2006 21:46:37 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1326472</guid><dc:creator>keiyia</dc:creator><author>keiyia</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1326472.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=1326472</wfw:commentRss><description>&lt;p&gt;I am new to AD programming and C#.&amp;nbsp; I am creating an application that will allow users to reset their passwords and unlock their accounts.&amp;nbsp; I know there is a good post on here for a web form but I am still getting no where.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;I got it working using WinNT but am now changing it to LDAP because of the limits WinNT puts on you.&amp;nbsp; Now I am getting a target of invocation error.&amp;nbsp; See my code below.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;(Basically I stripped everything out and started a new app using the bare minimum to try and track down the problem.&amp;nbsp; Please help.)&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;using&lt;/p&gt;&lt;/font&gt;&lt;font size=2&gt;System;&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;using&lt;/p&gt;&lt;/font&gt;&lt;font size=2&gt;System.Collections.Generic;&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;using&lt;/p&gt;&lt;/font&gt;&lt;font size=2&gt;System.ComponentModel;&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;using&lt;/p&gt;&lt;/font&gt;&lt;font size=2&gt;System.Data;&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;using&lt;/p&gt;&lt;/font&gt;&lt;font size=2&gt;System.Drawing;&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;using&lt;/p&gt;&lt;/font&gt;&lt;font size=2&gt;System.Text;&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;using&lt;/p&gt;&lt;/font&gt;&lt;font size=2&gt;System.Windows.Forms;&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;using&lt;/p&gt;&lt;/font&gt;&lt;font size=2&gt;System.DirectoryServices; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;namespace&lt;/p&gt;&lt;/font&gt;&lt;font size=2&gt;WindowsApplication1 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;partial&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;class&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#008080 size=2&gt;Form1&lt;/font&gt;&lt;font size=2&gt; : &lt;/font&gt;&lt;font color=#008080 size=2&gt;Form&lt;/font&gt;&lt;font size=2&gt; 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; Form1() 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;InitializeComponent();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; button1_Click(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, &lt;/font&gt;&lt;font color=#008080 size=2&gt;EventArgs&lt;/font&gt;&lt;font size=2&gt; e) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = &lt;/font&gt;&lt;font color=#800000 size=2&gt;"test"&lt;/font&gt;&lt;font size=2&gt;; 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008080 size=2&gt;DirectoryEntry&lt;/font&gt;&lt;font size=2&gt; entry = &lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#008080 size=2&gt;DirectoryEntry&lt;/font&gt;&lt;font size=2&gt;(&lt;/font&gt;&lt;font color=#7395c1 size=2&gt;&lt;a&gt;LDAP://server namem.domain.gov&lt;/a&gt;&lt;/font&gt;&lt;font size=2&gt;,&lt;/font&gt;&lt;font color=#800000 size=2&gt;"admin user "&lt;/font&gt;&lt;font size=2&gt;, &lt;/font&gt;&lt;font color=#800000 size=2&gt;"password"&lt;/font&gt;&lt;font size=2&gt;, &lt;/font&gt;&lt;font color=#008080 size=2&gt;AuthenticationTypes&lt;/font&gt;&lt;font size=2&gt;.Secure); 
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008080 size=2&gt;DirectorySearcher&lt;/font&gt;&lt;font size=2&gt; search = &lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#008080 size=2&gt;DirectorySearcher&lt;/font&gt;&lt;font size=2&gt;(); 
&lt;p&gt;search.Filter = &lt;/p&gt;&lt;/font&gt;&lt;font color=#008080 size=2&gt;String&lt;/font&gt;&lt;font size=2&gt;.Format(&lt;/font&gt;&lt;font color=#800000 size=2&gt;"(SAMAccountName={0})"&lt;/font&gt;&lt;font size=2&gt;, username); 
&lt;p&gt;search.PropertiesToLoad.Add(&lt;/p&gt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;"cn"&lt;/font&gt;&lt;font size=2&gt;); 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008080 size=2&gt;SearchResult&lt;/font&gt;&lt;font size=2&gt; result = search.FindOne(); 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (result != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;textBox1.Text = &lt;/p&gt;&lt;/font&gt;&lt;font color=#008080 size=2&gt;Convert&lt;/font&gt;&lt;font size=2&gt;.ToString(entry.Invoke(&lt;/font&gt;&lt;font color=#800000 size=2&gt;"Get"&lt;/font&gt;&lt;font size=2&gt;, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt;[] { &lt;/font&gt;&lt;font color=#800000 size=2&gt;"FullName"&lt;/font&gt;&lt;font size=2&gt; })); 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//statusLabel.Text = "true";&lt;/font&gt;&lt;font size=2&gt; 
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/484290.aspx</link><pubDate>Mon, 23 Feb 2004 19:56:29 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:484290</guid><dc:creator>Loxodrome</dc:creator><author>Loxodrome</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/484290.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=484290</wfw:commentRss><description>Ok .. then am i to assume that
&lt;br /&gt;

&lt;br /&gt;
.Invoke(&amp;quot;ChangePassword&amp;quot;,new object[]{strOldPassword, strNewPassword});
&lt;br /&gt;

&lt;br /&gt;
should work outside of the domain ?
&lt;br /&gt;

&lt;br /&gt;
If so, then its not working for me either..
&lt;br /&gt;

&lt;br /&gt;
I was really hoping to get rid of some of the hacks im using to set passwords in the other domain... Currently I am doing DB exports on changed password fields, SCP 'ing to the other domain, and then SSH'ing it to run the generated VBS file... &amp;lt;sigh&amp;gt; so much for the glory of C#.NET :)
&lt;br /&gt;

&lt;br /&gt;
As for SSL and the unicodePWD .. never tried SSL and I looked into setting the unicodePWD when i was trying to do this with PHP and decided that it was way to much a pain in the ass to convert the script i found to php....
&lt;br /&gt;

&lt;br /&gt;
Right now though, it seems to be erroring out on &amp;quot;There is no such object on the server&amp;quot;.. Its the same error regardless of the proccess (SetPass,ChangePass) it doesnt even get their, just tries to bind and dies when binding to the user object... but i cant find a way to properly test /where/ its failes, but an educated guess would be during bind.</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/484252.aspx</link><pubDate>Mon, 23 Feb 2004 19:30:51 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:484252</guid><dc:creator>dunnry</dc:creator><author>dunnry</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/484252.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=484252</wfw:commentRss><description>&lt;i&gt;However I /need/ to be able to reset passwords on domains outside of the one the webserver resides on. &lt;/i&gt;
&lt;br /&gt;

&lt;br /&gt;
Sorry, I don't believe SetPassword will work on any computer outside the domain.  I have not seen documentation to that effect, but speaking with others, this appears to be the situation.  Perhaps if you have SSL installed on your domain controllers and are using it, it might work - or by setting the 'unicodePwd' attribute directly.</description></item><item><title>Re: Resetting an Active Directory accounts' password...</title><link>http://forums.asp.net/thread/484229.aspx</link><pubDate>Mon, 23 Feb 2004 19:16:36 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:484229</guid><dc:creator>Loxodrome</dc:creator><author>Loxodrome</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/484229.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=93&amp;PostID=484229</wfw:commentRss><description>Ok.. im yet another one that is attempting this.
&lt;br /&gt;

&lt;br /&gt;
However I /need/ to be able to reset passwords on domains outside of the one the webserver resides on.
&lt;br /&gt;

&lt;br /&gt;
My code works fine as best as I can tell, it seems to authenticate on the target domain, it seems to try and bind to the target user object...
&lt;br /&gt;

&lt;br /&gt;
But then the throw(),catch() gives me;There is no such object on the server....
&lt;br /&gt;

&lt;br /&gt;
Ok.. that would tell me that the user that I am binding to does not exist on the target domain.. However I know it is there.. So my next assumption would be that the user that is creating the bind (an admin account from the target domain domain\\username) does not have enough credetials to browse the OU... Which then lends to the, is this then a double hop issue or lack of sec token from the origanl admin bind, and that it is the ISUR account that is attempting to connect to the target domain instead.
&lt;br /&gt;

&lt;br /&gt;
1) i am running an IIS server on a standalone (non-dc) machine in the admin domain
&lt;br /&gt;
2) OS is windows XP server 2003 patched to the gills
&lt;br /&gt;
3) The server exists on the admin domain wich can commuicate with the student domain, but not the reverse
&lt;br /&gt;
4) I am using form authentication, impersonation is enabled in my web.config
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
code is;
&lt;br /&gt;
&lt;pre&gt;
&lt;br /&gt;
public void ChangePassBtn_Click(object sender, System.EventArgs e)
&lt;br /&gt;
		{
&lt;br /&gt;
			string inPassword = txtPassword.ToString();
&lt;br /&gt;
			string inUsername = txtUsername.ToString();
&lt;br /&gt;
			string UserPath= &amp;quot;LDAP://domain:389/CN=username,CN=techs,CN=users,CN=floor,DC=domain,DC=domain,DC=domain,DC=domain&amp;quot;;
&lt;br /&gt;
			
&lt;br /&gt;
			lblSuccessFail.Text = &amp;quot;&amp;quot;;
&lt;br /&gt;

&lt;br /&gt;
			try
&lt;br /&gt;
			{
&lt;br /&gt;
				DirectoryEntry adEntry= new DirectoryEntry(UserPath,&amp;quot;domain\\admin&amp;quot;,&amp;quot;adminpass&amp;quot;,AuthenticationTypes.Secure);
&lt;br /&gt;
				adEntry.Invoke(&amp;quot;SetPassword&amp;quot;, new object[]{inPassword});
&lt;br /&gt;
				adEntry.CommitChanges();
&lt;br /&gt;
				adEntry.RefreshCache();
&lt;br /&gt;
			}
&lt;br /&gt;
			catch(Exception ex)
&lt;br /&gt;
			{
&lt;br /&gt;
				//string strCurrentID = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
&lt;br /&gt;

&lt;br /&gt;
				lblSuccessFail.Text = ex.Message.ToString();
&lt;br /&gt;
				//lblSuccessFail.Text = ex.InnerException.Message.ToString();
&lt;br /&gt;
			}
&lt;br /&gt;
		}
&lt;br /&gt;
&lt;/pre&gt;</description></item></channel></rss>