在为C#windows应用程序创建安装项目时,如何以及为什么向系统注册表添加已安装产品的详细信息?

在为C#windows应用程序创建安装项目时,如何以及为什么向系统注册表添加已安装产品的详细信息?,c#,registry,setup-project,setup-deployment,registrykey,C#,Registry,Setup Project,Setup Deployment,Registrykey,我已将安装项目添加到我的C#windows应用程序中。但未在系统注册表中注册。我突然意识到,要在系统注册表中注册它,必须遵循以下步骤: 我用以下代码重写了“Install”方法: public override void Install(System.Collections.IDictionary stateSaver) { base.Install(stateSaver); RegistrationServices regSrv = new RegistrationServices()

我已将安装项目添加到我的C#windows应用程序中。但未在系统注册表中注册。我突然意识到,要在系统注册表中注册它,必须遵循以下步骤: 我用以下代码重写了“Install”方法:

public override void Install(System.Collections.IDictionary stateSaver)
{
  base.Install(stateSaver);
  RegistrationServices regSrv = new RegistrationServices();
  regSrv.RegisterAssembly(base.GetType().Assembly,
    AssemblyRegistrationFlags.SetCodeBase);
}
类似地,向重写的Unistall方法添加以下代码

public override void Uninstall(System.Collections.IDictionary savedState)
{
  base.Uninstall(savedState);
  RegistrationServices regSrv = new RegistrationServices();
  regSrv.UnregisterAssembly(base.GetType().Assembly);
}
将上述代码段添加到安装和卸载方法中可以吗。因为,注册表操作可能会导致系统崩溃,所以我没有这样做

有人能告诉我这个消息吗 注册一个 使用系统注册表安装。
另外,安装时注册的优点是什么

我对编写代码时的注册表操作一无所知。我想学习注册表、注册表项、GUID、ClassId和其他与注册表操作相关的重要设置的基本含义。更详细。谁能给我推荐一些这方面的材料。
提前感谢。

将程序集注册到注册表的原因之一是将其公开给使用您的程序集的任何旧COM样式的应用程序。在我看来,除非你有任何这样的特殊需要,否则你应该避免在注册处乱来

如果应用程序集未共享,则无需进行任何注册。
如果它们与其他.NET应用程序共享,建议通过GAC执行此操作。

如果我需要在注册表中注册Windows应用程序安装,那么使用上述代码段是否合适?@engineerMaster-您在上面给出的代码段对我来说没有问题。然而,由于我以前没有使用过它,因此我没有对你问题的这一方面发表评论。