OVH Cloud OVH Cloud

HELP : service socket et process

8 réponses
Avatar
Vince
Bonjour,

j'ai ecrit un service windows qui ouvre une socket et qui ecoute pour
recevoir un fichier.
Si le fichier recu est un .bat je voudrais l'executer.

Voici ce que je fais :

try
{
m_cfgFile.Close();
m_cfgFile=null;

//========================================================//
// Execute script files(.bat ONLY)
string strCmdLine;
string strDebug;
bool bRet = false;

strCmdLine = "/C " + DEFAULT_FILE_STORE_LOC + m_strCurFile;
System.Diagnostics.EventLog.WriteEntry("BorneAdmin", "CmdLine=" +
strCmdLine);

System.Diagnostics.Process proc; // Declare New Process
proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents =
false;

//proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.Arguments = strCmdLine;
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=AVANT");
bRet = proc.Start();
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=APRES"); proc.WaitForExit();
m_clientSocket.Send(BitConverter.GetBytes(m_totalClientDataSize));
}
...


D'une comme je viens de commencer le C# depuis une heure je ne sais pas
comment faire l'equivelent d'un String.Format("%d", bRet) pour au moins
voir si le proc.Start revoie true.

Ensuite avez vous une idéee pourquoi ca ne s'execute pas ????

8 réponses

Avatar
Paul Bacelar
"Vince" wrote in message
news:426a2871$0$9510$
Bonjour,

j'ai ecrit un service windows qui ouvre une socket et qui ecoute pour
recevoir un fichier.



Super, tu as demandé à ton administrateur réseaux ou à ton firewall se qu'il
en pensait.


Si le fichier recu est un .bat je voudrais l'executer.




C'est pas écris sur son front que c'est un fichier BAT, HTTP est là pour
cela


Voici ce que je fais :

try
{
m_cfgFile.Close();
m_cfgFile=null;




Il doit nous manquer un peu de code là?

//========================================================//
// Execute script files(.bat ONLY)
string strCmdLine;
string strDebug;
bool bRet = false;

strCmdLine = "/C " + DEFAULT_FILE_STORE_LOC + m_strCurFile;



m_strCurFile doit être remplit par l'opération du Saint Esprit, et le
programmeur a dû oublier de le fermer avec un appel à la méthode Close.

System.Diagnostics.EventLog.WriteEntry("BorneAdmin", "CmdLine=" +
strCmdLine);




Et Qu'estquidit l'EventLog.

System.Diagnostics.Process proc; // Declare New Process
proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents > false;

//proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "cmd.exe";



J'espère que t'es pas sous Win95/98/Me.


proc.StartInfo.Arguments = strCmdLine;
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=AVANT");



Et Qu'estquidit l'EventLog.

bRet = proc.Start();
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=APRES");


proc.WaitForExit();

Et Qu'estquidit l'EventLog.

m_clientSocket.Send(BitConverter.GetBytes(m_totalClientDataSize));
}
...


D'une comme je viens de commencer le C# depuis une heure je ne sais pas
comment faire l'equivelent d'un String.Format("%d", bRet) pour au moins



Et bRet.ToString() c'est quoi, d'après toi.

voir si le proc.Start revoie true.

Ensuite avez vous une idéee pourquoi ca ne s'execute pas ????





Je n'ai pas une idée du pourquoi mais un bon paquet de comment. Commence par
potasser un bon bouquin, car le pourquoi, il est devant l'écran et pas
derrière ;-)


--
Paul Bacelar
Avatar
Vince
Paul Bacelar a écrit :
"Vince" wrote in message
news:426a2871$0$9510$

Bonjour,

j'ai ecrit un service windows qui ouvre une socket et qui ecoute pour
recevoir un fichier.




Super, tu as demandé à ton administrateur réseaux ou à ton firewall se qu'il
en pensait.



Si le fichier recu est un .bat je voudrais l'executer.





C'est pas écris sur son front que c'est un fichier BAT, HTTP est là pour
cela



Voici ce que je fais :

try
{
m_cfgFile.Close();
m_cfgFile=null;





Il doit nous manquer un peu de code là?


//========================================================//
// Execute script files(.bat ONLY)
string strCmdLine;
string strDebug;
bool bRet = false;

strCmdLine = "/C " + DEFAULT_FILE_STORE_LOC + m_strCurFile;




m_strCurFile doit être remplit par l'opération du Saint Esprit, et le
programmeur a dû oublier de le fermer avec un appel à la méthode Close.


System.Diagnostics.EventLog.WriteEntry("BorneAdmin", "CmdLine=" +
strCmdLine);





Et Qu'estquidit l'EventLog.


System.Diagnostics.Process proc; // Declare New Process
proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents >>false;

//proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "cmd.exe";




J'espère que t'es pas sous Win95/98/Me.



proc.StartInfo.Arguments = strCmdLine;
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=AVANT");




Et Qu'estquidit l'EventLog.


bRet = proc.Start();
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=APRES");



proc.WaitForExit();

Et Qu'estquidit l'EventLog.


m_clientSocket.Send(BitConverter.GetBytes(m_totalClientDataSize));
}
...


D'une comme je viens de commencer le C# depuis une heure je ne sais pas
comment faire l'equivelent d'un String.Format("%d", bRet) pour au moins




Et bRet.ToString() c'est quoi, d'après toi.


voir si le proc.Start revoie true.

Ensuite avez vous une idéee pourquoi ca ne s'execute pas ????






Je n'ai pas une idée du pourquoi mais un bon paquet de comment. Commence par
potasser un bon bouquin, car le pourquoi, il est devant l'écran et pas
derrière ;-)




Heu t gentil je viens de commencer y'a une heure.
Si j'ai pas tout mis c'est pas pour surcharger la lecture et je pensais
que les gens qui lisaient ce newsgroup étaient un peu intelligent.
Mon admin reseau c'est moi et le firewall c'est moi qui le configure.
Windows 95/98 c'est quoi ?
Si c'est pour répondre de la sorte tu peux t'abstenir.

Si ca t'interesse voila les logs mais ca va pas t'avancer bcp :

CmdLine=/C C:ScriptBorneqsdqsd.bat
proc.Start=AVANT
proc.Start=APRES
Avatar
Vince
Vince a écrit :
Paul Bacelar a écrit :

"Vince" wrote in message
news:426a2871$0$9510$

Bonjour,

j'ai ecrit un service windows qui ouvre une socket et qui ecoute pour
recevoir un fichier.





Super, tu as demandé à ton administrateur réseaux ou à ton firewall se
qu'il
en pensait.



Si le fichier recu est un .bat je voudrais l'executer.





C'est pas écris sur son front que c'est un fichier BAT, HTTP est là pour
cela



Voici ce que je fais :

try
{
m_cfgFile.Close();
m_cfgFile=null;





Il doit nous manquer un peu de code là?


//========================================================//
// Execute script files(.bat ONLY)
string strCmdLine;
string strDebug;
bool bRet = false;

strCmdLine = "/C " + DEFAULT_FILE_STORE_LOC + m_strCurFile;





m_strCurFile doit être remplit par l'opération du Saint Esprit, et le
programmeur a dû oublier de le fermer avec un appel à la méthode Close.


System.Diagnostics.EventLog.WriteEntry("BorneAdmin", "CmdLine=" +
strCmdLine);





Et Qu'estquidit l'EventLog.


System.Diagnostics.Process proc; // Declare New Process
proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents >>> false;

//proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "cmd.exe";





J'espère que t'es pas sous Win95/98/Me.



proc.StartInfo.Arguments = strCmdLine;
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=AVANT");





Et Qu'estquidit l'EventLog.


bRet = proc.Start();
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=APRES");




proc.WaitForExit();

Et Qu'estquidit l'EventLog.


m_clientSocket.Send(BitConverter.GetBytes(m_totalClientDataSize));
}
...


D'une comme je viens de commencer le C# depuis une heure je ne sais pas
comment faire l'equivelent d'un String.Format("%d", bRet) pour au moins





Et bRet.ToString() c'est quoi, d'après toi.


voir si le proc.Start revoie true.

Ensuite avez vous une idéee pourquoi ca ne s'execute pas ????






Je n'ai pas une idée du pourquoi mais un bon paquet de comment.
Commence par
potasser un bon bouquin, car le pourquoi, il est devant l'écran et pas
derrière ;-)




Heu t gentil je viens de commencer y'a une heure.
Si j'ai pas tout mis c'est pas pour surcharger la lecture et je pensais
que les gens qui lisaient ce newsgroup étaient un peu intelligent.
Mon admin reseau c'est moi et le firewall c'est moi qui le configure.
Windows 95/98 c'est quoi ?
Si c'est pour répondre de la sorte tu peux t'abstenir.

Si ca t'interesse voila les logs mais ca va pas t'avancer bcp :

CmdLine=/C C:ScriptBorneqsdqsd.bat
proc.Start=AVANT
proc.Start=APRES









Bon je progresse.
Enfin de compte le processus est bien lancé car il apparait dans les
taches mais il ne se passe rien.
Si j'essaye de lancer notepad par exemple la fenetre n'apparait pas.
Avatar
Paul Bacelar
"Vince" wrote in message
news:426a3155$0$9520$
Paul Bacelar a écrit :
> "Vince" wrote in message
> news:426a2871$0$9510$
>
>>Bonjour,
>>
>>j'ai ecrit un service windows qui ouvre une socket et qui ecoute pour
>>recevoir un fichier.
>
>
> Super, tu as demandé à ton administrateur réseaux ou à ton firewall se


qu'il
> en pensait.
>
>
>
>>Si le fichier recu est un .bat je voudrais l'executer.
>>
>
>
> C'est pas écris sur son front que c'est un fichier BAT, HTTP est là pour
> cela
>
>
>
>>Voici ce que je fais :
>>
>>try
>>{
>>m_cfgFile.Close();
>>m_cfgFile=null;
>>
>
>
> Il doit nous manquer un peu de code là?
>
>
>>//========================================================//
>>// Execute script files(.bat ONLY)
>>string strCmdLine;
>>string strDebug;
>>bool bRet = false;
>>
>>strCmdLine = "/C " + DEFAULT_FILE_STORE_LOC + m_strCurFile;
>
>
> m_strCurFile doit être remplit par l'opération du Saint Esprit, et le
> programmeur a dû oublier de le fermer avec un appel à la méthode Close.
>
>
>>System.Diagnostics.EventLog.WriteEntry("BorneAdmin", "CmdLine=" +
>>strCmdLine);
>>
>
>
> Et Qu'estquidit l'EventLog.
>
>
>>System.Diagnostics.Process proc; // Declare New Process
>>proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents > >>false;
>>
>>//proc.StartInfo.UseShellExecute = false;
>>proc.StartInfo.FileName = "cmd.exe";
>
>
> J'espère que t'es pas sous Win95/98/Me.
>
>
>
>>proc.StartInfo.Arguments = strCmdLine;
>>System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=AVANT");
>
>
> Et Qu'estquidit l'EventLog.
>
>
>>bRet = proc.Start();
>>System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=APRES");
>
> proc.WaitForExit();
>
> Et Qu'estquidit l'EventLog.
>
>
>>m_clientSocket.Send(BitConverter.GetBytes(m_totalClientDataSize));
>>}
>>...
>>
>>
>>D'une comme je viens de commencer le C# depuis une heure je ne sais pas
>>comment faire l'equivelent d'un String.Format("%d", bRet) pour au moins
>
>
> Et bRet.ToString() c'est quoi, d'après toi.
>
>
>>voir si le proc.Start revoie true.
>>
>>Ensuite avez vous une idéee pourquoi ca ne s'execute pas ????
>>
>>
>
>
> Je n'ai pas une idée du pourquoi mais un bon paquet de comment. Commence


par
> potasser un bon bouquin, car le pourquoi, il est devant l'écran et pas
> derrière ;-)
>
>
Heu t gentil je viens de commencer y'a une heure.



En une heure, le ToString, c'est déjà acquis.

Les NG ne sont pas là pour vous faire apprendre un langage, mais pour vous
aidez sur un point précis et ardu.

Le ToString, vous avouerez que c'est un peu pousser loin l'ABSENCE de
recherche personnelle.


Si j'ai pas tout mis c'est pas pour surcharger la lecture et je pensais
que les gens qui lisaient ce newsgroup étaient un peu intelligent.
Mon admin reseau c'est moi et le firewall c'est moi qui le configure.



Si vous êtes capable de faire tous cela, vous devriez savoir que vous
contrevenez à tous les concepts de sécurité informatique et que le nombre de
choses que vous devrez contournez ne cessera de s'accroître avec la
sécurité de la plateforme.


Windows 95/98 c'est quoi ?
Si c'est pour répondre de la sorte tu peux t'abstenir.




Avec l'absence de réponse, vous auriez eut l'illusion que le monde est
injuste et que vous ne vous seriez pas mis en question.



Si ca t'interesse voila les logs mais ca va pas t'avancer bcp :

CmdLine=/C C:ScriptBorneqsdqsd.bat



/C -> chaine -> CMD -> arguments -> fenêtre -> service donc pas de
fenêtre -> KRAK

Ne jamais sous estimer la moindre information.

proc.Start=AVANT
proc.Start=APRES





Si votre programme est un "Hello Word", contentez-vous d'un programme bien
plus classique.

Si c'est le squelette d'une vraie application, arrêtez tout de suite et
re-concevez votre application pour qu'elle soit bien plus conforme au besoin
de sécurité actuelle.

Je vous le redis, le nombre de cause à l'échec de votre instanciation de CMD
est énorme, entre autre:

- Absence de périphérique accessible par les services

- CMD non conçu pour vivre dans la WorkStation de sécurité des Services

- Compte de service sans les droits nécessaires

- Assembly non signé

- Assembly n'ayant pas les droits suffisants pour faire une action
nécessaire à l'instanciation.

- etc...



Vous devez remettre en question votre design, c'est le premier pourquoi
d'une longue liste vers la solution.



Si vous nous exposez votre problème initial, on pourra vous aiguiller vers
une solution bien plus fiable comme WMI, SMS, Windows Installer, BITS etc...

Le nombre de solutions est lui aussi, heureusement, très grand :-).


--
Paul Bacelar
MVP Visual C++
Avatar
Paul Bacelar
Le service n'est pas dans la même WorkStation de sécurité, NotePad s'affiche
sur un écran qui n'est pas visible pour l'utilisateur interactif.
Il n'y pas pire aveugle, qu'une personne qui ne veux pas voir.
--
Paul Bacelar

"Vince" wrote in message
news:426a39ac$0$19238$
Vince a écrit :
> Paul Bacelar a écrit :
>
>> "Vince" wrote in message
>> news:426a2871$0$9510$
>>
>>> Bonjour,
>>>
>>> j'ai ecrit un service windows qui ouvre une socket et qui ecoute pour
>>> recevoir un fichier.
>>
>>
>>
>> Super, tu as demandé à ton administrateur réseaux ou à ton firewall se
>> qu'il
>> en pensait.
>>
>>
>>
>>> Si le fichier recu est un .bat je voudrais l'executer.
>>>
>>
>>
>> C'est pas écris sur son front que c'est un fichier BAT, HTTP est là


pour
>> cela
>>
>>
>>
>>> Voici ce que je fais :
>>>
>>> try
>>> {
>>> m_cfgFile.Close();
>>> m_cfgFile=null;
>>>
>>
>>
>> Il doit nous manquer un peu de code là?
>>
>>
>>> //========================================================//
>>> // Execute script files(.bat ONLY)
>>> string strCmdLine;
>>> string strDebug;
>>> bool bRet = false;
>>>
>>> strCmdLine = "/C " + DEFAULT_FILE_STORE_LOC + m_strCurFile;
>>
>>
>>
>> m_strCurFile doit être remplit par l'opération du Saint Esprit, et le
>> programmeur a dû oublier de le fermer avec un appel à la méthode Close.
>>
>>
>>> System.Diagnostics.EventLog.WriteEntry("BorneAdmin", "CmdLine=" +
>>> strCmdLine);
>>>
>>
>>
>> Et Qu'estquidit l'EventLog.
>>
>>
>>> System.Diagnostics.Process proc; // Declare New Process
>>> proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents > >>> false;
>>>
>>> //proc.StartInfo.UseShellExecute = false;
>>> proc.StartInfo.FileName = "cmd.exe";
>>
>>
>>
>> J'espère que t'es pas sous Win95/98/Me.
>>
>>
>>
>>> proc.StartInfo.Arguments = strCmdLine;
>>>


System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=AVANT");
>>
>>
>>
>> Et Qu'estquidit l'EventLog.
>>
>>
>>> bRet = proc.Start();
>>>


System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=APRES");
>>
>>
>> proc.WaitForExit();
>>
>> Et Qu'estquidit l'EventLog.
>>
>>
>>> m_clientSocket.Send(BitConverter.GetBytes(m_totalClientDataSize));
>>> }
>>> ...
>>>
>>>
>>> D'une comme je viens de commencer le C# depuis une heure je ne sais


pas
>>> comment faire l'equivelent d'un String.Format("%d", bRet) pour au


moins
>>
>>
>>
>> Et bRet.ToString() c'est quoi, d'après toi.
>>
>>
>>> voir si le proc.Start revoie true.
>>>
>>> Ensuite avez vous une idéee pourquoi ca ne s'execute pas ????
>>>
>>>
>>
>>
>> Je n'ai pas une idée du pourquoi mais un bon paquet de comment.
>> Commence par
>> potasser un bon bouquin, car le pourquoi, il est devant l'écran et pas
>> derrière ;-)
>>
>>
> Heu t gentil je viens de commencer y'a une heure.
> Si j'ai pas tout mis c'est pas pour surcharger la lecture et je pensais
> que les gens qui lisaient ce newsgroup étaient un peu intelligent.
> Mon admin reseau c'est moi et le firewall c'est moi qui le configure.
> Windows 95/98 c'est quoi ?
> Si c'est pour répondre de la sorte tu peux t'abstenir.
>
> Si ca t'interesse voila les logs mais ca va pas t'avancer bcp :
>
> CmdLine=/C C:ScriptBorneqsdqsd.bat
> proc.Start=AVANT
> proc.Start=APRES
>
>
>
>
>
>

Bon je progresse.
Enfin de compte le processus est bien lancé car il apparait dans les
taches mais il ne se passe rien.
Si j'essaye de lancer notepad par exemple la fenetre n'apparait pas.



Avatar
Vince
Paul Bacelar a écrit :
"Vince" wrote in message
news:426a3155$0$9520$

Paul Bacelar a écrit :

"Vince" wrote in message
news:426a2871$0$9510$


Bonjour,

j'ai ecrit un service windows qui ouvre une socket et qui ecoute pour
recevoir un fichier.




Super, tu as demandé à ton administrateur réseaux ou à ton firewall se





qu'il

en pensait.




Si le fichier recu est un .bat je voudrais l'executer.





C'est pas écris sur son front que c'est un fichier BAT, HTTP est là pour
cela




Voici ce que je fais :

try
{
m_cfgFile.Close();
m_cfgFile=null;





Il doit nous manquer un peu de code là?



//========================================================//
// Execute script files(.bat ONLY)
string strCmdLine;
string strDebug;
bool bRet = false;

strCmdLine = "/C " + DEFAULT_FILE_STORE_LOC + m_strCurFile;




m_strCurFile doit être remplit par l'opération du Saint Esprit, et le
programmeur a dû oublier de le fermer avec un appel à la méthode Close.



System.Diagnostics.EventLog.WriteEntry("BorneAdmin", "CmdLine=" +
strCmdLine);





Et Qu'estquidit l'EventLog.



System.Diagnostics.Process proc; // Declare New Process
proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents >>>>false;

//proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "cmd.exe";




J'espère que t'es pas sous Win95/98/Me.




proc.StartInfo.Arguments = strCmdLine;
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=AVANT");




Et Qu'estquidit l'EventLog.



bRet = proc.Start();
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=APRES");



proc.WaitForExit();

Et Qu'estquidit l'EventLog.



m_clientSocket.Send(BitConverter.GetBytes(m_totalClientDataSize));
}
...


D'une comme je viens de commencer le C# depuis une heure je ne sais pas
comment faire l'equivelent d'un String.Format("%d", bRet) pour au moins




Et bRet.ToString() c'est quoi, d'après toi.



voir si le proc.Start revoie true.

Ensuite avez vous une idéee pourquoi ca ne s'execute pas ????






Je n'ai pas une idée du pourquoi mais un bon paquet de comment. Commence





par

potasser un bon bouquin, car le pourquoi, il est devant l'écran et pas
derrière ;-)





Heu t gentil je viens de commencer y'a une heure.




En une heure, le ToString, c'est déjà acquis.

Les NG ne sont pas là pour vous faire apprendre un langage, mais pour vous
aidez sur un point précis et ardu.

Le ToString, vous avouerez que c'est un peu pousser loin l'ABSENCE de
recherche personnelle.



Si j'ai pas tout mis c'est pas pour surcharger la lecture et je pensais
que les gens qui lisaient ce newsgroup étaient un peu intelligent.
Mon admin reseau c'est moi et le firewall c'est moi qui le configure.




Si vous êtes capable de faire tous cela, vous devriez savoir que vous
contrevenez à tous les concepts de sécurité informatique et que le nombre de
choses que vous devrez contournez ne cessera de s'accroître avec la
sécurité de la plateforme.



Windows 95/98 c'est quoi ?
Si c'est pour répondre de la sorte tu peux t'abstenir.





Avec l'absence de réponse, vous auriez eut l'illusion que le monde est
injuste et que vous ne vous seriez pas mis en question.




Si ca t'interesse voila les logs mais ca va pas t'avancer bcp :

CmdLine=/C C:ScriptBorneqsdqsd.bat




/C -> chaine -> CMD -> arguments -> fenêtre -> service donc pas de
fenêtre -> KRAK

Ne jamais sous estimer la moindre information.


proc.Start=AVANT
proc.Start=APRES






Si votre programme est un "Hello Word", contentez-vous d'un programme bien
plus classique.

Si c'est le squelette d'une vraie application, arrêtez tout de suite et
re-concevez votre application pour qu'elle soit bien plus conforme au besoin
de sécurité actuelle.

Je vous le redis, le nombre de cause à l'échec de votre instanciation de CMD
est énorme, entre autre:

- Absence de périphérique accessible par les services

- CMD non conçu pour vivre dans la WorkStation de sécurité des Services

- Compte de service sans les droits nécessaires

- Assembly non signé

- Assembly n'ayant pas les droits suffisants pour faire une action
nécessaire à l'instanciation.

- etc...



Vous devez remettre en question votre design, c'est le premier pourquoi
d'une longue liste vers la solution.



Si vous nous exposez votre problème initial, on pourra vous aiguiller vers
une solution bien plus fiable comme WMI, SMS, Windows Installer, BITS etc...

Le nombre de solutions est lui aussi, heureusement, très grand :-).




Ha voila des infos clairs et précises comme j'aime.
Alors vous avez completement raison je pense que je dois revoir mon
architecture.

Mon probleme est le suivant je dois administrer à partir d'un
serveur(sous windows server 2003) un parc d'une vingtaine de machines
sous Windows XP.
Je dois etre en mesure par exemple de lancer des applicatons a distance,
synchroniser l'heure sur le serveur, deployer des applications sur
toutes mes machines.

J'ai deja installe VNC pour prendre la main a distance mais cela ne
resout pas mes problemes de deploiment ni de lancement d'applications.

Que dois je faire ?
Avatar
Simon Mourier
Windows Server, surtout la version 2003 dispose en standard de tout un tas
de services de ce genre: Terminal Services, Remote Desktop, Remote
Installation Service, Windows Time Service, etc...

Windows Server 2003 Deployment Kit: Automating and Customizing Installations
http://www.microsoft.com/downloads/details.aspx?familyidªf0a7a4-71c1-4ee9-b974-66214651a23b&displaylang=en

Automated Deployment Services Technical Overview
http://www.microsoft.com/windowsserver2003/techinfo/overview/ads.mspx

Windows Time Service Technical Reference
http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/TechRef/a0fcd250-e5f7-41b3-b0e8-240f8236e210.mspx

Windows Server 2003 TechCenter
http://www.microsoft.com/technet/prodtechnol/windowsserver2003/default.mspx

Index of Windows Server 2003 Technical Articles
http://www.microsoft.com/windowsserver2003/techinfo/overview/articleindex.mspx

Je vous conseille de jeter un coup d'oeil avant de réinventer la roue :-)
Simon.

"Vince" a écrit dans le message de news:
426ace5e$0$8882$
Paul Bacelar a écrit :
"Vince" wrote in message
news:426a3155$0$9520$

Paul Bacelar a écrit :

"Vince" wrote in message
news:426a2871$0$9510$


Bonjour,

j'ai ecrit un service windows qui ouvre une socket et qui ecoute pour
recevoir un fichier.




Super, tu as demandé à ton administrateur réseaux ou à ton firewall se





qu'il

en pensait.




Si le fichier recu est un .bat je voudrais l'executer.





C'est pas écris sur son front que c'est un fichier BAT, HTTP est là pour
cela




Voici ce que je fais :

try
{
m_cfgFile.Close();
m_cfgFile=null;





Il doit nous manquer un peu de code là?



//========================================================//
// Execute script files(.bat ONLY)
string strCmdLine;
string strDebug;
bool bRet = false;

strCmdLine = "/C " + DEFAULT_FILE_STORE_LOC + m_strCurFile;




m_strCurFile doit être remplit par l'opération du Saint Esprit, et le
programmeur a dû oublier de le fermer avec un appel à la méthode Close.



System.Diagnostics.EventLog.WriteEntry("BorneAdmin", "CmdLine=" +
strCmdLine);





Et Qu'estquidit l'EventLog.



System.Diagnostics.Process proc; // Declare New Process
proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents >>>>>false;

//proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "cmd.exe";




J'espère que t'es pas sous Win95/98/Me.




proc.StartInfo.Arguments = strCmdLine;
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=AVANT");




Et Qu'estquidit l'EventLog.



bRet = proc.Start();
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=APRES");



proc.WaitForExit();

Et Qu'estquidit l'EventLog.



m_clientSocket.Send(BitConverter.GetBytes(m_totalClientDataSize));
}
...


D'une comme je viens de commencer le C# depuis une heure je ne sais pas
comment faire l'equivelent d'un String.Format("%d", bRet) pour au moins




Et bRet.ToString() c'est quoi, d'après toi.



voir si le proc.Start revoie true.

Ensuite avez vous une idéee pourquoi ca ne s'execute pas ????






Je n'ai pas une idée du pourquoi mais un bon paquet de comment. Commence





par

potasser un bon bouquin, car le pourquoi, il est devant l'écran et pas
derrière ;-)





Heu t gentil je viens de commencer y'a une heure.




En une heure, le ToString, c'est déjà acquis.

Les NG ne sont pas là pour vous faire apprendre un langage, mais pour
vous
aidez sur un point précis et ardu.

Le ToString, vous avouerez que c'est un peu pousser loin l'ABSENCE de
recherche personnelle.



Si j'ai pas tout mis c'est pas pour surcharger la lecture et je pensais
que les gens qui lisaient ce newsgroup étaient un peu intelligent.
Mon admin reseau c'est moi et le firewall c'est moi qui le configure.




Si vous êtes capable de faire tous cela, vous devriez savoir que vous
contrevenez à tous les concepts de sécurité informatique et que le nombre
de
choses que vous devrez contournez ne cessera de s'accroître avec la
sécurité de la plateforme.



Windows 95/98 c'est quoi ?
Si c'est pour répondre de la sorte tu peux t'abstenir.





Avec l'absence de réponse, vous auriez eut l'illusion que le monde est
injuste et que vous ne vous seriez pas mis en question.




Si ca t'interesse voila les logs mais ca va pas t'avancer bcp :

CmdLine=/C C:ScriptBorneqsdqsd.bat




/C -> chaine -> CMD -> arguments -> fenêtre -> service donc pas de
fenêtre -> KRAK

Ne jamais sous estimer la moindre information.


proc.Start=AVANT
proc.Start=APRES






Si votre programme est un "Hello Word", contentez-vous d'un programme
bien
plus classique.

Si c'est le squelette d'une vraie application, arrêtez tout de suite et
re-concevez votre application pour qu'elle soit bien plus conforme au
besoin
de sécurité actuelle.

Je vous le redis, le nombre de cause à l'échec de votre instanciation de
CMD
est énorme, entre autre:

- Absence de périphérique accessible par les services

- CMD non conçu pour vivre dans la WorkStation de sécurité des Services

- Compte de service sans les droits nécessaires

- Assembly non signé

- Assembly n'ayant pas les droits suffisants pour faire une action
nécessaire à l'instanciation.

- etc...



Vous devez remettre en question votre design, c'est le premier pourquoi
d'une longue liste vers la solution.



Si vous nous exposez votre problème initial, on pourra vous aiguiller
vers
une solution bien plus fiable comme WMI, SMS, Windows Installer, BITS
etc...

Le nombre de solutions est lui aussi, heureusement, très grand :-).




Ha voila des infos clairs et précises comme j'aime.
Alors vous avez completement raison je pense que je dois revoir mon
architecture.

Mon probleme est le suivant je dois administrer à partir d'un serveur(sous
windows server 2003) un parc d'une vingtaine de machines sous Windows XP.
Je dois etre en mesure par exemple de lancer des applicatons a distance,
synchroniser l'heure sur le serveur, deployer des applications sur toutes
mes machines.

J'ai deja installe VNC pour prendre la main a distance mais cela ne resout
pas mes problemes de deploiment ni de lancement d'applications.

Que dois je faire ?











Avatar
none
Vince a écrit :
Paul Bacelar a écrit :

"Vince" wrote in message
news:426a3155$0$9520$

Paul Bacelar a écrit :

"Vince" wrote in message
news:426a2871$0$9510$


Bonjour,

j'ai ecrit un service windows qui ouvre une socket et qui ecoute pour
recevoir un fichier.





Super, tu as demandé à ton administrateur réseaux ou à ton firewall se






qu'il

en pensait.




Si le fichier recu est un .bat je voudrais l'executer.





C'est pas écris sur son front que c'est un fichier BAT, HTTP est là
pour
cela




Voici ce que je fais :

try
{
m_cfgFile.Close();
m_cfgFile=null;





Il doit nous manquer un peu de code là?



//========================================================//
// Execute script files(.bat ONLY)
string strCmdLine;
string strDebug;
bool bRet = false;

strCmdLine = "/C " + DEFAULT_FILE_STORE_LOC + m_strCurFile;





m_strCurFile doit être remplit par l'opération du Saint Esprit, et le
programmeur a dû oublier de le fermer avec un appel à la méthode Close.



System.Diagnostics.EventLog.WriteEntry("BorneAdmin", "CmdLine=" +
strCmdLine);





Et Qu'estquidit l'EventLog.



System.Diagnostics.Process proc; // Declare New Process
proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents >>>>> false;

//proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "cmd.exe";





J'espère que t'es pas sous Win95/98/Me.




proc.StartInfo.Arguments = strCmdLine;
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=AVANT");






Et Qu'estquidit l'EventLog.



bRet = proc.Start();
System.Diagnostics.EventLog.WriteEntry("BorneAdmin","proc.Start=APRES");





proc.WaitForExit();

Et Qu'estquidit l'EventLog.



m_clientSocket.Send(BitConverter.GetBytes(m_totalClientDataSize));
}
...


D'une comme je viens de commencer le C# depuis une heure je ne sais
pas
comment faire l'equivelent d'un String.Format("%d", bRet) pour au
moins





Et bRet.ToString() c'est quoi, d'après toi.



voir si le proc.Start revoie true.

Ensuite avez vous une idéee pourquoi ca ne s'execute pas ????






Je n'ai pas une idée du pourquoi mais un bon paquet de comment.
Commence






par

potasser un bon bouquin, car le pourquoi, il est devant l'écran et pas
derrière ;-)





Heu t gentil je viens de commencer y'a une heure.





En une heure, le ToString, c'est déjà acquis.

Les NG ne sont pas là pour vous faire apprendre un langage, mais pour
vous
aidez sur un point précis et ardu.

Le ToString, vous avouerez que c'est un peu pousser loin l'ABSENCE de
recherche personnelle.



Si j'ai pas tout mis c'est pas pour surcharger la lecture et je pensais
que les gens qui lisaient ce newsgroup étaient un peu intelligent.
Mon admin reseau c'est moi et le firewall c'est moi qui le configure.





Si vous êtes capable de faire tous cela, vous devriez savoir que vous
contrevenez à tous les concepts de sécurité informatique et que le
nombre de
choses que vous devrez contournez ne cessera de s'accroître avec la
sécurité de la plateforme.



Windows 95/98 c'est quoi ?
Si c'est pour répondre de la sorte tu peux t'abstenir.





Avec l'absence de réponse, vous auriez eut l'illusion que le monde est
injuste et que vous ne vous seriez pas mis en question.




Si ca t'interesse voila les logs mais ca va pas t'avancer bcp :

CmdLine=/C C:ScriptBorneqsdqsd.bat





/C -> chaine -> CMD -> arguments -> fenêtre -> service donc pas de
fenêtre -> KRAK

Ne jamais sous estimer la moindre information.


proc.Start=AVANT
proc.Start=APRES






Si votre programme est un "Hello Word", contentez-vous d'un programme
bien
plus classique.

Si c'est le squelette d'une vraie application, arrêtez tout de suite et
re-concevez votre application pour qu'elle soit bien plus conforme au
besoin
de sécurité actuelle.

Je vous le redis, le nombre de cause à l'échec de votre instanciation
de CMD
est énorme, entre autre:

- Absence de périphérique accessible par les services

- CMD non conçu pour vivre dans la WorkStation de sécurité des Services

- Compte de service sans les droits nécessaires

- Assembly non signé

- Assembly n'ayant pas les droits suffisants pour faire une action
nécessaire à l'instanciation.

- etc...



Vous devez remettre en question votre design, c'est le premier pourquoi
d'une longue liste vers la solution.



Si vous nous exposez votre problème initial, on pourra vous aiguiller
vers
une solution bien plus fiable comme WMI, SMS, Windows Installer, BITS
etc...

Le nombre de solutions est lui aussi, heureusement, très grand :-).




Ha voila des infos clairs et précises comme j'aime.
Alors vous avez completement raison je pense que je dois revoir mon
architecture.

Mon probleme est le suivant je dois administrer à partir d'un
serveur(sous windows server 2003) un parc d'une vingtaine de machines
sous Windows XP.
Je dois etre en mesure par exemple de lancer des applicatons a distance,
synchroniser l'heure sur le serveur, deployer des applications sur
toutes mes machines.

J'ai deja installe VNC pour prendre la main a distance mais cela ne
resout pas mes problemes de deploiment ni de lancement d'applications.

Que dois je faire ?











passe à linux, ;-)