Avatar billede biohazard_666 Nybegynder
18. oktober 2004 - 21:42 Der er 6 kommentarer og
2 løsninger

Selv Destruktion

Hejsa :)
Tænker lige på dette:
Kan man egentlig lave et program som kan slette sig selv? Fx:
Jeg har et login, jeg laver 3*fejl og programmet sletter sig selv :D

Syntes det kunne være sjovt hvis man kunne.. hehe

/Bio - som er i legehumør :D
Avatar billede arne_v Ekspert
18. oktober 2004 - 22:19 #1
Normalt kan en EXE ikke slette sig selv, fordi den er i brug mens den kører
og man kan ikke slette en fil der er i brug.

Hvis du kan starte et andet program i en seperat process som sletter den
første fil efter programmet er afsluttet, så kan det gøres.
Avatar billede biohazard_666 Nybegynder
19. oktober 2004 - 17:10 #2
også det jeg tænkte, med at den er i brug :(
Men ved du evt. hvordan man kan lave det forslag du kommer med???
Avatar billede cronck Nybegynder
19. oktober 2004 - 20:00 #3
Der findes en kommando til at slette et program næste gang windows bliver genstartet... Skal lige se om jeg kan finde den.
Avatar billede cronck Nybegynder
19. oktober 2004 - 20:03 #4
Jo, mindsanten...
Prøv at læse den her:
http://www.thescarms.com/vbasic/FilesInUse.asp

Koden du skal bruge:

Dim sSourceFile As String

sSourceFile = app.path & "\Programnavn.exe"
MoveFileEx(sSourceFile, vbNull, MOVEFILE_DELAY_UNTIL_REBOOT)
Avatar billede sjh Nybegynder
20. oktober 2004 - 22:47 #5
'-------------------------------------------- Form1 --------------------------------------------
' Husk Command1
Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
                        ByVal hwnd As Long, ByVal lpOperation As String, _
                        ByVal lpFile As String, ByVal lpParameters As String, _
                        ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Public Sub Destruktion()
Dim intFree    As Integer
Dim strScript  As String
Dim strVbsFile As String
Dim strExeFile As String

  strVbsFile = App.Path & "\sletexe.vbs"
  strExeFile = App.Path & "\" & App.EXEName & ".exe"

  strScript = "On Error Resume Next" & vbCrLf & _
              "Set fso = CreateObject(""Scripting.FileSystemObject"")" & vbCrLf & _
              "Do While fso.FileExists(""" & strExeFile & """)" & vbCrLf & _
              "fso.DeleteFile """ & strExeFile & """" & vbCrLf & "Loop" & vbCrLf & _
              "fso.DeleteFile """ & strVbsFile & """"

  intFree = FreeFile
  Open strVbsFile For Binary Access Write As #intFree
    Put #intFree, 1, strScript
  Close #intFree

  ShellExecute Me.hwnd, "open", strVbsFile, vbNullString, vbNullString, 1

  End
End Sub

Private Sub Command1_Click()
  Call Destruktion
End Sub
'-------------------------------------------- Form1 --------------------------------------------
Avatar billede biohazard_666 Nybegynder
08. december 2004 - 21:55 #6
Hejsa.. Undskylder lige den LANGE ventetid.. Håber i klarer den ;)
Jeg har testet begge "forsøg", og de må siges at virke :)
Men da det er sjh's eksembel som virker bedst, får han lige flest point.. Håber det er i orden cronck ;)

/Bio
Avatar billede cronck Nybegynder
08. december 2004 - 22:37 #7
Jo, tak... Men du havde ikke behøvet at give point til mig, da sjh jo kom med en bedre løsning :o)

-God Jul, og Godt Nytår
Avatar billede biohazard_666 Nybegynder
08. december 2004 - 22:39 #8
tjaa :) Nu fik du dem ;)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester