2010-10-07 30 views
0

Notre logiciel doit pouvoir enregistrer un ocx lors de l'exécution. L'OCX vit dans le répertoire des fichiers de programme de l'application. Je trouve que si je lance manuellement une ligne cmd en tant qu'administrateur et que j'exécute la commande tout fonctionne très bien, cependant si je lance notre application en tant qu'administrateur et que l'application tente d'enregistrer l'ocx, elle échoue. Je remarque également que l'application est capable d'exécuter regsvr32 avec succès lorsque je l'exécute à partir de mon répertoire de construction, sans doute parce que je possède le répertoire de construction. Je dois encore courir en tant qu'administrateur. Quelqu'un at-il des idées sur ce qui pourrait mal tourner?L'exécution de rgsvr32 dans les fichiers programme myapp semble échouer même si elle est exécutée en tant qu'administrateur

Merci, brian

+1

Pouvez-vous nous en dire plus le système d'exploitation échoue-t-il, des messages d'erreur (quelque chose dans les journaux des événements)? – Kev

+0

Le problème se produit sur Windows 7 64bit et 32bit. J'essaye de piéger quelques messages d'erreur maintenant et je vérifie l'observateur d'événement. Il peut échouer sur d'autres systèmes d'exploitation mais je ne suis pas sûr. –

+0

Kev, merci de jeter un coup d'oeil! –

Répondre

0

La réponse est tout d'abord, que je suis bâclée, et d'autre part que la ligne de commande args passé en regsvr32 besoin d'être enveloppé dans des guillemets doubles. Il ne me vint pas parce que je l'ai écrit mon code comme ceci:

string args = "/s " + Path.Combine(MP_xxxx_DIR.FullName, MAP_POINT_OCX) ; 

quand il devrait ressembler:

string args = "/s " + "\"" + Path.Combine(MP_xxxx_DIR.FullName, MAP_POINT_OCX) + "\""; 

Hope this helps quelqu'un d'autre :)