2010-08-31 41 views
7

Ho un file batch che sto usando per installare i miei servizi Windows C# per un po ', non ho mai avuto problemi fino a Windows 7. Ho tentato di eseguire il file batch con i privilegi di amministratore. Ho tentato di eseguire il prompt dei comandi con i privilegi di amministratore, accedere al servizio Windows EXE ed eseguire InstallUtil lì. Ancora non funziona.Installazione del servizio Windows C# su Windows 7

Dopo aver letto alcuni altri suggerimenti, ho provato a spostare i miei file fuori dalla cartella/bin e a eseguirli da un'altra posizione, ma anche questo non ha funzionato.

lima Il lotto simile a questo

@ECHO OFF 

REM The following directory is for .NET 2.0 
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v2.0.50727 
set PATH=%PATH%;%DOTNETFX2% 

echo Installing IEPPAMS Win Service... 
echo --------------------------------------------------- 
InstallUtil /i IEPPAMS_WinService1.exe 
echo --------------------------------------------------- 
echo Done. 

e ho un file di registro che ho discarica informazioni per l'installazione. Se faccio doppio clic sul file .bat, ricevo

Esecuzione di un'installazione transazionale.

Inizio della fase di installazione dell'installazione . Vedere il contenuto del file di registro per il servizio C: \ Users \ Justin \ Desktop \ service test \ IEPPAMS_WinService1.exe stato del montaggio. Il file è situato a C: \ Users \ Justin \ Desktop \ service test \ IEPPAMS_WinService1.InstallLog.

Si è verificata un'eccezione durante la fase di installazione . System.InvalidOperationException: Impossibile aprire Gestione controllo servizi sul computer ".". Questa operazione potrebbe richiedere altri privilegi. L'interno eccezione System.ComponentModel.Win32Exception è stato gettato con il seguente messaggio di errore : Accesso negato.

La fase di rollback dell'installazione sta iniziando. Vedere il contenuto del file di registro per il servizio C: \ Users \ Justin \ Desktop \ service test \ IEPPAMS_WinService1.exe stato del montaggio. Il file è situato a C: \ Users \ Justin \ Desktop \ servizio test \ IEPPAMS_WinService1.InstallLog.

La fase di ripristino completato con successo .

L'installazione transazionale è stata completata.

Quando si esegue il file .bat con privilegi di amministratore, non viene scritto nulla nel file di registro e il servizio non è ancora installato.

Qualche idea? C'è un nuovo modo per installare i servizi in Windows 7?

risposta

8

Quindi sono stato in grado di risolvere il problema digitando nella riga di comando l'intero percorso di InstallUtil e ha funzionato. Così, dopo la navigazione verso la cartella che aveva il mio EXE ho digitato il seguente:

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.21006 \ installutil.exe IEPPAMS_WinService1.exe

Non

certo perché devo farlo in Windows 7 ora, quando non ho mai avuto in XP, ma oh, va bene. Grazie per tutti i suggerimenti!

+1

Sto cercando di fare la stessa cosa che stai facendo qui. Ho appena notato che per il tuo 'Fix' qui stai usando l'installutil.exe nella tua directory .NET 4.0. Nella tua domanda originale stavi usando .NET 2.0 per l'installazione. (imposta DOTNETFX2 =% SystemRoot% \ Microsoft.NET \ Framework \ v2.0.50727) –

+0

Punto eccellente. Mi sento come quando stavo attraversando le cose che ho provato andando a .NET 4.0 e che non ha fatto il trucco. Poi quando sono andato sul percorso completo ha funzionato. Non sono tornato per provare il percorso completo in 2.0 e questo è stato qualche mese fa quindi potrei ricordare sbagliato. –

+0

Sì questa è la risposta !! Mi è costato un giorno uomo! –

11

Fare clic destro sul file batch ed eseguirlo come amministratore.

È molto probabile che si scontrino con il nuovo modello di sicurezza (Controllo account utente) da Windows Vista e Windows 7. Anche se si è in esecuzione come account con diritti di amministratore, sarà comunque necessario elevare per eseguirne alcuni (la maggior parte) attività amministrative.(Sì, è possibile disattivare questa funzione, ma non)

Modifica ... la correttezza la linea di comando è InstallUtil YourApp.exe. Lo /i non sembra un parametro vaild per InstallUtil.

+0

Matthew, grazie ma l'ho provato. I risultati sono descritti alla fine della mia domanda. –

+0

@Justin, prova ad avviare la finestra di comando come amministratore e poi prova ad emettere il comando manualmente. Sembra essere un problema di autorizzazioni, ma senza stare seduti sul tuo computer è difficile indovinare quale sia il permesso che sta causando il problema. –

+1

BTW, hai provato a cercare in quel file di registro? –

3

Quando si esegue il file .bat con privilegi di amministratore, non viene scritto nulla nel file di registro e il servizio non è ancora installato.

Prima di tutto, è necessario eseguire come autorizzazioni di amministratore.

In secondo luogo, quando "Esegui come amministratore", in realtà cambia la directory in c: \ windows \ system32 come directory iniziale (nessuna idea del perché), che probabilmente spiegherebbe perché l'esecuzione come amministratore non causa file di registro. Passare manualmente al percorso IEPPAMS_WinService1.exe in cui risiede l'inizio dello script.