Beispiel #1
0
        public void DLLRegisterServer(int regMode)
        {
            //register dll
            //same as:
            //post build event: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe $(TargetPath) /codebase

            RegistrationServices regAsm = new RegistrationServices();
            bool bResult = regAsm.RegisterAssembly(
                ComponentConfig.typeToRegister.Assembly,
                AssemblyRegistrationFlags.SetCodeBase);

            GME.Util.MgaRegistrar reg = new GME.Util.MgaRegistrar();
            if ((int)GME.MGA.Core.GMEInterfaceVersion_enum.GMEInterfaceVersion_Current != (int)((GME.MGA.Core.IGMEVersionInfo)reg).version)
            {
                throw new Exception("MgaInterfaceVersion mismatch: this assembly is using " +
                                    (int)GME.MGA.Core.GMEInterfaceVersion_enum.GMEInterfaceVersion_Current +
                                    " but the GME interface version is " + (int)((GME.MGA.Core.IGMEVersionInfo)reg).version +
                                    "\n\nPlease install a compatible GME version or update the interop dlls.");
            }
            reg.RegisterComponent(
                regAsm.GetProgIdForType(ComponentConfig.typeToRegister),
                GME.MGA.componenttype_enum.COMPONENTTYPE_INTERPRETER,
                ComponentConfig.componentName,
                regacc_translate(regMode));

            reg.set_ComponentExtraInfo(regacc_translate(regMode), regAsm.GetProgIdForType(ComponentConfig.typeToRegister), "Icon", ComponentConfig.iconId);

            if (!ComponentConfig.paradigmName.Equals("*"))
            {
                reg.Associate(regAsm.GetProgIdForType(ComponentConfig.typeToRegister), ComponentConfig.paradigmName, (GME.Util.regaccessmode_enum)regMode);
            }
        }
Beispiel #2
0
        public bool RegisterAsm(string filepath)
        {
            Assembly             asm    = Assembly.LoadFile(defaultCSMPath + filepath);
            RegistrationServices regAsm = new RegistrationServices();

            return(regAsm.RegisterAssembly(asm, AssemblyRegistrationFlags.SetCodeBase));
        }
Beispiel #3
0
        private void Regasm(bool register)
        {
            string file = base.Context.Parameters["Assembly"];

            if (string.IsNullOrEmpty(file))
            {
                throw new InstallException("Assembly not defined");
            }

            if (!File.Exists(file))
            {
                return;
            }

            RegistrationServices regsrv = new RegistrationServices();

            Assembly assembly = Assembly.LoadFrom(file);

            if (register)
            {
                regsrv.RegisterAssembly(assembly, AssemblyRegistrationFlags.SetCodeBase);
            }
            else
            {
                try
                {
                    regsrv.UnregisterAssembly(assembly);
                }
                catch
                {
                    //Exceptions are ignored: even if the unregistering failes
                    //it should notprevent the user from uninstalling
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// 注册程序集到系统
        /// </summary>
        /// <param name="assemblyName"></param>
        /// <returns></returns>
        public int RegistAssembly(string assemblyName)
        {
            if (!IsAdministrator())
            {
                return(RunAsAdmin(assemblyName, "-regist"));
            }
            Assembly             assembly             = Assembly.UnsafeLoadFrom(assemblyName);
            RegistrationServices registrationServices = new RegistrationServices();

            try
            {
                bool flag3 = registrationServices.RegisterAssembly(assembly, AssemblyRegistrationFlags.SetCodeBase);
                if (!flag3)
                {
                    return(-3);
                }
            }
            catch (UnauthorizedAccessException ex)
            {
                // 无权限
                Console.Error.Write(ex.Message);
                return(-1);
            }catch (Exception ex)
            {
                // 其他错误
                Console.Error.Write(ex.Message);
                return(-2);
            }
            return(0);
        }
Beispiel #5
0
        static void Main(string[] args)
        {
            // Get the path to the assembly.
            Console.WriteLine("Please enter the path to the .NET binary");
            Console.WriteLine(@"Example: C:\MyStuff\Blah\myDotNetServer.dll");
            Console.Write("Path: ");
            string pathToAssembly = Console.ReadLine();

            // Generate type lib for this assembly.
            UCOMITypeLib i = GenerateTLBFromAsm(pathToAssembly);

            // Ask if user wants to register this server with COM.
            int regValue;

            Console.WriteLine("Would you like to register this .NET library with COM?");
            Console.Write("1 = yes or 0 = no ");
            regValue = Console.Read();

            if (regValue == 1)
            {
                RegistrationServices rs  = new RegistrationServices();
                Assembly             asm = Assembly.LoadFrom(pathToAssembly);
                rs.RegisterAssembly(asm, AssemblyRegistrationFlags.None);
                Console.WriteLine(".NET assembly registered with COM!");
            }
        }
Beispiel #6
0
        ///////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////
        public void RegisterSystemWebAssembly(int doReg, out IntPtr exception)
        {
            exception = IntPtr.Zero;

            try {
                Assembly             webAssembly = Assembly.GetExecutingAssembly();
                RegistrationServices rs          = new RegistrationServices();

                if (doReg != 0)
                {
                    if (!rs.RegisterAssembly(webAssembly, AssemblyRegistrationFlags.None))
                    {
                        exception = Marshal.StringToBSTR((new Exception(SR.GetString(SR.Unable_To_Register_Assembly, webAssembly.FullName))).ToString());
                    }
                }
                else
                {
                    if (!rs.UnregisterAssembly(webAssembly))
                    {
                        exception = Marshal.StringToBSTR((new Exception(SR.GetString(SR.Unable_To_UnRegister_Assembly, webAssembly.FullName))).ToString());
                    }
                }
            }
            catch (Exception e) {
                exception = Marshal.StringToBSTR(e.ToString());
            }
        }
        static int Main(string[] args)
        {
            try
            {
                // Copy from the current directory to the target directory:
                Directory.CreateDirectory(ComClassDirectory);
                File.Copy(ComClassAssemblyName, ComClassAssemblyPath, true);

                var assembly = Assembly.LoadFile(ComClassAssemblyPath);

                // PER USER INSTALL - COMMENT OUT FOR SYSTEM-WIDE INSTALL (REQUIRES ADMIN)
                RegOverridePredefKey(Registry.ClassesRoot.Handle,
                                     Registry.CurrentUser
                                     .OpenSubKey("SOFTWARE")
                                     .OpenSubKey("Classes").Handle);

                var registrationService = new RegistrationServices();
                registrationService.RegisterAssembly(assembly, AssemblyRegistrationFlags.SetCodeBase);
            }
            catch (Exception)
            {
                // This app runs headless and there's nothing to do
                // a more realistic example would have exception-specific return codes
                return(-1);
            }

            return(0);
        }
Beispiel #8
0
        public static void Register()
        {
            var regservice = new RegistrationServices();

            regservice.RegisterAssembly(Assembly.LoadFrom("YIME.Core.dll"),
                                        AssemblyRegistrationFlags.SetCodeBase);
            var iconname = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location),
                                                  "YIME.Core.dll");

            Console.WriteLine(iconname);
            Console.WriteLine(CultureInfo.GetCultureInfo("zh-cn").LCID);
            //Insert code here.
            var p      = new ITfInputProcessorProfiles();
            var result = p.Register(CLSID_TEXTSERVICE);

            Console.WriteLine(result.ToString());
            result = p.AddLanguageProfile(CLSID_TEXTSERVICE, new LangID((ushort)CultureInfo.GetCultureInfo("zh-cn").LCID), GUID_PROFILE,
                                          name.ToCharArray(), (uint)name.ToCharArray().Length, iconname.ToCharArray(), (uint)iconname.Length, 0);

            Console.WriteLine(result.ToString());
            var c = new ITfCategoryMgr();

            foreach (var supportCategory in SupportCategories)
            {
                var r = c.RegisterCategory(CLSID_TEXTSERVICE, supportCategory, CLSID_TEXTSERVICE);
                Console.WriteLine(r.ToString());
            }
        }
Beispiel #9
0
        /// <summary>
        /// Registers the COM types in the specified assembly.
        /// </summary>
        public static List <System.Type> RegisterComTypes(string filePath)
        {
            // load assmebly.
            Assembly assembly = Assembly.LoadFrom(filePath);

            // check that the correct assembly is being registered.
            VerifyCodebase(assembly, filePath);

            RegistrationServices services = new RegistrationServices();

            // list types to register/unregister.
            List <System.Type> types = new List <System.Type>(services.GetRegistrableTypesInAssembly(assembly));

            // register types.
            if (types.Count > 0)
            {
                // unregister types first.
                if (!services.UnregisterAssembly(assembly))
                {
                    throw new ApplicationException("Unregister COM Types Failed.");
                }

                // register types.
                if (!services.RegisterAssembly(assembly, AssemblyRegistrationFlags.SetCodeBase))
                {
                    throw new ApplicationException("Register COM Types Failed.");
                }
            }

            return(types);
        }
Beispiel #10
0
        public override void Install(IDictionary stateSaver)
        {
            base.Install(stateSaver);
            RegistrationServices regSrv = new RegistrationServices();

            regSrv.RegisterAssembly(base.GetType().Assembly, AssemblyRegistrationFlags.SetCodeBase);
        }
Beispiel #11
0
        private void DoRegister(bool allUsers)
        {
            try
            {
                if (!allUsers)
                {
                    OverrideHKCR();
                }

                var rs = new RegistrationServices();
                rs.RegisterAssembly(Assembly.LoadFrom(Path.Combine(crtDir, @"KeContextMenuHandler.dll")),
                                    AssemblyRegistrationFlags.SetCodeBase);

                ShellExtensionManager.RegisterShellExtContextMenuHandler(allUsers);

                if (!allUsers)
                {
                    OverrideHKCR(true);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(this, e.Message + "\r\n\r\n" + e.StackTrace);
            }
        }
Beispiel #12
0
        /// <summary>
        /// Register assembly
        /// </summary>
        public void Install()
        {
            if (!File.Exists(dll))
            {
                throw new FileNotFoundException($"Target assembly is not found: \"{dll}\"");
            }

            var key = Registry.CurrentUser.OpenSubKey(@"Software\Classes", true);

            try
            {
                // temporarily override HKCR to HKCU\Software\Classes
                var ret = RegOverridePredefKey(HKEY_CLASSES_ROOT, key.Handle.DangerousGetHandle());

                if (ret != ERROR_SUCCESS)
                {
                    throw new Exception($"Cannot override HKEY_CLASSES_ROOT (error code {ret})");
                }

                // register assembly using RegistrationServices API

                var rs  = new RegistrationServices();
                var asm = Assembly.LoadFrom(dll);
                rs.RegisterAssembly(asm, AssemblyRegistrationFlags.SetCodeBase);
            }
            finally
            {
                // restore HKCR back
                RegOverridePredefKey(HKEY_CLASSES_ROOT, IntPtr.Zero);
                key.Close();
            }
        }
        public static void RegisterSelf()
        {
            RegistrationServices aRS          = new RegistrationServices();
            Assembly             thisAssembly = Assembly.GetExecutingAssembly();

            aRS.RegisterAssembly(thisAssembly, AssemblyRegistrationFlags.SetCodeBase);
        }
        protected override void OnCommitted(IDictionary savedState)
        {
            base.OnCommitted(savedState);
            Assembly             assembly             = Assembly.LoadFile(Assembly.GetExecutingAssembly().Location);
            RegistrationServices registrationServices = new RegistrationServices();

            registrationServices.RegisterAssembly(assembly, AssemblyRegistrationFlags.SetCodeBase);
        }
Beispiel #15
0
        public static void RegisterCom()
        {
            var rs = new RegistrationServices();
            var a  = new MediaMonkeyAkkaProxy();

            rs.RegisterAssembly(typeof(MediaMonkeyAkkaProxy).Assembly,
                                AssemblyRegistrationFlags.SetCodeBase);
        }
Beispiel #16
0
 public static void RegisterServer(Assembly assemblyToRegister)
 {
     if (ComRegister != null)
     {
         RegistrationServices reg = new RegistrationServices();
         reg.RegisterAssembly(assemblyToRegister, AssemblyRegistrationFlags.SetCodeBase);
         ComRegister();
     }
 }
 public static void Register()
 {
     try
     {
         RegistrationServices svc = new RegistrationServices();
         svc.RegisterAssembly(typeof(Program).Assembly, AssemblyRegistrationFlags.SetCodeBase);
     }
     catch (Exception e) { throw new ApplicationException(e.Message, e); }
 }
Beispiel #18
0
        public void DLLRegisterServer(int regMode)
        {
            //register dll
            //same as:
            //post build event: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe $(TargetPath) /codebase

            RegistrationServices regAsm = new RegistrationServices();
            bool bResult = regAsm.RegisterAssembly(ComponentConfig.typeToRegister.Assembly, AssemblyRegistrationFlags.SetCodeBase);
        }
Beispiel #19
0
        /// <summary>
        /// Регистрация сборки
        /// </summary>
        /// <param name="asmFile">Ссылка на файл сборки</param>
        /// <param name="codebase">Флаг регистрации codebase</param>
        /// <returns>Возвращает результат регистрации: Installed или Fail</returns>
        public static RegistrationResult Install(FileInfo asmFile, bool codebase = false)
        {
            var assembly = ResolveAssembly(asmFile);

            var services = new RegistrationServices();

            bool regResult = services.RegisterAssembly(assembly, codebase ? AssemblyRegistrationFlags.SetCodeBase : AssemblyRegistrationFlags.None);

            return(regResult ? RegistrationResult.Installed : RegistrationResult.Fail);
        }
Beispiel #20
0
        public override void Install(IDictionary stateSaver)
        {
            base.Install(stateSaver);
            RegistrationServices regsrv = new RegistrationServices();

            if (!regsrv.RegisterAssembly(this.GetType().Assembly, AssemblyRegistrationFlags.SetCodeBase))
            {
                throw new InstallException("Failed To Register for COM");
            }
        }
Beispiel #21
0
        /// <summary>
        /// When overridden in a derived class, performs the installation.
        /// </summary>
        /// <param name="stateSaver">An <see cref="T:System.Collections.IDictionary"/> used to save information needed to perform a commit, rollback, or uninstall operation.</param>
        public override void Install(IDictionary stateSaver)
        {
            base.Install(stateSaver);
            RegistrationServices regServices = new RegistrationServices();

            if (!regServices.RegisterAssembly(GetType().Assembly, AssemblyRegistrationFlags.SetCodeBase))
            {
                throw new InstallException("Error during registration of " + GetType().Assembly.FullName);
            }
        }
Beispiel #22
0
        public override void Install(IDictionary stateSaver)
        {
            base.Install(stateSaver);

            // Call RegistrationServices.RegisterAssembly to register the classes in
            // the current managed assembly to enable creation from COM.
            var regService = new RegistrationServices();

            regService.RegisterAssembly(GetType().Assembly, AssemblyRegistrationFlags.SetCodeBase);
        }
Beispiel #23
0
        public override void Install(System.Collections.IDictionary stateSaver)
        {
            System.Windows.Forms.MessageBox.Show("开始执行安装类自定义操作...");
            base.Install(stateSaver);
            RegistrationServices regsrv = new RegistrationServices();

            if (!regsrv.RegisterAssembly(this.GetType().Assembly, AssemblyRegistrationFlags.SetCodeBase))
            {
                throw new InstallException("Failed To Register for COM");
            }
        }
Beispiel #24
0
        public override void Install(IDictionary stateSaver)
        {
            base.Install(stateSaver);
            RegistrationServices regsrv = new RegistrationServices();

            if (!regsrv.RegisterAssembly(typeof(ComInstaller).Assembly, AssemblyRegistrationFlags.SetCodeBase))
            {
                throw new Exception("Failed to register for COM interop.");
            }
            Utilities.DebugLine("[MsasSink] Installed COM assembly: " + typeof(ComInstaller).Assembly);
        }
Beispiel #25
0
        public override void Install(System.Collections.IDictionary stateSaver)
        {
            base.Install(stateSaver);
            RegistrationServices regsrv = new RegistrationServices();

            if (!regsrv.RegisterAssembly(this.GetType().Assembly,
                                         AssemblyRegistrationFlags.SetCodeBase))
            {
                throw new InstallException("Libronツールバーの登録に失敗しました");
            }
        }
Beispiel #26
0
        public override void Install(IDictionary stateSaver)
        {
            base.Install(stateSaver);

            // Call RegistrationServices.RegisterAssembly to register the classes in
            // the current managed assembly to enable creation from COM.
            RegistrationServices regService = new RegistrationServices();

            regService.RegisterAssembly(
                Assembly.LoadFrom(@"AobaContextMenu.dll"),
                AssemblyRegistrationFlags.SetCodeBase);
        }
Beispiel #27
0
        private void materialRaisedButton1_Click(object sender, EventArgs e)
        {
            //args = (
            //    from x in args
            //    select x.ToLower()).ToArray<string>();
            string dllsToRegister = pathField.Text;

            Assembly             assembly            = Assembly.LoadFrom(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), dllsToRegister));
            RegistrationServices registrationService = new RegistrationServices();

            registrationService.RegisterAssembly(assembly, AssemblyRegistrationFlags.SetCodeBase);
        }
Beispiel #28
0
        /// <summary>
        /// Register the assembly for COM interop
        /// </summary>
        /// <param name="stateSaver">An IDictionary used to save information
        /// needed to perform a commit, rollback, or uninstall operation.
        /// </param>
        public override void Install(IDictionary stateSaver)
        {
            base.Install(stateSaver);

            RegistrationServices regSrv = new RegistrationServices();

            System.Reflection.Assembly assembly = base.GetType().Assembly;

            AssemblyRegistrationFlags flags = AssemblyRegistrationFlags.SetCodeBase;

            regSrv.RegisterAssembly(assembly, flags);
        }
Beispiel #29
0
        public override void Install(System.Collections.IDictionary stateSaver)
        {
            base.Install(stateSaver);
            RegistrationServices regSrv = new RegistrationServices();

            regSrv.RegisterAssembly(base.GetType().Assembly,
                                    AssemblyRegistrationFlags.SetCodeBase);

            //Add a new context menu item.
            RegistryKey regmenu = null;
            RegistryKey regcmd  = null;

            try
            {
                regmenu = Registry.ClassesRoot.CreateSubKey(MenuName);
                if (regmenu != null)
                {
                    regmenu.SetValue("", "Sync with OneSync 4");
                }
                regcmd = Registry.ClassesRoot.CreateSubKey(Command);
                if (regcmd != null)
                {
                    regcmd.SetValue("", "\"" + Assembly.GetExecutingAssembly().Location + "\" \"%1\"");
                }

                regmenu = Registry.ClassesRoot.CreateSubKey(AppMenuName);
                if (regmenu != null)
                {
                    regmenu.SetValue("", "Open OneSync 4");
                }
                regcmd = Registry.ClassesRoot.CreateSubKey(AppCommand);
                if (regcmd != null)
                {
                    regcmd.SetValue("", "\"" + Assembly.GetExecutingAssembly().Location + "\"");
                }
            }
            catch (Exception)
            {
                //Do nothing?!
            }
            finally
            {
                if (regmenu != null)
                {
                    regmenu.Close();
                }
                if (regcmd != null)
                {
                    regcmd.Close();
                }
            }
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //Use: Registry Install / Uninstall
        //
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public static void InstallRegistry(IDictionary stateSaver, Assembly asm)
        {
            if (CommonUtils.Is64BitOperatingSystem())
            {
                RegAsm64("/codebase", asm);
            }
            else
            {
                RegistrationServices regsrv = new RegistrationServices();

                regsrv.RegisterAssembly(asm, AssemblyRegistrationFlags.SetCodeBase);
            }
        }