首页 > 解决方案 > 使用 c# 安装后从程序和功能中隐藏 MS Office 加载项

问题描述

我不想在安装后从程序和控制面板中显示我的 powerpoint 插件。

为此,我尝试在手动添加此插件后在注册表HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall中添加systemcomponent属性,该插件已成功从程序和功能中隐藏,但是当我尝试从我的代码中执行此操作时,出现异常键入ThrowUnauthorizedAccessException(异常错误消息“无法写入注册表项”)虽然我在管理员模式下运行该.exe 。我没有弄清楚如何使用 C# 代码在“ HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall ”目录中添加此属性。

如果这不是正确的解决方案,那么我还能做什么?

这是我的代码

RegistryKey registry = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", true);

        foreach (var subkey in registry.GetSubKeyNames())
        {
            RegistryKey productKey = registry.OpenSubKey(subkey);
            if (productKey != null)
            {
                foreach (var value in productKey.GetValueNames())
                {
                    string keyValue = Convert.ToString(productKey.GetValue(value));

                    if (keyValue.ToLower().Contains("myaddin"))
                    {
                        try
                        {
                            productKey.SetValue("SystemComponent", 1, RegistryValueKind.DWord);
                            productKey.Close();
                            return;
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }
                }
            }
        }

标签: c#registryadd-in

解决方案


推荐阅读