web-dev-qa-db-fra.com

erreur lors de l'installation du service de fenêtre System.Security.SecurityException

J'ai créé un service de fenêtre et pour l'installer, j'ai créé son projet de déploiement et je l'ai installé. Après l'installation je l'ai regardé. Cela a commencé avec succès.

Le lendemain, j'ai fait quelques modifications, reconstruit et réinstallé, mais maintenant, il ne s'installe pas.

Ensuite, j'ai pensé que son problème avec le programme d'installation permettait de créer un programme d'installation personnalisé pour le service afin de pouvoir mettre à jour mon code à tout moment.

Je l'ai créé comme ça si quelqu'un en avait besoin pour l'avenir.

public class MyInstaller : Installer
    {
        ServiceProcessInstaller spi;
        ServiceInstaller si;
        public MyInstaller()
        {            
            spi = new ServiceProcessInstaller();
            spi.Account = ServiceAccount.LocalSystem;

            si = new ServiceInstaller();
            si.StartType = ServiceStartMode.Manual;
            si.ServiceName = "MyService";
            si.DisplayName = "My Service";
            si.Description = "service installed from command line";

            this.Installers.Add(spi);
            this.Installers.Add(si);

        }
}

Je l'ai appelé depuis la méthode principale en vérifiant le paramètre args.

                            case "-i":
                            case "-install":
                                ti = new TransactedInstaller();
                                mi = new MyInstaller();
                                ti.Installers.Add(mi);
                                string logPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\install.log";
                                ctx = new InstallContext(logPath, cmdline);
                                ti.Context = ctx; //.Context ( ctx );
                                ti.Install(new Hashtable());
                                break;

Maintenant, quand j'essaye d'installer. J'ai reçu l'erreur System.Security.SecurityException: la source n'a pas été trouvée, mais certains ou tous les journaux des événements n'ont pas pu être recherchés. Journaux inaccessibles: Sécurité.

Je le google, et viens savoir que le service essaiera d’accéder au journal des applications lors de l’installation et d’écrire le journal là-bas.

Je n'écris aucun journal des événements. J'ai mon log4net pour la journalisation. Mais toujours son comportement par défaut.

Comment surmonter ce problème maintenant? Il ne s'installe pas même si j'ai toutes les autorisations.

Merci

18
sunder

J'ai constaté que vous pourriez parfois avoir besoin de "Exécuter en tant qu'administrateur". Si vous effectuez l'installation à partir d'une invite de commande, vous devrez peut-être démarrer that up avec "Exécuter en tant qu'administrateur".

63
Eben Roux

J'aurais peut-être eu une cause principale distincte pour le message, mais je l'ai corrigé en modifiant mon service pour qu'il s'exécute en tant que LocalSystem (c'est ce que je veux de toute façon) au lieu de LocalService.

1
Jay Carlton

Je peux confirmer que sous "Windows 7 64 bits" ET "Windows 10", vous devez:

1) Exécutez la commande Visual Studio Invite AS ADMINISTRATOR (clic droit .. Autre .. tun en tant qu’administrateur)

 enter image description here

2) allez dans le dossier "obj" où vous avez le fichier exe. (cd [tout le chemin de\obj]) 3) lancer installutil [myservice.exe]

s'il ne s'exécute pas en tant qu '"admin", il échoue même sur l'ancien win7. :(

note: MSDN l'explique:

(à: https://docs.Microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a- crowing-a-windows-service-application-in-the-component-designer )

"Pour installer un service Windows, vous devez avoir des informations d'identification administratives sur l'ordinateur sur lequel vous l'installez."

:)

0
ingconti