WEB 版的系统
状况:用VS2005 查看页面运行 可以访问到 currentuser\software\microsoft\office
      
      但是 发布系统后,iis中运行页面 就提示“ 未将对象引用设置到对象的实例”,经检查是因为 iis中运行时 microsoft节点下面根本就没有office这个节点了。不知道是不是权限问题,我在注册表的office节点上加了 aspnet,internet来宾账户,networkservice 完全控制权限,但还是不行。

解决方案 »

  1.   

    查看服务器上是否安装office,并且查看对office所需的程序集是否存在。
      

  2.   

    肯定有office ,之前安装的是office2003 ,后来升级到了office2007我是想访问office里面的word,但是现在连office都找不到vs里运行没有问题,发布到iis就是找不到
      

  3.   

    iis 与 vs是同一个电脑吗?是不是环境不一样啊?不行就用远程调试
      

  4.   

    遇到未将对象设置引用到实例,最好断点试试 看哪里是null
      

  5.   


    开什么权限呢?我的代码很简单:定义了个currentuser 的key 变量定义了offi=key.opensubkey("Software\\Microsoft\\Office");定义了wd=offi.opensubkey("word"); //offi在iis运行后是null,导致提示“未将对象引用设置到对象的实例”
      

  6.   

    修改应用程序池的标识为本地系统
    检查键值是否为null
      

  7.   

    以上是我电脑的
    我已经知道怎么访问office节点了,可是又出现了不能删除的问题
    下面是我的源代码,可以创建个页面试试using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using Microsoft.Win32;public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Method1();
        }    public void Method1()
        {
            try
            {           
                RegistryKey key = Registry.CurrentUser;
                RegistryKey software = key.OpenSubKey("Software");
                RegistryKey micro = software.OpenSubKey("Microsoft", true);
                RegistryKey offi = micro.CreateSubKey("Office");
                RegistryKey version = offi.CreateSubKey("12.0");
                RegistryKey wd = version.CreateSubKey("Word");
                RegistryKey resi = wd.CreateSubKey("Resiliency");  //这个节点是只有WORD有禁用文件或是可恢复文件时才会生成,我的目的是如果有此节点则删除            if (resi == null)
                    this.Response.Write("null");
                else
                {
                    wd.DeleteSubKeyTree("Resiliency");  //运行该句无异常,并且可以在页面上输出OK,但是一查注册表,这个节点还是没有删除!                this.Response.Write("ok");
                }
                //string[] kns = wd.GetSubKeyNames();            //foreach (string kn in kns)
                //{
                //    if (kn == "Resiliency")
                //    {
                //        key.DeleteSubKeyTree("Software\\Microsoft\\Office\\12.0\\Word\\Resiliency");
                //    }
                //}
                key.Close();        }
            catch (Exception)
            {
                throw;
            }
        }
    }
      

  8.   


    谢谢,我已经按你说的设置了标识为本地系统,可还是不行键值检查了null可以避免错误,但是注册表中确实有我要找的节点
      

  9.   

    不会是权限问题,权限问题会返回拒绝访问,问题出在用户上,HKCU是当前用户的注册表信息,不同的用户HKCU中的内容是不一样的,Web网站尽量不要使用注册表来存储信息,要使用的话也要用HKLM不要用HKCU
      

  10.   


    我的目的是删除
    wd.DeleteSubKeyTree("Resiliency"); 
    这个节点是自己生成的HKLM我看了,没有这个节点,那有没有办法控制HKCU呢?
      

  11.   

    我改的是指定账户 administrator ,就可以了但是不安全,不能用在网站服务器上,不知道还有没有别的办法
      

  12.   

    word
    vs里运行没有问题,发布到iis就是找不到,我也出现这种问题,求救