先说第一个:
我建立一个服务,在onstart中,如何终止服务的启动,并不要有服务终止或无法启动的任何对话框弹出。第二个:
如下代码,我单独拿出来在form中执行正常,但是通过系统服务执行,
报错:DELREG模块错误,错误信息:System.NullReferenceException:未将对象引用设置到对象的实例。在Service.Service.delreg()
代码如下:try
            {
                RegistryKey regkey;
                regkey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Installer\Products\");
                string[] keynames = regkey.GetSubKeyNames();
                foreach (string kName in keynames)
                {
                    string aa = regkey.OpenSubKey(kName).GetValue("ProductName").ToString();
                    if (aa == "Urum Test Service")
                    {
                        regkey.OpenSubKey(kName, true).DeleteValue("ProductName");
                    }
                }
                regkey.Close();
            }
            catch(Exception ex)
            {
                errWrite("DELREG模块错误,错误信息:" + ex);
            }

解决方案 »

  1.   

    第1个 如果你不要在onstart 停止服务启动是线程等待服务启动完成后 再停止服务把.
    第2个 可能是权限不的问题.取不到注册表的值把.服务里没写过注册表. 
      

  2.   

    第二个问题可能是Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Installer\Products\")为null,跟踪下service运行时的路径
      

  3.   

    第二个问题:在Products下,可以确定存在子项的,在form状态下是正常执行