PDA

Visualizza la versione completa : [C++] Servizio Windows con accesso alla rete


Vetriolo
17-12-2008, 17:31
Ciao
Ho programma che mi crea un file in locale per poi spostarlo su un percorso di rete.
Lanciandolo a "mano" fa tutto il suo dovere.
Ora ho la necessitā di invocarlo da un servizio che ho scritto e registrato in questo modo:

sc create MyrService type= own type= interact error= ignore binPath= "C:\windows\MyAppl.exe"

Chiamandolo da servizio il programma non riesce ad accedere al percorso di rete.

Ho provato ha registrarlo in quest'altro modo:

sc create MyrService type= own type= interact error= ignore binPath= "C:\windows\MyAppl.exe" obj= .\miautenza password= miapassword

ma ritorna
[SC] CreateService FAILED 87:

Parametro non corretto.

Grazie :fighet:

oregon
17-12-2008, 19:31
Ma l'applicazione e' stata creata espressamente come "servizio NT"? O č una applicazione qualunque?

E in quale linguaggio?

Vetriolo
17-12-2008, 21:05
Scusa non ho capito bene la tua domanda, cmq sia l'exe che il servizio sono Ad hoc, il servizio deve girare su macchine XP. L'ho scritto in C++.


Originariamente inviato da oregon
Ma l'applicazione e' stata creata espressamente come "servizio NT"? O č una applicazione qualunque?

E in quale linguaggio?

denis76
17-12-2008, 21:27
E' semplice. Il servizio lo hai installato come utente locale al quale non č consentito accedere a cartelle condivise. E' sufficiente che tu gli dia dei permessi pių forti, come administrator o simile. La cosa la fai cliccando con tasto destro sul servizio stesso e selezionando un utente diverso da Utente locale.

oregon
17-12-2008, 22:00
Originariamente inviato da Vetriolo
Scusa non ho capito bene la tua domanda ... L'ho scritto in C++.

Intendo dire che non ho capito se il tuo codice scritto in C++ e' come una qualsiasi applicazione (con un main e delle funzioni ...) o no ...

Vetriolo
18-12-2008, 08:57
Originariamente inviato da denis76
E' semplice. Il servizio lo hai installato come utente locale al quale non č consentito accedere a cartelle condivise. E' sufficiente che tu gli dia dei permessi pių forti, come administrator o simile. La cosa la fai cliccando con tasto destro sul servizio stesso e selezionando un utente diverso da Utente locale.

Non accedo nč fisicamente nč in desktop remoto alla macchina su cui installo il servizio.

Vetriolo
18-12-2008, 08:59
Originariamente inviato da oregon
Intendo dire che non ho capito se il tuo codice scritto in C++ e' come una qualsiasi applicazione (con un main e delle funzioni ...) o no ...


Certo che lo č, ho creato un'applicazione console Win32 x intenderci.

oregon
18-12-2008, 12:16
Originariamente inviato da Vetriolo
Certo che lo č, ho creato un'applicazione console Win32 x intenderci.

E questo e' l'errore ... un servizio NON e' come una qualsiasi applicazione Win32 console ma ha delle specificitā e per la sua scrittura si devono seguire delle regole ben definite.

Se non le segui, il Service Controller non lo installerā.

Vetriolo
18-12-2008, 13:51
Originariamente inviato da oregon
E questo e' l'errore ... un servizio NON e' come una qualsiasi applicazione Win32 console ma ha delle specificitā e per la sua scrittura si devono seguire delle regole ben definite.

Se non le segui, il Service Controller non lo installerā.

L'exe del servizio e l'exe dell'applicazione sono distinti.
Il servizio l'ho creato correttamente con tanto di ServiceTable, StartServiceCtrlDispatcher ecc. ecc. infatti se l'avessi scirtto senza rispettare i dovuti criteri non me lo registrerebbe neppure, concordi? Il problema č che il servizio si registra, si avvia lancia la mia applicazione che a sua volta fa tutto tranne che spostare il file in rete. Il problema č che il servizio (mi insegnerai visto che sei MVP) gira come LocalSystem io dovrei trovare il modo di farlo girare con diritti per accedere alla rete.

Loading