<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: windows code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Thu, 24 Jul 2008 08:28:07 GMT</pubDate>
    <description>DZone Snippets: windows code</description>
    <item>
      <title>Internet Explorer automation using win32::OLE</title>
      <link>http://snippets.dzone.com/posts/show/4586</link>
      <description>// Sample code used for one of my client&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/perl -w&lt;br /&gt;&lt;br /&gt;use strict;&lt;br /&gt;use Data::Dumper;&lt;br /&gt;use Win32::OLE qw( EVENTS );&lt;br /&gt;&lt;br /&gt;my ($day, $mon, $year, $hour, $min, $sec) = (localtime)[3, 4, 5, 2, 1, 0];&lt;br /&gt;$mon++; # 0-based index&lt;br /&gt;$year = $year + 1900;&lt;br /&gt;my $date = sprintf ("%04i-%02i-%02i %02i\:%02i\:%02i", $year, $mon, $day, $hour, $min, $sec);&lt;br /&gt;&lt;br /&gt;my $Disconnect;&lt;br /&gt;my $Menu;&lt;br /&gt;my $TreeView;&lt;br /&gt;my $WatchDog;&lt;br /&gt;my $MenuClicked=0;&lt;br /&gt;&lt;br /&gt;my $ScenarioCompleted=0;&lt;br /&gt;&lt;br /&gt;my @TreeViewLinks=("Appareillage du B","Branchement Comptage","Branchement individuel");&lt;br /&gt;my $Previouslink=$TreeViewLinks[0];&lt;br /&gt;&lt;br /&gt;my $ie = Win32::OLE-&gt;new( 'InternetExplorer.Application' ) or die "error starting IE";&lt;br /&gt;$ie-&gt;{visible} = 1;&lt;br /&gt;&lt;br /&gt;Win32::OLE-&gt;Option( Warn =&gt; 3 );&lt;br /&gt;&lt;br /&gt;$WatchDog=time();&lt;br /&gt;Win32::OLE-&gt;WithEvents( $ie, \&amp;Event, 'DWebBrowserEvents2' );&lt;br /&gt;$ie-&gt;navigate( 'http://www.xxx.fr' );&lt;br /&gt;Win32::OLE-&gt;MessageLoop();&lt;br /&gt;unlink("noemis.err") if -f "noemis.err";&lt;br /&gt;if ( ! $ScenarioCompleted ) {&lt;br /&gt;	open( ERR , "&gt;noemis.err" ); &lt;br /&gt;	print ERR "Problem executing Noemis scenario, please check www.xxx.fr.\n" ;&lt;br /&gt;	close(ERR);&lt;br /&gt;}&lt;br /&gt;$Disconnect-&gt;Click();&lt;br /&gt;Win32::OLE-&gt;SpinMessageLoop;&lt;br /&gt;&lt;br /&gt;# Maintenance du fichier historique&lt;br /&gt;open ( STATS , "noemis.txt" );&lt;br /&gt;my @lines=&lt;STATS&gt;;&lt;br /&gt;close (STATS);&lt;br /&gt;open( STATS , "&gt;noemis.txt" ); &lt;br /&gt;for my $line (@lines) {&lt;br /&gt;	my ($datetime) = split ( /;/ , $line );&lt;br /&gt;	my ($h_year,$h_mon) = $datetime =~ /^([0-9]{4})-([0-9]{2})/;&lt;br /&gt;	print STATS $line if ($year*12+$mon) - ($h_year*12+$h_mon) &lt; 2;&lt;br /&gt;}&lt;br /&gt;print STATS join(";",$date,"Noemis Scenario",( time() - $WatchDog ))."\n";&lt;br /&gt;close( STATS );&lt;br /&gt;&lt;br /&gt;sleep 2;&lt;br /&gt;Win32::OLE-&gt;SpinMessageLoop;&lt;br /&gt;sleep 1;&lt;br /&gt;$ie-&gt;Quit();&lt;br /&gt;exit 0;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sub Event {&lt;br /&gt;	my ($Obj,$Event,@Args) = @_;&lt;br /&gt;	my $IEObject = shift @Args;&lt;br /&gt;	print " Event triggered: $Event\n";    &lt;br /&gt;&lt;br /&gt;	my ($i,$anchor);&lt;br /&gt;	my $anchors;&lt;br /&gt;    &lt;br /&gt;	# STEP 1 : Find the main menu, login to the web site, find the treeview&lt;br /&gt;	if ($Event eq "DocumentComplete") {    &lt;br /&gt;		print "URL: " . $IEObject-&gt;Document-&gt;URL . "\n";&lt;br /&gt;		if ( $IEObject-&gt;Document-&gt;URL eq "http://www.xxx.fr/ident.aspx" ) {&lt;br /&gt;			my $forms = $IEObject-&gt;Document-&gt;forms;&lt;br /&gt;			my $form = $forms-&gt;item(0);&lt;br /&gt;			if ( defined($form-&gt;elements("fldNumCli")) ) {&lt;br /&gt;				print "--------------------------------------------\n";&lt;br /&gt;				print "Found the login box, authenticating ...\n";&lt;br /&gt;				print "--------------------------------------------\n";&lt;br /&gt;			    $form-&gt;elements("fldNumCli")-&gt;{value} = "xxxx";&lt;br /&gt;			    $form-&gt;elements("fldUtil")-&gt;{value} = "xxx";&lt;br /&gt;			    $form-&gt;elements("fldPwd")-&gt;{value} = "xxx";&lt;br /&gt;		    	$form-&gt;elements("btIdent")-&gt;Click();&lt;br /&gt;	    		}&lt;br /&gt;		}&lt;br /&gt;		if ( $IEObject-&gt;Document-&gt;URL eq "http://www.xxx.fr/menu.aspx" ) {&lt;br /&gt;			print "Found the menu.\n";&lt;br /&gt;			$Menu = $IEObject-&gt;Document;&lt;br /&gt;			$anchors = $IEObject-&gt;Document-&gt;links;&lt;br /&gt;			for (my $i=0; $i &lt; $anchors-&gt;length; $i++) {&lt;br /&gt;				$anchor = $anchors-&gt;item($i);&lt;br /&gt;				print $anchor-&gt;href."\n";&lt;br /&gt;				$Disconnect = $anchor if $anchor-&gt;href eq "http://www.xxx.fr/ident.aspx?qs=deconnecter";&lt;br /&gt;			}&lt;br /&gt;	      	}	    &lt;br /&gt;		if ( $IEObject-&gt;Document-&gt;URL eq "http://www.xxx.fr/client/frameTreeview.aspx" ) {&lt;br /&gt;			print "Found the TreeView.\n";&lt;br /&gt;			$TreeView = $IEObject-&gt;Document;&lt;br /&gt;      		}		&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	# STEP 2 : Click on the Menu and TreeView links   &lt;br /&gt;	if ($Event eq "DocumentComplete") {    		&lt;br /&gt;	if ( ! $MenuClicked and defined($Menu) ) {&lt;br /&gt;		my $MenuItem = $Menu-&gt;getElementById("SM_CLIE_RECH");&lt;br /&gt;		if ( defined($MenuItem) ) { &lt;br /&gt;			print $MenuItem-&gt;ID."\n";&lt;br /&gt;			$MenuItem-&gt;Click;&lt;br /&gt;			$MenuClicked = 1;&lt;br /&gt;		}&lt;br /&gt;	}}&lt;br /&gt;&lt;br /&gt;	if ( $Event eq "CommandStateChange" or $Event eq "StatusTextChange" ) {&lt;br /&gt;		print Dumper($IEObject);&lt;br /&gt;	}&lt;br /&gt;	if ( @TreeViewLinks != 0 and &lt;br /&gt;	     defined($TreeView) and &lt;br /&gt;	     $Event eq "DocumentComplete" &lt;br /&gt;	) {&lt;br /&gt;		my $link = shift(@TreeViewLinks);&lt;br /&gt;		$anchors = $TreeView-&gt;links;&lt;br /&gt;		my $found=0;&lt;br /&gt;		print "Looking for '$link' in the TreeView ... \n";&lt;br /&gt;	        for (my $i=0; $i &lt; $anchors-&gt;length; $i++) {&lt;br /&gt;		       	$anchor = $anchors-&gt;item($i);&lt;br /&gt;	        	#print $anchor-&gt;innerHTML."\n";&lt;br /&gt;		       	if ( $anchor-&gt;innerHTML =~ /$link/ ) {&lt;br /&gt;				print "Clicking on '$link' ... \n";&lt;br /&gt;	                	$anchor-&gt;Click;&lt;br /&gt;				$found=1;&lt;br /&gt;				$Previouslink=$link;&lt;br /&gt;				last;&lt;br /&gt;			}&lt;br /&gt;	        }&lt;br /&gt;		if ( ! $found ) { &lt;br /&gt;			# Le TreeView a bugge, on reclique&lt;br /&gt;			sleep 1;&lt;br /&gt;			print "Looking for '$Previouslink' in the TreeView ... \n";&lt;br /&gt;		        for (my $i=0; $i &lt; $anchors-&gt;length; $i++) {&lt;br /&gt;			       	$anchor = $anchors-&gt;item($i);&lt;br /&gt;	        		#print $anchor-&gt;innerHTML."\n";&lt;br /&gt;		       		if ( $anchor-&gt;innerHTML =~ /$Previouslink/ ) {&lt;br /&gt;					print "Clicking on '$Previouslink' ... \n";&lt;br /&gt;	              		  	$anchor-&gt;Click;&lt;br /&gt;					last;&lt;br /&gt;				}&lt;br /&gt;		        }&lt;br /&gt;			unshift @TreeViewLinks,$link;&lt;br /&gt;		}&lt;br /&gt;	} &lt;br /&gt;   &lt;br /&gt;	# STEP 3 : Verify the list displayed &lt;br /&gt;		&lt;br /&gt;	if ($Event eq "DocumentComplete") {    &lt;br /&gt;   		if ( @TreeViewLinks == 0 and $IEObject-&gt;Document-&gt;URL =~ /listeRefPlof.aspx/ ) {&lt;br /&gt;			print "Scenario completed, exiting ...\n";&lt;br /&gt;			$ScenarioCompleted=1;&lt;br /&gt;	   		Win32::OLE-&gt;QuitMessageLoop;&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;	# Exit on errors&lt;br /&gt;	    &lt;br /&gt;	Win32::OLE-&gt;QuitMessageLoop() if $Event eq "OnQuit" or time() &gt; $WatchDog + 60;&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 28 Sep 2007 11:45:24 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4586</guid>
      <author>bouffon69 (Sylvain Le Courtois)</author>
    </item>
    <item>
      <title>ASP Page listing and making changes to AD accounts</title>
      <link>http://snippets.dzone.com/posts/show/4560</link>
      <description>// Used for automated AD account migration&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Workstation User Account migration&lt;/TITLE&gt;&lt;br /&gt;&lt;META http-equiv=Content-Type content="text/html; charset=iso-8859-1"&gt;&lt;LINK &lt;br /&gt;href="files/v2006.css" type=text/css rel=stylesheet&gt;&lt;br /&gt;&lt;BODY leftMargin=0 topMargin=30 marginwidth="0" marginheight="0"&gt;&lt;br /&gt;&lt;CENTER&gt;&lt;br /&gt;&lt;%&lt;br /&gt;' ------------------------------------------------------------------------&lt;br /&gt;Const ADS_PROPERTY_CLEAR = 1&lt;br /&gt;&lt;br /&gt;Const SOURCE_OU="ou=NT Users,ou=NT,dc=fr,dc=erm,dc=int"&lt;br /&gt;Const TARGET_OU="ou=SUPPORT SERVICES,dc=fr,dc=erm,dc=int"&lt;br /&gt;&lt;br /&gt;Const HOMES_PATH="\\frsrvfil0001\USERS\"&lt;br /&gt;Const PROFILES_PATH="\\frsrvfil0001\PROFILES\"&lt;br /&gt;&lt;br /&gt;Const ADMIN_HOMES_PATH_SOURCE="\\frsrvfil0001\U$\NT\"&lt;br /&gt;Const ADMIN_PROFILES_PATH_SOURCE="\\frsrvfil0001\P$\NT\"&lt;br /&gt;Const ADMIN_HOMES_PATH_DEST="\\frsrvfil0001\U$\"&lt;br /&gt;Const ADMIN_PROFILES_PATH_DEST="\\frsrvfil0001\P$\"&lt;br /&gt;&lt;br /&gt;Const SCRIPT_NAME="ntuser_to_xp.asp"&lt;br /&gt;&lt;br /&gt;Dim State&lt;br /&gt;State="Init"&lt;br /&gt;Dim OU, Member&lt;br /&gt; &lt;br /&gt;If Request.QueryString("login") &lt;&gt; "" Then&lt;br /&gt;		' Affichage formulaire pour modif du compte&lt;br /&gt;		State="Info"&lt;br /&gt;End If&lt;br /&gt;If Request.Form("login") &lt;&gt; "" Then&lt;br /&gt;		' On a cliqu&#233; sur OK pour valider le formulaire&lt;br /&gt;		State="Modify"&lt;br /&gt;End If&lt;br /&gt;' ------------------------------------------------------------------------&lt;br /&gt;%&gt;&lt;br /&gt;&lt;TABLE cellSpacing=0 cellPadding=1 width=500 align=center bgColor=#26333e &lt;br /&gt;border=0&gt;&lt;br /&gt;  &lt;TBODY&gt;&lt;br /&gt;  &lt;TR&gt;&lt;br /&gt;    &lt;TD&gt;&lt;br /&gt;      &lt;TABLE cellSpacing=0 cellPadding=1 width=500 align=center border=0&gt;&lt;br /&gt;        &lt;TBODY&gt;&lt;br /&gt;        &lt;TR bgColor=#f0f3f5&gt;&lt;br /&gt;          &lt;TD width=160 valign="top"&gt;&lt;IMG height=116 src="files/man_portable.jpg" &lt;br /&gt;            width=160&gt; &lt;/TD&gt;&lt;br /&gt;          &lt;TD width=302 bgColor=#e5ebef&gt;&lt;br /&gt;&lt;br /&gt;&lt;%&lt;br /&gt;	If State="Init" Then&lt;br /&gt;	'-----------------------------------------------------------------------------------&lt;br /&gt;	' Listing of the NT Users&lt;br /&gt;	'-----------------------------------------------------------------------------------&lt;br /&gt;%&gt;          &lt;br /&gt;&lt;br /&gt;            &lt;TABLE cellSpacing=4 cellPadding=4 width="100%" align=center &lt;br /&gt;            border=0&gt;&lt;br /&gt;              &lt;TBODY&gt;&lt;br /&gt;              &lt;TR&gt;&lt;br /&gt;                &lt;TD class=medium colSpan=3 height=22&gt;&lt;br /&gt;                    &lt;%&lt;br /&gt;                    'Response.Write(SOURCE_OU &amp; "&lt;BR&gt;") &lt;br /&gt;                    %&gt;&lt;br /&gt;					Please select the NT 4.0 Workstation user account to migrate&lt;br /&gt;                &lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;                &lt;br /&gt;              &lt;TR&gt;&lt;br /&gt;                &lt;TD class=td11 height=22&gt;&lt;br /&gt;                                  &lt;%&lt;br /&gt;                  Set OU = GetObject("LDAP://" &amp; SOURCE_OU)&lt;br /&gt;                  OU.Filter = Array("user")&lt;br /&gt;    	          For Each Member In OU&lt;br /&gt;    	          		' Bug with the SMS Account ??&lt;br /&gt;    	          		If Member.Name &lt;&gt; "CN=SMSService" Then &lt;br /&gt;    	          		If Member.AccountDisabled = 0 Then&lt;br /&gt;	    	                Response.Write("&lt;A HREF=""" &amp; SCRIPT_NAME &amp; "?login=" &amp; Server.URLEncode(Member.Name) &amp; """&gt;" &amp; Member.FullName &amp; "&lt;/A&gt;&lt;BR&gt;")&lt;br /&gt;	    	            End If&lt;br /&gt;	    	            End If &lt;br /&gt;            	  Next      &lt;br /&gt;                  &lt;br /&gt;                  %&gt;&lt;br /&gt;&lt;br /&gt;                &lt;/TD&gt;&lt;br /&gt;                &lt;/TR&gt;&lt;br /&gt;                &lt;br /&gt;                &lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;&lt;br /&gt;&lt;%&lt;br /&gt;End If&lt;br /&gt;%&gt;                &lt;br /&gt;                &lt;br /&gt;&lt;%&lt;br /&gt;	If State="Info" Then&lt;br /&gt;	'-----------------------------------------------------------------------------------&lt;br /&gt;	' Information page about the NT Users&lt;br /&gt;	'-----------------------------------------------------------------------------------&lt;br /&gt;%&gt;          &lt;br /&gt;			&lt;FORM method=post&gt;&lt;br /&gt;&lt;br /&gt;            &lt;TABLE cellSpacing=4 cellPadding=4 width="100%" align=center &lt;br /&gt;            border=0&gt;&lt;br /&gt;              &lt;TBODY&gt;&lt;br /&gt;              &lt;TR&gt;&lt;br /&gt;                &lt;TD class=medium colSpan=2 height=22&gt;&lt;br /&gt;                 	&lt;%&lt;br /&gt;                 	Response.Write("Windows NT 4.0 User Account Migration")&lt;br /&gt;                    %&gt;&lt;br /&gt;					&lt;br /&gt;                &lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;               &lt;br /&gt;                  &lt;%&lt;br /&gt;                  Sub TabRow(v1,v2)&lt;br /&gt;                  		Response.Write("&lt;TR class=td11 height=16&gt;&lt;TD&gt;&lt;B&gt;" &amp; v1 &amp; "&lt;/B&gt;")&lt;br /&gt;                  		Response.Write("&lt;TD&gt;" &amp; v2 &amp; "&lt;/TD&gt;")&lt;br /&gt;                  		Response.Write("&lt;/TD&gt;&lt;/TR&gt;")&lt;br /&gt;                  End Sub&lt;br /&gt;                  Set Member = GetObject("LDAP://" &amp; Request.QueryString("login") &amp; "," &amp; SOURCE_OU)&lt;br /&gt;&lt;br /&gt;                  TabRow "User Name",Member.FullName&lt;br /&gt;                  TabRow "NT Login",Member.sAMAccountName&lt;br /&gt;				  TabRow "Login Script", Member.LoginScript &amp; " (to delete)"&lt;br /&gt;				  TabRow "Profile Path", Member.Profile&lt;br /&gt;				  TabRow "New Path",PROFILES_PATH &amp; Member.sAMAccountName&lt;br /&gt;				  TabRow "Home Folder", Member.HomeDirectory&lt;br /&gt;				  TabRow "New Path",HOMES_PATH &amp; Member.sAMAccountName&lt;br /&gt;				  &lt;br /&gt;				  ' Liste des OU dans SUPPORT SERVICES&lt;br /&gt; 				  Dim OUSuppServices, Entity, BoxList&lt;br /&gt; 				  Set OUSuppServices=GetObject("LDAP://" &amp; TARGET_OU)&lt;br /&gt;				  OUSuppServices.Filter = Array("organizationalUnit")&lt;br /&gt;				  BoxList="&lt;SELECT NAME=""entity""&gt;"&lt;br /&gt;				  For Each Entity in OUSuppServices&lt;br /&gt;				  	BoxList= BoxList &amp; "&lt;OPTION VALUE=""" &amp; Entity.Name &amp; """&gt;" &amp; Mid(Entity.Name,4) &amp; "&lt;/OPTION&gt;"&lt;br /&gt;				  Next&lt;br /&gt;				  BoxList=BoxList &amp; "&lt;/SELECT&gt;"&lt;br /&gt;				  TabRow "Organizational Unit",BoxList&lt;br /&gt;                                    &lt;br /&gt;                  %&gt;&lt;br /&gt;&lt;br /&gt;                &lt;br /&gt;                &lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;                &lt;BR&gt;&lt;br /&gt;                &lt;INPUT name=login type=hidden value=&lt;% Response.Write(Member.sAMAccountName) %&gt; &gt;&lt;br /&gt;                &lt;INPUT type=image height=18 alt="GO !" width=15 src="files/submit.gif" value=login border=0 name=ok&gt;&lt;br /&gt;                &amp;nbspCliquer ici pour migrer ce compte.&lt;BR&gt;&lt;BR&gt;&lt;br /&gt;                ATTENTION, l'utilisateur ne doit pas &#234;tre connect&#233; ! &lt;br /&gt;                &lt;% Response.Write("&lt;BR&gt;&lt;BR&gt;&lt;A HREF=""" &amp; SCRIPT_NAME &amp; """&gt;" &amp; "Cliquer ICI pour annuler" &amp; "&lt;/A&gt;&lt;BR&gt;") %&gt;&lt;br /&gt;                &lt;/FORM&gt;&lt;br /&gt;&lt;br /&gt;&lt;%&lt;br /&gt;End If&lt;br /&gt;%&gt;                &lt;br /&gt;&lt;br /&gt;&lt;%&lt;br /&gt;&lt;br /&gt;	If State="Modify" Then&lt;br /&gt;	'-----------------------------------------------------------------------------------&lt;br /&gt;	' Migration of the NT Users&lt;br /&gt;	'-----------------------------------------------------------------------------------&lt;br /&gt;Sub dirMoveTree(source, dest)&lt;br /&gt;	Response.Write "Deplacement de &lt;B&gt;" &amp; source &amp; " vers " &amp; dest &amp; "&lt;/B&gt;&lt;BR&gt;"&lt;br /&gt;	Dim Folder,File,SubFolder&lt;br /&gt;	set Folder=fso.GetFolder(source)&lt;br /&gt;	For Each File In Folder.Files&lt;br /&gt;	      Response.Write File.Name &amp; " File -&gt; " &amp; dest &amp; "&lt;BR&gt;"&lt;br /&gt;	      file.move dest &amp; "\"&lt;br /&gt;	Next&lt;br /&gt;	For Each SubFolder In Folder.SubFolders&lt;br /&gt;	      Response.Write SubFolder.Name &amp; " Folder -&gt; " &amp; dest &amp; "&lt;BR&gt;"&lt;br /&gt;	      SubFolder.move dest &amp; "\"&lt;br /&gt;	Next&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;%&gt;          &lt;br /&gt;&lt;CENTER&gt;&lt;br /&gt;Windows NT 4.0 User Account Migration&lt;BR&gt;&lt;BR&gt;&lt;br /&gt;&lt;%&lt;br /&gt;&lt;br /&gt;' Modification des proprietes l'utilisateur dans AD&lt;br /&gt;Set Member = GetObject("LDAP://" &amp; Request.QueryString("login") &amp; "," &amp; SOURCE_OU)&lt;br /&gt;&lt;br /&gt;' ADS_PROPERTY_CLEAR&lt;br /&gt;Member.PutEx 1, "scriptPath", 0&lt;br /&gt;Member.SetInfo&lt;br /&gt;&lt;br /&gt;Member.Put "profilePath", PROFILES_PATH &amp; Member.sAMAccountName&lt;br /&gt;Member.Put "homeDirectory", HOMES_PATH &amp; Member.sAMAccountName&lt;br /&gt;' &lt;br /&gt;Member.SetInfo&lt;br /&gt;' &lt;br /&gt;Response.Write("Utilisateur &lt;B&gt;" &amp; Member.sAMAccountName &amp; "&lt;/B&gt; Modifi&#233; dans AD&lt;BR&gt;&lt;BR&gt;")&lt;br /&gt;&lt;br /&gt;' Deplacement dans le bon conteneur&lt;br /&gt;Set OU = GetObject("LDAP://" &amp; "OU=Users," &amp; Request.Form("entity") &amp; "," &amp; TARGET_OU)&lt;br /&gt;OU.MoveHere "LDAP://" &amp; Request.QueryString("login") &amp; "," &amp; SOURCE_OU, Request.QueryString("login")&lt;br /&gt;Response.Write("Utilisateur &lt;B&gt;" &amp; "LDAP://" &amp; Request.QueryString("login") &amp; "," &amp; SOURCE_OU &amp; "&lt;/B&gt; Deplac&#233; dans " &amp; "LDAP://" &amp; "OU=Users," &amp; Request.Form("entity") &amp; "," &amp; TARGET_OU &amp; "&lt;BR&gt;&lt;BR&gt;")&lt;br /&gt;&lt;br /&gt;DIM fso, File, Folder, SubFolder&lt;br /&gt;Set fso = CreateObject("Scripting.FileSystemObject")&lt;br /&gt;&lt;br /&gt;' Creation des repertoires cible&lt;br /&gt;&lt;br /&gt;fso.CreateFolder(ADMIN_HOMES_PATH_DEST &amp; Request.Form("login"))&lt;br /&gt;fso.CreateFolder(ADMIN_PROFILES_PATH_DEST &amp; Request.Form("login"))&lt;br /&gt;&lt;br /&gt;' Deplacement des donn&#233;es&lt;br /&gt;&lt;br /&gt;dirMoveTree ADMIN_HOMES_PATH_SOURCE &amp; Request.Form("login"),ADMIN_HOMES_PATH_DEST &amp; Request.Form("login")&lt;br /&gt;dirMoveTree ADMIN_PROFILES_PATH_SOURCE &amp; Request.Form("login"),ADMIN_PROFILES_PATH_DEST &amp; Request.Form("login")&lt;br /&gt;&lt;br /&gt;' Applications des ACLs, en arriere plan car ca peut etre long !&lt;br /&gt;Response.Write("&lt;BR&gt;Creation du script d'application des ACLs C:\Inetpub\wwwroot\techcity\xcacls_" &amp; Request.Form("login") &amp; ".cmd&lt;BR&gt;&lt;BR&gt;")&lt;br /&gt;Set server_shell = Server.CreateObject("wscript.shell")&lt;br /&gt;&lt;br /&gt;server_shell.Run "cmd /c echo echo Excecution Cacls &gt;C:\Inetpub\wwwroot\techcity\xcacls_" &amp; Request.Form("login") &amp; ".cmd 2&gt;&amp;1",,1&lt;br /&gt;server_shell.Run "cmd /c echo xcacls.exe """ &amp; ADMIN_HOMES_PATH_DEST &amp; Request.Form("login") &amp; """ /T /C /G SYSTEM:F ADMINISTRATORS:F FR-ERM\" &amp; Request.Form("login") &amp; ":C /Y &gt;&gt;C:\Inetpub\wwwroot\techcity\xcacls_" &amp; Request.Form("login") &amp; ".cmd 2&gt;&amp;1",,1&lt;br /&gt;server_shell.Run "cmd /c echo xcacls.exe """ &amp; ADMIN_PROFILES_PATH_DEST &amp; Request.Form("login") &amp; """ /T /C /G SYSTEM:F ADMINISTRATORS:F FR-ERM\" &amp; Request.Form("login") &amp; ":F /Y &gt;&gt;C:\Inetpub\wwwroot\techcity\xcacls_" &amp; Request.Form("login") &amp; ".cmd 2&gt;&amp;1",,1&lt;br /&gt;&lt;br /&gt;' server_shell.Run "C:\Inetpub\wwwroot\techcity\xcacls.cmd &gt;C:\Inetpub\wwwroot\techcity\xcacls.log 2&gt;&amp;1",,1&lt;br /&gt;Response.Write("&lt;BR&gt;Les ACLs seront appliquee dans 5 min (scheduled)...&lt;BR&gt;&lt;BR&gt;")&lt;br /&gt;Response.Write("Attendre egalement la fin de replication de AD ...&lt;BR&gt;&lt;BR&gt;")&lt;br /&gt;&lt;br /&gt;Response.Write("&lt;BR&gt;Termin&#233; !&lt;BR&gt;")&lt;br /&gt;&lt;br /&gt;%&gt;&lt;br /&gt;&lt;% Response.Write("&lt;BR&gt;&lt;BR&gt;&lt;A HREF=""" &amp; SCRIPT_NAME &amp; """&gt;" &amp; "Cliquer ICI pour quitter" &amp; "&lt;/A&gt;&lt;BR&gt;") %&gt;&lt;br /&gt;&lt;/CENTER&gt;&lt;br /&gt;&lt;%&lt;br /&gt;End If&lt;br /&gt;%&gt;                &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;              &lt;/TD&gt;&lt;/TR&gt;            &lt;br /&gt;                &lt;br /&gt;                &lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;                        &lt;br /&gt;                &lt;br /&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/CENTER&gt;&lt;/BODY&gt;&lt;/HTML&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 20 Sep 2007 07:02:54 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4560</guid>
      <author>bouffon69 (Sylvain Le Courtois)</author>
    </item>
    <item>
      <title>Simple ASP page to reset passwords</title>
      <link>http://snippets.dzone.com/posts/show/4559</link>
      <description>// This page allows to reset an AD account password.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Reinitialisation de mot de passe&lt;/TITLE&gt;&lt;br /&gt;&lt;META http-equiv=Content-Type content="text/html; charset=iso-8859-1"&gt;&lt;LINK &lt;br /&gt;href="files/v2006.css" type=text/css rel=stylesheet&gt;&lt;br /&gt;&lt;BODY leftMargin=0 topMargin=30 marginwidth="0" marginheight="0"&gt;&lt;br /&gt;&lt;FORM method=post&gt;&lt;br /&gt;&lt;CENTER&gt;&lt;br /&gt;&lt;TABLE cellSpacing=0 cellPadding=1 width=500 align=center bgColor=#26333e &lt;br /&gt;border=0&gt;&lt;br /&gt;  &lt;TBODY&gt;&lt;br /&gt;  &lt;TR&gt;&lt;br /&gt;    &lt;TD&gt;&lt;br /&gt;      &lt;TABLE cellSpacing=0 cellPadding=1 width=500 align=center border=0&gt;&lt;br /&gt;        &lt;TBODY&gt;&lt;br /&gt;        &lt;TR bgColor=#f0f3f5&gt;&lt;br /&gt;          &lt;TD width=160&gt;&lt;IMG height=116 src="files/man_portable.jpg" &lt;br /&gt;            width=160&gt; &lt;/TD&gt;&lt;br /&gt;          &lt;TD width=302 bgColor=#e5ebef&gt;&lt;br /&gt;            &lt;TABLE cellSpacing=4 cellPadding=4 width="100%" align=center &lt;br /&gt;            border=0&gt;&lt;br /&gt;              &lt;TBODY&gt;&lt;br /&gt;              &lt;TR&gt;&lt;br /&gt;                &lt;TD class=medium colSpan=3 height=22&gt;&lt;br /&gt;                &lt;%&lt;br /&gt;                If Request.Form("login") = "" Then&lt;br /&gt;                	Response.Write("&lt;B&gt;Saisir le compte &#224; reinitialiser&lt;/B&gt;")&lt;br /&gt;                Else&lt;br /&gt;                    Dim Group, Member, Domain, UserFound&lt;br /&gt;                    ' &lt;br /&gt;                    Domain ="FR-ERM"&lt;br /&gt;                    '&lt;br /&gt;                    UserFound=0&lt;br /&gt;                    &lt;br /&gt;	                Set Group = GetObject("WinNT://" &amp; Domain &amp; "/Domain Users")&lt;br /&gt;    	            For Each Member In Group.Members&lt;br /&gt;    	            	' Response.Write(Member.Name &amp; "&lt;BR&gt;")&lt;br /&gt;        	        	If UCase(Member.Name) = UCase(Request.Form("login")) Then&lt;br /&gt;        	        		UserFound=1&lt;br /&gt;        	        		If Member.AccountDisabled Then &lt;br /&gt;        	        			Response.Write(" " &amp; Request.Form("login") &amp;" est un compte desactive&lt;/B&gt;")&lt;br /&gt;        	        			Exit For&lt;br /&gt;        	        		Else&lt;br /&gt;        	        			' Essai de reinit de mot de passe&lt;br /&gt;        	        			Dim res&lt;br /&gt;        	        			res=Member.SetPassword(Request.Form("pass"))&lt;br /&gt;        	        			'Member.Put "pwdLastSet", CLng(0)&lt;br /&gt;        	        			Member.Put "PasswordExpired", 1&lt;br /&gt;								Member.SetInfo&lt;br /&gt;        	        			Response.Write("&lt;B&gt;L'utilisateur "&amp; Request.Form("login") &amp; " a chang&#233; de mot de passe !&lt;BR&gt;&lt;BR&gt;&lt;/B&gt;Il devra changer de mot de passe au prochain login.")&lt;br /&gt;        	        			Exit For&lt;br /&gt;        	        		End If&lt;br /&gt;        	        	End If &lt;br /&gt;            	    Next      &lt;br /&gt;       	        	If UserFound = 0 Then&lt;br /&gt;       	        		Response.Write(Request.Form("login") &amp;" non trouv&#233; dans le domaine "&amp; Domain)&lt;br /&gt;       	        	End If           	            	&lt;br /&gt;                	&lt;br /&gt;                End If&lt;br /&gt;                %&gt;&lt;br /&gt;              &lt;br /&gt;                &lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;              &lt;TR&gt;&lt;br /&gt;                &lt;TD class=td11 width="1%" height=22&gt;Identifiant&lt;br /&gt;               &lt;br /&gt;                &lt;/TD&gt;&lt;br /&gt;                &lt;TD class=td11 colSpan=2&gt;Nouveau mot de passe&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt;              &lt;TR&gt;&lt;br /&gt;                &lt;TD width="25%"&gt;&lt;INPUT maxLength=20 name=login&gt;&lt;br /&gt; &lt;br /&gt;                &lt;/TD&gt;&lt;br /&gt;                &lt;TD width="20%"&gt;&lt;INPUT type=password maxLength=10 size=10 &lt;br /&gt;                  name=pass&gt; &lt;/TD&gt;&lt;br /&gt;                &lt;TD&gt;&lt;INPUT type=image height=18 alt="Reset !" width=15 &lt;br /&gt;                  src="files/submit.gif" value=login border=0 name=ok&gt; &lt;br /&gt;                &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/CENTER&gt;&lt;/FORM&gt;&lt;/BODY&gt;&lt;/HTML&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 20 Sep 2007 07:01:29 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4559</guid>
      <author>bouffon69 (Sylvain Le Courtois)</author>
    </item>
  </channel>
</rss>
