写注册表添加Office授权目录

简介: public class RegisOffice { public static IList GetOfficeRegistryKeyInfo() { IL...
public class RegisOffice
    {
        public static IList<OfficeVersion> GetOfficeRegistryKeyInfo()
        {
            IList<OfficeVersion> registriedOfficeVersionList = new List<OfficeVersion>();
            RegistryKey rkCurrentUser = Registry.CurrentUser;
            foreach (var officever in Enum.GetValues(typeof(OfficeVersion)))
            {
                if (IsRegistrationOfficeByOfficeVersion((OfficeVersion)officever))
                    registriedOfficeVersionList.Add((OfficeVersion)officever);
            }
            return registriedOfficeVersionList;
        }

        private static bool IsRegistrationOfficeByOfficeVersion(OfficeVersion officeVersion)
        {
            RegistryKey rkCurrentUser = Registry.CurrentUser;
            RegistryKey rkRegistration = rkCurrentUser.OpenSubKey(string.Format(@"Software\Microsoft\Office\{0}.0\Registration\", (int)officeVersion));
            return rkRegistration == null ? false : true;
        }

        public static void AddOfficeReliancePath()
        {
            try
            {
                string filePath = Environment.CurrentDirectory + "\\" + "your directory" + "\\";
                AddOfficeReliancePath(filePath);
            }
            catch (Exception ex)
            {
               //添加信任地址失败
            }
        }

        public static void AddOfficeReliancePath(string path)
        {
            IList<OfficeVersion> registriedOfficeVersionList = GetOfficeRegistryKeyInfo();
            foreach (var ov in registriedOfficeVersionList)
            {
                AddOfficeReliancePath(ov, OfficeComponents.Word, path);
                AddOfficeReliancePath(ov, OfficeComponents.PowerPoint, path);
            }
        }

        public static void AddOfficeReliancePath(OfficeVersion officeVersion, OfficeComponents officeComponents, string path)
        {
            RegistryKey rkCurrentUser = Registry.CurrentUser;
            RegistryKey rkLocation = rkCurrentUser.OpenSubKey(string.Format("Software\\Microsoft\\Office\\{0}.0\\{1}\\Security\\Trusted Locations", (int)officeVersion, officeComponents.ToString()), true);
            RegistryKey rkLocationSmartLesson = rkLocation.CreateSubKey("LocationSmartLesson");
            rkLocationSmartLesson.SetValue("Path", path);
        }
    }

    public enum OfficeVersion
    {
        Office2003 = 11,
        Office2007 = 12,
        Office2010 = 14,
        Office2013 = 15,
        Office2016 = 16
    }

    public enum OfficeComponents
    {
        Word = 1,
        PowerPoint =2,
        Excel =3,
        Access =4,
        Outlook =5 
    }

目录
相关文章
|
移动开发 Java Android开发
构建高效Android应用:Kotlin协程的实践之路
【2月更文挑战第31天】 在移动开发领域,性能优化和流畅的用户体验一直是开发者追求的目标。随着Kotlin语言的流行,其异步编程解决方案——协程(Coroutines),为Android应用带来了革命性的并发处理能力。本文将深入探讨Kotlin协程的核心概念、设计原理以及在Android应用中的实际应用案例,旨在帮助开发者掌握这一强大的工具,从而提升应用的性能和响应能力。
|
运维 新制造 数据可视化
带你读《智能制造之卓越设备管理与运维实践》之一:设备运维管理的新挑战
本书从工业企业实际需求出发,结合智能制造环境下的紧迫需求,融合作者信息化咨询与项目工作实践,以理论联系实际,将设备的全生命周期管理、精益管理、全员维护、先进的维护策略(预测性维护、智能维护)等管理理与信息化技术进行融合设计,以“IE+IT”的思想实现管理平台与信息平台的平衡发展。
|
5月前
|
监控 算法 测试技术
突破极限: 高负载场景下的单机300M多行正则日志采集不是梦
在当今数字化时代,日志数据已成为企业 IT 运营和业务分析的关键资源。然而,随着业务规模的扩大和系统复杂度的提升,日志数据的体量呈现爆发式增长,给日志采集和处理系统带来了巨大挑战。
472 99
|
8月前
|
vr&ar 云计算 UED
实时云渲染:推动XR技术产业化发展的关键技术之一
近年来,企业利用扩展现实(XR)为用户提供沉浸式虚拟环境,Cloud XR、协同技术和GPU资源池化技术成为XR产业应用的关键。Cloud XR通过云端计算资源实现高效图形渲染,降低终端要求;协同技术助力实时协作,提升团队效率;GPU资源池化则优化资源分配,降低成本。平行云LarkXR提供全面的解决方案,推动XR技术广泛应用。
254 18
|
人工智能 运维 Cloud Native
实战基于阿里云的AIGC在运维领域的探索
传统运维模式已难以应对日益复杂的海量数据和业务需求,效率低下,故障难解。而人工智能的崛起,特别是AIGC技术的出现,为运维领域带来了新的机遇。AIGC能够自动生成运维脚本、分析海量数据,预测潜在故障,甚至提供解决方案,为运维工作注入智能化力量,推动运维向更高效、更智能的方向发展。
17049 19
实战基于阿里云的AIGC在运维领域的探索
|
11月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
170 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
Java 数据库连接 测试技术
Mybatis-PLUS详解
Mybatis-PLUS详解
429 0
|
缓存 监控 固态存储
在Linux中,如何给最小化安装系统,进行基础优化?
在Linux中,如何给最小化安装系统,进行基础优化?
|
网络协议 网络性能优化
基于 Wireshark 分析 TCP 协议
基于 Wireshark 分析 TCP 协议