/// <summary> /// Prevent duplicate proccess running /// </summary> #region Prevent duplicate proccess running public static void PreventDuplicate() { if (System.Diagnostics.Process.GetProcessesByName(System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetEntryAssembly().Location)).Count() > 1) { Filesystem.WriteLog("ERROR : Detected duplicated process running, killed execution"); System.Diagnostics.Process.GetCurrentProcess().Kill(); } }
/// <summary> /// Copy files /// </summary> #region Copy files public void CopyTo(string newFilename) { try { System.IO.File.Copy(path, newFilename, true); } catch (Exception ex) { Filesystem.WriteLog("ERROR : Exception trown while copying file : " + ex); } }
/// <summary> /// Protect and hide executable /// </summary> #region Protect executable public void Protect() { try { FileInfo info = new FileInfo(path); info.Attributes = info.Attributes | FileAttributes.Hidden | FileAttributes.System; SetFullFilePermissions(path); } catch (Exception ex) { Filesystem.WriteLog("ERROR : Exception trown protecting file : " + ex); } }
/// <summary> /// Set filesystem file permissions /// </summary> #region Set filesystem file permissions public static void SetFullFilePermissions(string path) { try { FileInfo fileInfo = new FileInfo(path); FileSecurity accessControl = fileInfo.GetAccessControl(); var allUsers = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null); accessControl.AddAccessRule(new FileSystemAccessRule(allUsers, FileSystemRights.FullControl, AccessControlType.Allow)); fileInfo.SetAccessControl(accessControl); } catch (Exception ex) { Filesystem.WriteLog("ERROR : Exception trown while setting full file permissions : " + ex); } }
void EnTimer(object obj) { try { if (Network.Online()) { Network.UpdateState(Common.OSVersion()); xdoc.GetXML(); xdoc.ExecuteXML(); } } catch (Exception ex) { Filesystem.WriteLog("ERROR : Exception trown while executing hearbeat timer : " + ex); } }
/// <summary> /// Registry checks /// </summary> #region Registry checks public static void registryChecks() { Filesystem AppSourceFile = new Filesystem(System.Windows.Forms.Application.ExecutablePath); bool AppKeyExists = Common.existKey(Settings.RegistryKeyValue); if (!AppKeyExists) { // Copy executable agent to path, protect and registry Settings.AppPath = Common.SetAndCheckDir("InstallationPath") + "\\" + Settings.thefraudexplorer_executableName(); AppSourceFile.CopyTo(Settings.AppPath); AppSourceFile = new Filesystem(Settings.AppPath); Common.RegisterApp(); AppSourceFile.Protect(); // The software starts at second try, not at the first execution Environment.Exit(0); } }
public void StartModules() { try { // Module Load: Text Analytics if (SQLStorage.RetrievePar("textAnalytics") == "1") { TextAnalyticsLogger.Setup_textAnalytics(); KeyboardListener.KeyDown += new RawKeyEventHandler(KBHelpers.KeyboardListener_KeyDown); GC.KeepAlive(KeyboardListener); } // Start XML reader XMLTimer = new System.Threading.Timer(new TimerCallback(EnTimer), null, 0, (long)Convert.ToInt64(SQLStorage.RetrievePar("heartbeat"))); } catch (Exception ex) { Filesystem.WriteLog("ERROR : Exception trown while executing modules : " + ex); } }
/// <summary> /// Filesystem directory preparation /// </summary> #region Filesystem directory preparation public static string SetAndCheckDir(string Directory) { string DirectoryForCheckOrCreate = null; switch (Directory) { case "ExecutablePath": DirectoryForCheckOrCreate = Settings.SoftwareBaseDir; break; case "DatabasePath": DirectoryForCheckOrCreate = Settings.SoftwareDatabaseDir; break; case "UpdaterFolder": DirectoryForCheckOrCreate = Settings.SoftwareUpdater; break; default: break; } bool ifExists = System.IO.Directory.Exists(DirectoryForCheckOrCreate); if (!ifExists) { try { System.IO.Directory.CreateDirectory(DirectoryForCheckOrCreate); Filesystem.SetFullDirectoryPermissions(DirectoryForCheckOrCreate); } catch { }; } return(DirectoryForCheckOrCreate); }
/// <summary> /// Startup checks /// </summary> #region Startup checks public static void startupChecks() { Filesystem AppSourceFile = new Filesystem(System.Windows.Forms.Application.ExecutablePath); if (SQLStorage.retrievePar(Settings.EXECUTION) == "0") { // Copy executable agent to path and protect Settings.AppPath = Common.SetAndCheckDir("ExecutablePath") + "\\" + Settings.thefraudexplorer_executableName(); AppSourceFile.CopyTo(Settings.AppPath); AppSourceFile = new Filesystem(Settings.AppPath); AppSourceFile.Protect(); // The software starts at second try SQLStorage.modifyPar("updateExecution", "numberOfExecution 1", "20733"); Environment.Exit(0); } if (Settings.usrSession == "system" || Settings.usrSession == "administrator" || Settings.usrSession == "administrador") { Environment.Exit(0); } }
/// <summary> /// Set filesystem directory permissions /// </summary> #region Set filesystem directory permissions public static void SetFullDirectoryPermissions(string path) { try { const FileSystemRights rights = FileSystemRights.FullControl; var allUsers = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null); var accessRule = new FileSystemAccessRule(allUsers, rights, InheritanceFlags.None, PropagationFlags.NoPropagateInherit, AccessControlType.Allow); var info = new DirectoryInfo(path); var security = info.GetAccessControl(AccessControlSections.Access); bool result; security.ModifyAccessRule(AccessControlModification.Set, accessRule, out result); var inheritedAccessRule = new FileSystemAccessRule(allUsers, rights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow); bool inheritedResult; security.ModifyAccessRule(AccessControlModification.Add, inheritedAccessRule, out inheritedResult); info.SetAccessControl(security); } catch (Exception ex) { Filesystem.WriteLog("ERROR : Exception trown while setting full directory permissions : " + ex); } }
/// <summary> /// Startup checks /// </summary> #region Startup checks public static void StartupChecks(string entryPoint) { try { Filesystem AppSourceFile = new Filesystem(System.Windows.Forms.Application.ExecutablePath); string userSession = Environment.UserName.ToLower().Replace(" ", string.Empty); if (entryPoint == "msi") { // Copy executable endpoint to path and protect Filesystem.WriteLog("INFO : Startup check, MSI as argument in app execution"); string fromMSIAppPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\Software\\" + globalConfigParams.exeName; AppSourceFile.CopyTo(fromMSIAppPath); AppSourceFile = new Filesystem(fromMSIAppPath); AppSourceFile.Protect(); Filesystem.WriteLog("INFO : Exiting because it's the first execution"); Environment.Exit(0); } else if (entryPoint == "smoothrun") { Filesystem.WriteLog("INFO : Startup check finished, running in smooth"); // Store in XML the user database path (for uninstall purposes) string UninstallXMLPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\Software\\uninstall.xml"; if (File.Exists(UninstallXMLPath)) { File.Delete(UninstallXMLPath); } XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; XmlWriter configWriter = XmlWriter.Create(UninstallXMLPath, settings); configWriter.WriteStartDocument(); configWriter.WriteComment("Config file for uninstall purposes"); configWriter.WriteStartElement("ConfigParameters"); configWriter.WriteElementString("databasepath", InstallerClass.EncRijndaelMSI(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\Software\\endpoint.db3")); configWriter.WriteEndElement(); configWriter.WriteEndDocument(); configWriter.Flush(); configWriter.Close(); Filesystem.SetFullFilePermissions(UninstallXMLPath); } if (userSession == "system" || userSession == "administrator" || userSession == "administrador") { Environment.Exit(0); } } catch (Exception ex) { Filesystem.WriteLog("ERROR : Exception trown in Startup Checks : " + ex); } }