1 votes

assigner les scripts de connexion aux utilisateurs locaux

J'ai écrit un code c# qui crée un nouvel utilisateur local.

DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
DirectoryEntry group = localMachine.Children.Find("administrators", "group");
DirectoryEntry user = localMachine.Children.Find(accountName, "user");
Console.WriteLine(user.Properties.ToString());

J'ai essayé de définir le script de connexion pour cet utilisateur en faisant :

localMachine.Properties["scriptPath"].Insert(0, "logonScript.vbs"); localMachine.CommitChanges();

Mais la propriété n'existe dans aucune de ces instances (localMachine, group ou user). Je le sais parce que je l'ai fait :

System.Collections.ICollection col = localMachine.Properties.PropertyNames;
foreach (Object ob in col) { Console.WriteLine(ob.ToString()); }

Avez-vous une idée de la manière de procéder autrement ?

2voto

JPBlanc Points 26156

Le code suivant fonctionne bien sur mon Windows Seven :

DirectoryEntry deComputer = new DirectoryEntry("WinNT://MyComputer,computer");
DirectoryEntry deUser = deComputer.Children.Add("JPB", "user");
deUser.Invoke("SetPassword", new object[] { "Password" }); 
deUser.Properties["Description"].Add("user $userName");
deUser.Properties["userflags"].Add(512);
deUser.Properties["passwordExpired"].Add(1);
deUser.Properties["LoginScript"].Add("start.cmd");
deUser.CommitChanges();

Le fichier script Start.cmd est présent dans le répertoire :

%systemroot%\system32\repl\import\Scripts

Voici la même chose en PowerShell :

$computer = "MyComputer"
$userName = "jpb"
$objComputer = [ADSI]"WinNT://$computer"
$objUser = $objComputer.Create('user', $userName)
$objUser.SetPassword("Password")
$objUser.PSBase.InvokeSet('Description', "user $userName")
$objUser.PSBase.InvokeSet('LoginScript', "start.cmd")
$objUser.PSBase.InvokeSet('userflags', 512)
$objUser.PSBase.InvokeSet('passwordExpired', 1)
$objUser.SetInfo();

J'espère que cela aidera

JP

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X