我用c#对word进行操作,对word菜单条做了改变,当word应用程序退出时,word没出现问题。但是,当我把程序发布后,拷贝该release文件到其他电脑上运行,程序结束后使的该电脑的word模板改变,无法恢复,可是这个release里exe运行在我的电脑却不会出现这种问题,这是什么原因?什么办法可以避免?望高手指点!

解决方案 »

  1.   

    你的代码有潜在的处理不完善的地方(或者其他原因,如病毒等)。你用代码关闭WORD时,把你的文件保存成系统模板。处理方法:
    (1)查代码、查用户环境。
    (2)退出WORD后,删除你改变过的系统模板文件(下次WORD启动会自动重建)。
    文件位置:C:\Documents and Settings\admin\Application Data\Microsoft\Templates\Normal.dot第2种方法不太好呀,别人想存也存不了了。
      

  2.   

       我觉得第二种方法不好,原因是normal.dot也有可能在其他路径上,要是能自动获得该路径就好了!
        至于第一种,代码我觉得不是这个问题,至于用户环境极有可能,因为在我这边是对的,在其他机子是错的。我在其他机子仔细看过了,程序运行后,那个自定义模板已经取代了原有的normal.dot,有没有可能进行某些设置避免这种取代?比如程序中设置一个自定义模板路径,程序结束后在变为原来的默认路径?
      

  3.   

    (1) 不要以模版形式打开WORD文件,以新建空白文档的方式来打开。
    (2) normal.dot位置:Word.Application.NormalTemplate.Path
      

  4.   

        我用Word.Application.open打开的,你的帮助很有用,明天试试!!
      

  5.   


    直接用:
    (3) Application.NormalTemplate.FullName 文档标准模板名称及所在位置
      

  6.   

        路过问下,有没有可能让程序中生成的模板在程序关闭后不取代原系统的normal.dot模板?
      

  7.   


    正常情况下不应该改变normal.dot。如果改变了应该是程序有的地方没处理好。
      

  8.   

       就是想不通什么地方能把这个修改了,我在word操作里用  word.Application app= new Word.Application(),app.Visible = true; 然后添加了一些菜单按钮,用如下
    doc = app.Documents.Open(ref Source, ref Unknown,
                        ref Unknown, ref Unknown, ref Unknown,
                        ref Unknown, ref Unknown, ref Unknown,
                        ref Unknown, ref Unknown, ref Unknown,
                        ref Unknown, ref Unknown, ref Unknown,
                        ref Unknown, ref Unknown);
    打开,
    最后 doc.Close(ref Unknown, ref Unknown, ref Unknown);
     app.Quit(ref Unknown, ref Unknown, ref Unknown);
    就这个过程,不知怎么就把原normal.dot替代了
      

  9.   

    首先,您可以关闭提示,Word 将自动保存更改,但是您可能仍会遇到问题。
    其次,您的 Normal.dot 模板可能感染了宏病毒。
    第三,可能是某个加载项导致了此问题。http://support.microsoft.com/kb/291352/zh-cn
      

  10.   

    不要使用dot, 试试使用doc,复制一份再操作
      

  11.   

    doc.Close(ref Unknown, ref Unknown, ref Unknown); 
    app.Quit(ref Unknown, ref Unknown, ref Unknown); 
    会默认更改当前 normal.dot模板
      

  12.   

       如何确保它结束时不更改当前normal.dot,总不至于用手动更改它吧!
      

  13.   

    另外一台机子也要安装.net运行的环境.net framework,而且,该软件的版本与你所使用的应用程序对应的运行环境的版本要一致,不然肯定无法正常运行。
      

  14.   

    doc.Close(ref Unknown, ref Unknown, ref Unknown); 
    app.Quit(ref Unknown, ref Unknown, ref Unknown); 
    把上面两句,改成下面试试:object doNotSaveChanges = Word.WdSaveOptions.wdDoNotSaveChanges;
    doc.Close(ref doNotSaveChanges, ref Unknown, ref Unknown);
    app.Quit(ref doNotSaveChanges , ref Unknown, ref Unknown); 
      

  15.   

       app.Quit(ref doNotSaveChanges , ref Unknown, ref Unknown); 这个可以避免word默认模板被修改,谢了