Newsgroup: it.comp.programmare.win32
Titolo: Lanciare un eseguibile all'avvio.

Devo lanciare due eseguibili alla partenza di una macchina su cui gira NT.
Non posso metterli nell'esecuzione automatica perchè deve funzionare anche 
se 
nessuno si connette.
Inoltre i due devono partire uno di seguito all'altro in un ordine ben 
stabilito.
Qualcuno ha qualche idea su come posso fare?
I servizi si possono schedulare nel senso di dire chi parte dopo chi?
     Massimo
------------------------------------------------------------
 Get your FREE web-based e-mail and newsgroup access at:
 
http://MailAndNews.com
 Create a new mailbox, or access your existing IMAP4 or
 POP3 mailbox from anywhere with just a web browser.
------------------------------------------------------------

I servizi si possono schedulare nel senso di dire chi parte dopo chi?
I servizi possono essere in dipendenza l'uno dall'altro, per cui si
avviano uno dopo l'altro.
--
Andrea Laforgia (ICQ 87230455)
http://www.geocities.com/AndreaLaforgia
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."

Devo lanciare due eseguibili alla partenza di una macchina su cui gira NT.
Metti i corrispondenti pathname nel Registro, come parametri di tipo REG_SZ,
sotto
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
Massimo

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
Temo che non vada bene.
Questa chiave viene letta prima del log-in ?


 Questa chiave viene letta prima del log-in ?
credo che prima del login viene letto RunOnce
--
ciao | xaero

Questa chiave viene letta prima del log-in ?
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
prima ancora della schermata della password

credo che prima del login viene letto RunOnce
RunOnce significa solo che dopo l'avvio del programma la chiave viene 
cancellata

prima ancora della schermata della password
Stiamo parlando di Windows NT e questo sistema non possiede questa
chiave di registro, per il semplice motivo che i servizi vengono fatti
partire dal sistema in modo differente.
Sotto Windows9x si puo' rendere come servizio qualsiasi processo,
sotto NT no.
Il modo piu' giusto per ottenere il funzionamento richiesto dal nostro
amico e' quello di costruire due servizi interdipendenti da far
partire in automatico.


fatti partire dal sistema in modo differente.
e allora srvany del reskit

 parte dopo chi?
Sotto a NT temo proprio di no. Puoi pero` farlo con degli stratagemmi,
tipo: li fai partire entrambi e in un ordine qualsiasi, ma a quello che
deve partire dopo fai aspettare un mutex settato da quello che deve
partire prima.
---
Bye! Lorenzo Lutti
http://antani.virtualave.net/

e allora srvany del reskit
Hmmm... non mi piace molto.
Ma guarda che non c'e' alcuna difficolta' nello scrivere due servizi.


Sotto a NT temo proprio di no. 
Secondo me si', mediante i servizi dipendenti.
Ricordo che scrissi un mio programma che, tra le altre cose,
visualizzava in una listbox i servizi presenti sulla macchina ed
elencava quelli dipendenti da uno specifico.
Usai "EnumDependentServices", la cui pagina su MSDN recita
testualmente:
"The EnumDependentServices function provides the name and status of
each service that depends on the specified service; that is, the
specified service must be running before the dependent services can
run"


 Ma guarda che non c'e' alcuna difficolta' nello scrivere due servizi.
...questa mi sembra un po' grossa...
Massimo

Ma guarda che non c'e' alcuna difficolta' nello scrivere due servizi.
come si fanno? MSDN ultimamente non è facilmente raggiungibile :/
se hai già qualcosa, leggerei volentieri
-- 
-----BEGIN GEEK CODE BLOCK-----
Version 3.1 (with proprietary extensions)
Comments: waiting for version 4.0 ;)
GE/M/S/O d- s:--- !a C++++()>$ UL P+>+++ L+>++ e w++>$ N++ o-- K- W++ O? 
M? V? PS++ PE- Y+>+++ PGP++ t+ 5? X++(+) R tv--  b++>++++ DI++ D++ G-- e 
h! !r xy**
------END GEEK CODE BLOCK------

...questa mi sembra un po' grossa...
E' chiaro che sto parlando di chi conosce la programmazione per NT.
Tutto poi dipende dal tipo di framework utilizzato.
Con C++ Builder, per esempio, e' molto semplice scrivere un servizio
e, comunque, su MSDN c'e' un esempio in piena regola, molto semplice.


se hai già qualcosa, leggerei volentieri
Sarebbe troppo lungo descriverlo qui dentro.
In ogni caso si usano API apposite per creare, installare, cancellare,
far partire e fermare servizi.
Un po' piu' complicato e' fornire l'output dei propri programmi, dato
che i servizi non hanno interfaccia grafica.
Generalmente l'output viene fornito sul registro di eventi (a sua
volta gestito da un servizio : l'EventLog) di WindowsNT con il quale
e' possibile fornire messaggi indicativi sul corretto/errato
funzionamento.


 Secondo me si', mediante i servizi dipendenti.
Strano, effettivamente pare che tu abbia ragione, eppure ricordo diversi
articoli su NTbugtraq (tempo fa ero entrato in paranoia-mode e me li
leggevo, ma come ero messo? :-)) che illustravano i vari problemi
derivanti dal caricamento "a caso" di certi servizi di rete di NT. La
colpa era proprio imputata a questa incapacita` (a questo punto
probabilmente solo "parziale" e limitata a certi casi) di specificare le
dipendenze fra servizi.
Bah, saranno scritti male i servizi di rete. :)
