/// <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); }
/// <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); }
private static extern int AssocGetPerceivedType( [MarshalAs(UnmanagedType.LPWStr)] string pszExt, ref PerceivedType ptype, ref PerceivedTypeSource pflag, ref IntPtr ppszType);
private Perceived(string extension, PerceivedType perceivedType, PerceivedTypeSource perceivedTypeSource) { Extension = extension; PerceivedType = perceivedType; PerceivedTypeSource = perceivedTypeSource; }