12
votes

Excel Com Automation via l'utilisateur interactif s'arrête lorsque l'utilisateur se déconnecte

J'ai développé une application serveur qui utilise Excel 2007 COM Automation pour convertir certains fichiers XLS. Il est lancé comme un service sur une instance Windows Datacenter, en cours d'exécution sous son propre utilisateur et j'ai dû modifier les paramètres de sécurité DCOM ("Lancement d'un utilisateur interactif") pour le faire fonctionner.

Le problème est que lorsque je me déconnecte (via RDP), il cesse de fonctionner. Je me connecte, ça marche à nouveau.

Quelqu'un a-t-il eu le même problème?


0 commentaires

5 Réponses :


2
votes

Il y a une chose appelée Excel Services , qui est censé pouvoir exécuter Excel comme service utilisant SharePoint, ce qui lui permettrait de fonctionner sans surveillance avec personne connecté.


1 commentaires

Salut Joel, merci pour la réponse! :) J'y pensais réellement à vous lorsque j'ai débogué cela, remarquant que Excel est plus difficile à automatiser que Word ou PowerPoint, nécessitant un utilisateur interactif connecté pour fonctionner. Vous savez probablement pourquoi, après avoir travaillé sur les internes. Je suis au courant des services MS Office fournis par SharePoint, mais malheureusement, je développe ce service pour un concurrent direct de SharePoint. ^ _ ^ Je posterai la solution que j'ai trouvée ci-dessous. Acclamations!



11
votes

OK, je ne pouvais donc pas obtenir Excel de fonctionner sans un utilisateur interactif, aucune quantité de scandale DCOMCNFG ne le ferait. Donc, j'ai simplement configuré Autologin pour l'utilisateur Le service est exécuté sous (voir http://support.microsoft.com / kb / 315231 pour des instructions).

Cela a pour effet que sur le démarrage du serveur, cet utilisateur se connectera en tant que session de console interactive. Contrairement aux sessions RDP, ceci est permanent et rend Excel heureux.

Autres astuces pour les Âmes des Poors qui doivent faire quelque chose de similaire:

  • Créez le dossier C: \ Windows \ System32 [ou SYSWOW64] \ CONFIG \ SystemProfile \ Desktop
  • Assurez-vous qu'une imprimante par défaut est configurée pour l'utilisateur que le service fonctionne sous
  • Modifier les paramètres DCOMCNFG (MMC -32, Ajouter "Services de composants") d'Excel pour exécuter à l'aide du compte interactif
  • Changer les valeurs par défaut Global DCOM pour permettre l'accès local, le lancement local et l'activation locale pour l'utilisateur que le service fonctionne sous

2 commentaires

Voulez-vous dire effectuer les "autres astuces" que vous mentionnez simule avoir un utilisateur interactif toujours?


L'utilisation de la connexion automatique est un risque de sécurité. Comment pouvez-vous protéger votre serveur de cette manière?



5
votes

J'ai eu cette question et j'ai constaté que la réponse est réellement dans la configuration DCOM.

J'ai dit ce qui suit pour résoudre le problème:

  1. Ouvrez les propriétés Excel DCOM
  2. Aller à l'identité onglet
  3. Sélectionnez cet utilisateur
  4. Entrez les informations d'identification de quelqu'un qui a accès à Excel

    Vous devrez peut-être aller à l'onglet et assurez-vous que l'utilisateur que vous avez spécifié ci-dessus contient des autorisations appropriées.

    Après cela, j'ai été capable de vous déconnecter du serveur tout en utilisant toujours les bibliothèques Excel Com Automation.


0 commentaires

0
votes

Si le compte qui exécute Excel est administrateur, cela fonctionnera:

pour 64 bits (x64), créez ce dossier: C: \ Windows \ SYSWOW64 \ CONFIG \ SystemProfile \ Desktop Pour 32 bits (x86), créez ce dossier: C: \ Windows \ System32 \ Config \ SystemProfile \ Desktop Sinon pour résoudre ce problème, procédez comme suit:

  1. Connectez-vous à votre serveur en tant qu'administrateur
  2. Allez à "Démarrer" -> "Run" et entrez "MMC Comexp.msc / 32"
  3. Accédez aux propriétés de l'application Microsoft Excel, sous identité, changez-la à l'utilisateur interactif de l'utilisateur de lancement (qui est défini par défaut).
  4. Accédez aux propriétés du classeur Microsoft Office Excel 2007, sous identité, changez-le à l'utilisateur interactif de l'utilisateur de lancement (qui est défini par défaut).
  5. Allez à l'onglet Sécurité pour l'application Microsoft Excel et sélectionnez Personnaliser pour "Autorisations de lancement et d'activation" et ajoutez un compte (sous laquelle Excel est en cours d'exécution) et donnez-le "Lancement local" et "Activation locale" autorisation
  6. Aller à l'onglet Sécurité du classeur Microsoft Office Excel 2007 et sélectionnez Personnaliser pour "Autorisations d'accès" et ajouter un compte (sous laquelle Excel est en cours d'exécution) et donnez-lui une autorisation "Accès local"

0 commentaires

4
votes

côté serveur:

a) commutateur "utilisateur interactif" sur "cet utilisateur" .

B) "Cet utilisateur" fonctionne uniquement après Création de ces dossiers :

  • C: \ Windows \ SYSWOW64 \ CONFIG \ SystemProfile \ Desktop
  • C: \ Windows \ System32 \ Config \ SystemProfile \ Desktop

    c) Attendez ... L'étape b) déclenche Windows pour créer automatiquement:

    • c: \ utilisateurs \ par défaut \ Desktop

      Remarque La définition de "utilisateur interactif" est de faire piggyBacked sur tout ce qui est connecté à l'utilisateur activé sur le serveur. Ainsi, l'échec de la mise en place de MS Office lorsqu'aucun utilisateur n'est actif sur le serveur.

      I.e., Pour moi, la solution était un hybride des solutions déjà proposées. J'ai utilisé Office 2013 (X86) sur Win 2012R2. Mon problème était plutôt avec Word (pour utiliser Wordtopdf).

      Détails pour l'étape B:

      • Connexion au serveur> Démarrer> Run DCommNfg.exe (Pour lancer les services de composants)> Console Root> Services de composants> Ordinateurs> Mon ordinateur> DCOM Config ...
      • Faites défiler jusqu'à "Microsoft Word 97 - 2003 Document" ou "Microsoft Excel Application" (... I.E., quelle que soit la chose de MS Office que vous devez lancer) ...
      • Cliquez avec le bouton droit de la souris et sélectionnez "Propriétés"> onglet Identity> Choisissez "Cet utilisateur"> Entrez les informations d'identification pour certains utilisateurs ayant accès à MS Office sur le serveur. (J'ai utilisé un utilisateur avec des autorisations d'administrateur.)

        Détails pour l'étape C:

        • L'attente varie de 5 min à la nuit. Éventuellement, créez ce dossier manuellement (si le dossier n'existe pas et que vous êtes précipité pour effectuer des tests terminés).

0 commentaires