Merci pour les réponses, pour les thread j'y ai pensé mais euh.. j'y connais absolument rien.
Merci pour ShellExecuteEx , je vais essayer voir ce que ça donne.
Au cas ou voila le code si vous avez d'autre idées :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.NetworkInformation;
using System.IO;
using System.Net;
using System.Diagnostics;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/*--------------------------------------------------------------FONCTION @IP------------------------------------------------------------*/
/*--------------------------------------------------------------------&-----------------------------------------------------------------*/
/*-------------------------------------------------------------RECUP PAR DNS------------------------------------------------------------*/
string[] GetIPaddresses(string computername)
{
string[] sAddr = null;
IPAddress[] addr = Dns.Resolve(computername).AddressList;
if (addr.Length > 0)
{
sAddr = new String[addr.Length];
for (int i = 0; i < addr.Length; i++)
sAddr[i] = addr[i].ToString();
}
return sAddr;
}
/*--------------------------------------------------------------FONCTION PING------------------------------------------------------------*/
/*--------------------------------------------------------------------&-----------------------------------------------------------------*/
/*---------------------------------------------------------------MAJ de Pref-----------------------------------------------------------*/
private static bool ProcessIP(String IP, string sFichier, string sFichier1, string sFichier2, string sFichier3)
{
if (IP.Length > 0)
{
const int iTimeout = 120;
byte[] bBuffer = new byte[32];
PingReply reply = new Ping().Send(IP, iTimeout, bBuffer);
if (reply.Status == IPStatus.Success)
{
String sName = Path.Combine(@"\" + IP, "Profiles");
if (Directory.Exists(sName))
{
string sDirect_name_dist = String.Empty;
foreach (String s in Directory.GetDirectories(sName, "*.default"))
sDirect_name_dist = s;
if (sDirect_name_dist.Length != 0)
{
File.Copy(sFichier, Path.Combine(@"\" + sDirect_name_dist, "impab-89.mab"), true);
File.Copy(sFichier1, Path.Combine(@"\" + sDirect_name_dist, "impab-90.mab"), true);
File.Copy(sFichier2, Path.Combine(@"\" + sDirect_name_dist, "impab-91.mab"), true);
File.Copy(sFichier3, Path.Combine(@"\" + sDirect_name_dist, "impab-92.mab"), true);
string sPrefs = "user_pref("ldap_2.servers.01NEUILLY_1.description","01-NEUILLY");" + Environment.NewLine +
"user_pref("ldap_2.servers.01NEUILLY_1.dirType", 2);" + Environment.NewLine +
"user_pref("ldap_2.servers.01NEUILLY_1.filename","impab-89.mab"" + ");" + Environment.NewLine +
"user_pref("ldap_2.servers.02COLMAR.description","02-COLMAR");" + Environment.NewLine +
"user_pref("ldap_2.servers.02COLMAR.dirType", 2);" + Environment.NewLine +
"user_pref("ldap_2.servers.02COLMAR.filename","impab-90.mab");" + Environment.NewLine +
"user_pref("ldap_2.servers.03-FASSETTA.description","03-FASSETTA");" + Environment.NewLine +
"user_pref("ldap_2.servers.03-FASSETTA.dirType", 2);" + Environment.NewLine +
"user_pref("ldap_2.servers.03-FASSETTA.filename","impab-91.mab"" + ");" + Environment.NewLine +
"user_pref("ldap_2.servers.10-GUK & GEMS.description","10-GUK & GEMS");" + Environment.NewLine +
"user_pref("ldap_2.servers.10-GUK & GEMS.dirType", 2);" + Environment.NewLine +
"user_pref("ldap_2.servers.10-GUK & GEMS.filename","impab-92.mab");";
StreamWriter sw = new StreamWriter(@"\" + sDirect_name_dist + @"\prefs.js", true);
sw.WriteLine(sPrefs);
sw.Close();
return true;
}
}
}
}
return false;
}
/*--------------------------------------------------------------FONCTION COUNT-----------------------------------------------------------*/
/*-------------------------------------------------------------------des----------------------------------------------------------------*/
/*---------------------------------------------------------------lignes file-----------------------------------------------------------*/
static long CountLines(string fileName)
{
char[] buffer = new char[32 * 1024]; //lit 32K char à chaque fois
System.IO.TextReader reader;
int total = 1; //tout fichier contient au moins une ligne
int read;
if (System.IO.File.Exists(fileName))
{
reader = System.IO.File.OpenText(fileName);
while ((read = reader.Read(buffer, 0, buffer.Length)) > 0)
{
for (int i = 0; i < read; i++)
{
if (buffer[i] == '\n')
{
total++;
}
}
}
//nettoyage des variables
reader.Close();
reader.Dispose();
reader = null;
}
return total;
}
/*--------------------------------------------------------------DEBUT PROGRAMME-----------------------------------------------------------*/
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Text = "";
string sUser = Environment.UserName;
string sComputer_name = Environment.MachineName;
string[] sComputer_IP = GetIPaddresses(sComputer_name);
string sListe = @"C:\listes.txt";
string sVers = Environment.OSVersion.ToString();
string sVersion = sVers.Substring(21, 1);
string sFolder = "";
//Verification du system 6 pour Vista et Seven, 5 pour XP
if (sVersion == "6")
{
sFolder = @"C:\Users" + sUser + @"\AppData\Roaming\Thunderbird\Profiles";
}
else
{
sFolder = @"C:\Documents and Settings\m.legendre\Application Data\Thunderbird\Profiles";
}
foreach (String s in Directory.GetDirectories(sFolder, "*.default"))
sFolder = s;
string Sscript = sFolder + "/prefs.js";
string test = "01NEUILLY.filename";
string test2 = "02COLMAR.filename";
string test3 = "03FASSETTA.filename";
string test4 = "10GUKGEMS.filename";
string neuilly "", colmar "", fassetta = "", guk = "";
char[] trim_cara = { '"', ')', ';'}; //permet de supprimer les caracteres listés
String[] line = File.ReadAllLines(Sscript);
long cl = CountLines(Sscript);
//Recupere la ligne recherchée
for (int i = 12; i < cl - 1; i++)
{
if (line[i].ToLower().Contains(test.ToLower()))
{
neuilly = i.ToString();
}
else if (line[i].ToLower().Contains(test2.ToLower()))
{
colmar = i.ToString();
}
else if (line[i].ToLower().Contains(test3.ToLower()))
{
fassetta = i.ToString();
}
else if (line[i].ToLower().Contains(test4.ToLower()))
{
guk = i.ToString();
}
}
//Recupère le mot recherché dans la ligne
neuilly = line[Convert.ToInt32(neuilly)].Substring(48).Trim(trim_cara).ToString();
colmar = line[Convert.ToInt32(colmar)].Substring(47).Trim(trim_cara);
fassetta = line[Convert.ToInt32(fassetta)].Substring(49).Trim(trim_cara);
guk = line[Convert.ToInt32(guk)].Substring(48).Trim(trim_cara);
string sFichier = Path.Combine(sFolder, neuilly);
string sFichier1 = Path.Combine(sFolder, colmar);
string sFichier2 = Path.Combine(sFolder, fassetta);
string sFichier3 = Path.Combine(sFolder, guk);
if (File.Exists(sFichier) && File.Exists(sFichier1) && File.Exists(sFichier2) && File.Exists(sFichier3))
{
second:
if (File.Exists(sListe))
{
String[] IPs = File.ReadAllLines(sListe);
if (IPs.Length > 0 && IPs[0] != "5")
{
richTextBox1.Text += "Lecture du Fichier Liste \nsuppression des @ :" + Environment.NewLine;
string value = Convert.ToString(Convert.ToInt32(IPs[0]) + 1);
File.Delete(sListe);
StreamWriter sw = new StreamWriter(sListe, false);
sw.WriteLine(value);
sw.Close();
for (int i = 1; i < IPs.Length; i++)
{
StreamWriter sw2 = new StreamWriter(sListe, true);
sw2.WriteLine(IPs[i]);
sw2.Close();
progressBar1.Minimum = 0;
progressBar1.Maximum = IPs.Length;
progressBar1.Value = i;
while (progressBar1.Value < progressBar1.Maximum)
{
progressBar1.Value++;
}
if (ProcessIP(IPs[i], sFichier, sFichier1, sFichier2, sFichier3))
{
richTextBox1.Text += "-" + IPs[i] + Environment.NewLine;
IPs[i] = String.Empty;
// Ecriture du tableau d'IP en supprimant les lignes vides
File.WriteAllLines(sListe, IPs.Where(s => s.Trim() != string.Empty).ToArray());
}
}
}
else
{
File.Delete(@"C:\listes.txt");
goto second;
}
}
else
{
ProcessStartInfo info = new ProcessStartInfo("at.exe", "/DELETE /YES");
Process proc = Process.Start(info);
proc.Close();
ProcessStartInfo infos = new ProcessStartInfo("at.exe", "12:35 /EVERY:l "C:/ThundUp.exe"");
Process procs = Process.Start(infos);
procs.Close();
StreamWriter count = new StreamWriter(sListe, false);
count.WriteLine("0");
count.Close();
for (int i = 3; i < 250; i++)
{
progressBar1.Minimum = 3;
progressBar1.Maximum = 250;
progressBar1.Value = i;
while (progressBar1.Value < progressBar1.Maximum)
{
progressBar1.Value++;
}
//Exclue l'@IP de la machine qui lance la MAJ
if (i == Convert.ToInt32(sComputer_IP[0].Substring(10)))
{
i++;
}
//cree ip et lance requete icmp
string IP = "192.168.2." + i;
if (!ProcessIP(IP, sFichier, sFichier1, sFichier2, sFichier3))
{// Le Ping n'a pas fonctionné, on ajoute l'IP a la liste
StreamWriter sw = new StreamWriter(sListe, true);
sw.WriteLine(IP);
sw.Close();
richTextBox1.Text += IP + " N'a pas Fonctionné" + Environment.NewLine + "Ajout de cette adresse dans le fichier listes" + Environment.NewLine + Environment.NewLine;
}
else
{
//Ferme de force Thunderbird
ProcessStartInfo kill = new ProcessStartInfo(@"C:\Windows\pstool\pskill.exe");
kill.FileName = @"C:\Windows\pstool\pskill.exe";
kill.Arguments = "\\\" + IP + " -u Administrateur -p Ca2ourg thunderbird.exe";
kill.CreateNoWindow = true;
Process s_kill = Process.Start(kill);
StreamWriter add = new StreamWriter("C:\\listes_ok.txt", true);
add.WriteLine(IP);
add.Close();
richTextBox1.Text += "Copie Ok pour " + IP + Environment.NewLine + Environment.NewLine;
}
}
}
}
}
private void button2_Click(object sender, EventArgs e)
{
File.Delete(@"C:\listes.txt");
File.Delete(@"C:\listes_ok.txt");
richTextBox1.Text = "Fichier Supprimer \nRelancer la mise à jour";
button1_Click(1,e);
}
private void button3_Click(object sender, EventArgs e)
{
string path = @"C:\listes_ok.txt";
if (File.Exists(path))
{
ProcessStartInfo open = new ProcessStartInfo(path);
Process Open = Process.Start(open);
Open.Close();
}
else
{
richTextBox1.Text = "";
richTextBox1.Text = "La liste n'existe pas";
}
}
}
}
Merci
-La constante d'une personne est la variable d'une autre.
-Il y a deux manières d'écrire des programmes sans erreurs. Seule la troisième marche
-Tout programme a (au moins) deux buts : celui pour lequel il a été écrit, et celui pour lequel il ne l'a pas