2009-02-12 7 views
1

J'ai un service Windows construit qui est en cours d'installation par la commande installutil /i de .NET 2.0. Il installe le service comme avec le compte suivant, avec un mot de passe:Comment autoriser automatiquement mon service à interagir avec le bureau au moment de l'installation?

NT AUTHORITY\LocalService 

Quand je lance mon service avec net start <serviceName>, je reçois

Error 5: Access Denied 

Pour le retirer, j'ai dû ouvrir services.msc et des propriétés donnent le service

Logon As -> Local System Account 
     -> Allow Service to interact with desktop. 

Puis-je mettre toute cette affaire « clicky » dans le code qui est soit le code natif .NET C# ou WMI ou un autre script batch? Je vais utiliser un script batch de toute façon, donc c'est bien.

Répondre

4

J'ai trouvé une réponse, merci beaucoup à la page Web suivante à laquelle je donne un crédit complet.

link text

est ici la solution que j'ai, il suffit de changer votre nom de service selon les besoins. Jetez-le dans une application C# Console et l'exécuter :)

static void Main(string[] args) 
{ 
    string serviceName = "SERVICE_NAME_HERE"; 
    string objPath = string.Format("Win32_Service.Name='{0}'", serviceName); 
    using (ManagementObject service = new ManagementObject(new ManagementPath(objPath))) 
    { 
     object[] wmiParams = new object[11]; 
     wmiParams[6] = "LocalSystem"; 
     wmiParams[7] = ""; 
     service.InvokeMethod("Change", wmiParams); 
    } 
} 

}

+2

Vous avez oublié la partie "Interagir Desktop". Ajoutez simplement wmiParams [5] = true; – Phil

Questions connexes