コード例 #1
0
ファイル: WindowsRegistry.cs プロジェクト: radtek/HinxCor
    /// <summary>
    /// -1 拓展名不合法(false), 1 不含感知类型(true) ,2 不含默认打开路径(true), 3 不含 CT(true) , 0  normal true
    /// </summary>
    /// <param name="extensionName"></param>
    /// <param name="iconpath"></param>
    /// <param name="type"></param>
    /// <param name="defaultappName"></param>
    /// <param name="contentType"></param>
    /// <returns></returns>
    public static int RegisterDefaultApp(string extensionName, string iconpath, PerceivedType type = PerceivedType.empty, string defaultappName = "", string contentType = "")
    {
        if (extensionName.Contains("."))
        {
            bool isExtNameLeagl = extensionName.LastIndexOf('.') == 0;
            if (!isExtNameLeagl)
            {
                return(-1);
            }
        }
        else
        {
            extensionName = "." + extensionName;
        }

        RegistryKey root = Registry.ClassesRoot;
        var         k    = root.OpenOrCreate(extensionName);

        string folderName = extensionName.Remove(0, 1);

        k.SetValue(string.Empty, "Mobiano\\" + folderName);

        var kmobiano    = root.OpenOrCreate("Mobiano");
        var ext         = kmobiano.OpenOrCreate(folderName);
        var defaultIcon = ext.OpenOrCreate("DefaultIcon");

        defaultIcon.SetValue(string.Empty, iconpath);

        if (type == PerceivedType.empty)
        {
            return(1);
        }
        k.SetValue("PreceivedType", type.ToString());

        if (string.IsNullOrEmpty(defaultappName))
        {
            return(2);
        }
        var shell = ext.OpenOrCreate("shell");
        var open  = shell.OpenOrCreate("open");
        var cmd   = open.OpenOrCreate("command");

        cmd.SetValue(string.Empty, defaultappName);

        if (string.IsNullOrEmpty(contentType))
        {
            return(3);
        }
        k.SetValue("Content Type", contentType);
        return(0);
    }
コード例 #2
0
        /// <summary>
        /// Adds a perceived instance to the list.
        /// </summary>
        /// <param name="extension">The file extension. May not be null.</param>
        /// <param name="type">The perceived type.</param>
        public static Perceived AddPerceived(string extension, PerceivedType type)
        {
            if (extension == null)
            {
                throw new ArgumentNullException(nameof(extension));
            }

            var perceived = new Perceived(extension, type, PerceivedTypeSource.HardCoded);

            lock (SyncObject)
            {
                s_perceivedTypes[perceived.Extension] = perceived;
            }

            return(perceived);
        }
コード例 #3
0
 private static extern int AssocGetPerceivedType(
     [MarshalAs(UnmanagedType.LPWStr)] string pszExt,
     ref PerceivedType ptype,
     ref PerceivedTypeSource pflag,
     ref IntPtr ppszType);
コード例 #4
0
 private Perceived(string extension, PerceivedType perceivedType, PerceivedTypeSource perceivedTypeSource)
 {
     Extension           = extension;
     PerceivedType       = perceivedType;
     PerceivedTypeSource = perceivedTypeSource;
 }