04. maj 2004 - 19:40Der er
7 kommentarer og 1 løsning
Gemme data i exe
Jeg ved at man kan gemme data i resource filer som så bliver compilet med ind i exe filen. Men er det muligt at bruge disse data, ændre på dem, og så gemme dem i exe filen igen??
Dataen jeg skal have gemt er ting som feks passwords og lign. Og derfor ville det være nemmest hvis jeg ikke skal hen og kryptere og gemme i registrerings db eller i en anden fil.
Med observability og tæt samarbejde sikrer Fibia og Novataris stabilitet og fejlfrie systemer døgnet rundt
9. december 2024
Slettet bruger
04. maj 2004 - 20:14#1
Umiddelbart nej, din exe er jo statisk når den er lavet. Det du måske kunne gøre var at gemme disse ting i en fil, navnet bestemmer du helt selv, men du kan kryptere data'ene når du gemmer og dekryptere når du henter dem ind igen.
Synes godt om
Slettet bruger
04. maj 2004 - 20:15#2
Og jeg læste ikke dine sidste linier ordentligt :-) Men det er efter min bedste overbevisning stadig et godt forslag :-)
En exe bliver jo netop kompilet så den kan køre uden at du har vb installeret. Og jeg vil æde min hat på, at det du forsøger derfor ikke er muligt, for du kan jo ikke kompile igen og igen.
Kun hvis du køre programmet fra VB, men det gør du vel ikkehver gang (så var der ikke brug for en .exe ;o)
martinm_moth.. det er forkert... har selv leget meget med det her... jeg ved så ikke om man kan vælge en "højre"/"bedre" kompilering end det jeg gør.. men når jeg kompiler bruger jeg settings: Compile to Native Code og Optimze for Fast Code, og der kan du åbne dit program med notepad og kigge i det, der er ikke så meget brugligt, men man kan se og ændre labels.caption, de skal bare være nøjagtig samme længde som den originale kompilet label caption var.. dette kan du udnytte ved at åbne den pågældne fil som binary access read og write... ser lige om jeg kan finde mit eksempel...
Kopiere dette ind i en notepad tekst, og gem det som form1.frm og form2.frm Sorry, det er lidt dårligt skrevet, og lidt sjusket... kan nok forbedres, men det er lang tid siden jeg har lavet den... Start et nyt Project, og hent disse to forme ind i projektet, husk at sætte form1 til at være startup objekt, og så kompile den og prøv den, prøv så at skrive Regi i tekstboxen og trykke Save... det skulle stadig virke... Form1: 'dette skal ikke kopieres med...
VERSION 5.00 Object = "{3B7C8863-D78F-101B-B9B5-04021C009402}#1.2#0"; "RICHTX32.OCX" Begin VB.Form Form1 Caption = "Form1" ClientHeight = 1290 ClientLeft = 60 ClientTop = 450 ClientWidth = 4965 LinkTopic = "Form1" ScaleHeight = 1290 ScaleWidth = 4965 StartUpPosition = 3 'Windows Default Begin VB.CommandButton Command1 Caption = "Save" Height = 375 Left = 2040 TabIndex = 8 Top = 720 Width = 1215 End Begin VB.Timer Timer1 Enabled = 0 'False Interval = 1 Left = 7440 Top = 6840 End Begin RichTextLib.RichTextBox RichTextBox5 Height = 4095 Left = 3480 TabIndex = 7 Top = 4800 Visible = 0 'False Width = 2775 _ExtentX = 4895 _ExtentY = 7223 _Version = 393217 Enabled = -1 'True TextRTF = $"Form2.frx":0000 End Begin RichTextLib.RichTextBox RichTextBox4 Height = 4215 Left = 360 TabIndex = 6 Top = 4800 Visible = 0 'False Width = 3015 _ExtentX = 5318 _ExtentY = 7435 _Version = 393217 Enabled = -1 'True TextRTF = $"Form2.frx":008B End Begin RichTextLib.RichTextBox RichTextBox3 Height = 3135 Left = 6720 TabIndex = 5 Top = 1560 Width = 3015 _ExtentX = 5318 _ExtentY = 5530 _Version = 393217 Enabled = -1 'True TextRTF = $"Form2.frx":0116 End Begin RichTextLib.RichTextBox RichTextBox2 Height = 3015 Left = 3360 TabIndex = 4 Top = 1560 Visible = 0 'False Width = 3135 _ExtentX = 5530 _ExtentY = 5318 _Version = 393217 Enabled = -1 'True TextRTF = $"Form2.frx":01A1 End Begin RichTextLib.RichTextBox RichTextBox1 Height = 3255 Left = 240 TabIndex = 3 Top = 1440 Visible = 0 'False Width = 2895 _ExtentX = 5106 _ExtentY = 5741 _Version = 393217 Enabled = -1 'True TextRTF = $"Form2.frx":022C End Begin VB.TextBox Text1 Height = 495 Left = 120 TabIndex = 2 Top = 720 Width = 1695 End Begin VB.Label Label2 Caption = "Set:| " Height = 495 Left = 2160 TabIndex = 1 Top = 0 Width = 2655 End Begin VB.Label Label1 Caption = "Label1" Height = 375 Left = 0 TabIndex = 0 Top = 120 Width = 2535 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Dim b1() As String Dim b2, b3 As String Dim b4 As String Dim b5() As String
Private Sub Command1_Click() Close #1 Close #2 FileCopy App.Path & "\" & App.EXEName & ".exe", App.Path & "\temp.exe" Open App.Path & "\temp.exe" For Binary Access Read As #1 If LOF(1) = 0 Then Exit Sub Dim a1 As String a1 = Space$(LOF(1)) Get #1, , a1 Close #1 Dim a3 As Long Dim a4, a5, a6 As String a3 = InStr(1, a1, "Set:") a4 = Mid$(a1, 1, a3 - 1) a5 = Mid(a1, a3 + 5 + Len(Text1.Text)) a6 = a4 & "Set:|" & Text1.Text & a5 Open App.Path & "\temp.exe" For Binary Access Write As #2 Dim a2 As String a2 = a6 Put #2, , a2 Close #2 DoEvents Shell App.Path & "\temp.exe " & App.EXEName & "|" & Form1.Top & "|" & Form1.Left, vbHide End End Sub
Private Sub Command2_Click()
End Sub
Private Sub Command3_Click()
End Sub
Private Sub Command4_Click()
End Sub
Private Sub Form_Load()
If Command <> "" Then b4 = Mid(Command, 1, 7) If b4 = "slettemp" Then b5 = Split(Command, "|") Form1.Top = b5(1) Form1.Left = b5(2) DoEvents On Error GoTo 1 Kill App.Path & "\temp.exe" DoEvents GoTo 2 1: Timer1.Enabled = True Exit Sub 2: GoTo 3 End If
Form2.Text1 = Command Load Form2 Form1.Hide Exit Sub End If 3: DoEvents
jakob12345: Ja det kan godt lave sig gøre, ved at åbne din exe fil og ændre noget af den statiske test der er i den, testen skal dog have samme længde som den man ændre. Det er en MEGET dårlig ide at gøre dette, og dataen skal adligevel krypteres (hvis det skal være sikkert)
har du prøvet det svar jeg gav??.. virker det? var det det du ledte efter?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.