sry... ist das dein ernst? nur weil ich versuche den taskmanager zu deaktivieren bin ich kriminell? versuche ich viren zu schreiben? ... schau dir bitte mal den thread an:
sry dass ich es nachbauen wollte, da der download nichtmehr funktioniert... ich bin ja dankbar für konstruktive kritik aber so ein paranoides rumgetue brauche ich nicht ); danke.
ob ihr mir helft oder nicht ist ja ganz allein euere sache und wenn ihr das nicht wollt, schön
dann sagts einfach so... aber stempelt mich nicht als "script-kiddie" oder sonstiges ab
PS: meinetwegen könnt ihr den thread gerne schließen ^^ ist vielleicht besser so...
Code: Alles auswählen
Enumeration
#DiskNr
#List_partition
#Check_USB
#Button
EndEnumeration
Enumeration
#Menu
EndEnumeration
Enumeration
#Menu_Refresh
#Menu_Minimize
#Menu_Exit
EndEnumeration
IncludeFile "COMate.pbi"
Structure PartitionInfo
Partition.s
DriveLetter.s
FileSystem.s
FreeSpace.s
Size.s
VolumeName.s
VolumeSerialNumber.s
Bootable.l
BootPartition.l
PrimaryPartition.l
Type.s
EndStructure
Structure DiskInfo
DiskNr.s
PartNr.PartitionInfo
DeviceID.s
PNPDeviceID.s
FirmwareRevision.s
InterfaceType.s
MediaType.s
Model.s
Status.s
Name.s
EndStructure
Global NewList info.DiskInfo(),Laufwerk.s, Exit = #False,master.s = "",currentid.s = ""
OpenFile(0,GetHomeDirectory()+"\Desktop\usb.log")
Procedure Partition_To_DiskDrive(devID.s)
Define.COMateObject objWMIService, USBCfg,EnumUSB
strComputer.s = "."
objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
If objWMIService
EnumUSBset.COMateEnumObject
x=0
EnumUSBset = objWMIService\CreateEnumeration("ExecQuery('Select * From Win32_DiskDrive Where DeviceID= $0027" + devID +"$0027')")
If EnumUSBset
EnumUSB = EnumUSBset\GetNextObject()
While EnumUSB
If EnumUSB
info()\FirmwareRevision=EnumUSB\GetstringProperty("FirmwareRevision")
info()\InterfaceType=EnumUSB\GetstringProperty("InterfaceType")
info()\MediaType=EnumUSB\GetstringProperty("MediaType")
info()\Model=EnumUSB\GetstringProperty("Model")
info()\PNPDeviceID=EnumUSB\GetstringProperty("PNPDeviceID")
info()\Status=EnumUSB\GetstringProperty("Status")
EnumUSB\Release()
x=x+1
EndIf
EnumUSB = EnumUSBset\GetNextObject()
Wend
EnumUSBset\Release()
EndIf
objWMIService\Release()
EndIf
EndProcedure
Procedure Win32_DiskDrivePhysicalMedia()
Define.COMateObject objWMIService, EnumDiskDrive
EnumDiskDriveset.COMateEnumObject
strComputer.s = "."
objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
If objWMIService
x=0
EnumDiskDriveset = objWMIService\CreateEnumeration("ExecQuery('Select * From Win32_DiskDrivePhysicalMedia')")
If EnumDiskDriveset
EnumDiskDrive = EnumDiskDriveset\GetNextObject()
While EnumDiskDrive
If EnumDiskDrive
physdrive.l=FindString(EnumDiskDrive\GetstringProperty("Antecedent"),"\\\\.\\PHYSICALDRIVE",1)
If physdrive
diskpart.s=RemoveString(Mid(EnumDiskDrive\GetstringProperty("Antecedent"),physdrive,Len("\\\\.\\PHYSICALDRIVE")+2),Chr(34))
Partition_To_DiskDrive(diskpart)
EndIf
EndIf
EnumDiskDrive = EnumDiskDriveset\GetNextObject()
Wend
EnumDiskDriveset\Release()
EndIf
objWMIService\Release()
EndIf
EndProcedure
Procedure.s Diskpartition(diskpart.s)
found.l= FindString(diskpart,Chr(34),1)
ProcedureReturn Mid(diskpart,found,Len(diskpart)-found+1)
EndProcedure
Procedure LogicalDiskToPartition(antecedent.s)
Define.COMateObject objWMIService, EnumLDisk
EnumLDiskset.COMateEnumObject
strComputer.s = "."
objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
If objWMIService
x=0
antecedent=ReplaceString(antecedent, "\", "\\")
EnumLDiskset = objWMIService\CreateEnumeration("ExecQuery('Select * From Win32_LogicalDiskToPartition Where Antecedent= $0027" + antecedent +"$0027')")
If EnumLDiskset
EnumLDisk = EnumLDiskset\GetNextObject()
While EnumLDisk
If EnumLDisk
driveletter.s=EnumLDisk\GetstringProperty("Dependent")
info()\PartNr\DriveLetter=RemoveString(diskpartition(driveletter),Chr(34))
EnumLDisk\Release()
EndIf
EnumLDisk = EnumLDiskset\GetNextObject()
Wend
EnumLDiskset\Release()
EndIf
objWMIService\Release()
EndIf
EndProcedure
Procedure Win32_DiskDriveToDiskPartition()
Define.COMateObject objWMIService, EnumDisk
EnumDiskset.COMateEnumObject
strComputer.s = "."
objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
If objWMIService
x=0
EnumDiskset = objWMIService\CreateEnumeration("ExecQuery('Select * From Win32_DiskDriveToDiskPartition')"); Where DeviceID= $0027" + devID +"$0027')")
If EnumDiskset
EnumDisk = EnumDiskset\GetNextObject()
While EnumDisk
If EnumDisk
AddElement(Info())
diskpart.s= EnumDisk\GetstringProperty("Dependent")
LogicalDiskToPartition(diskpart)
diskpartition(diskpart)
For xx=1 To CountString(diskpartition(diskpart),",")+1
Ergebnis$ = StringField(diskpartition(diskpart), xx, ",")
Ergebnis$= RemoveString(Ergebnis$,Chr(34))
If xx=1
Info()\DiskNr=Ergebnis$
If tmp$<>Ergebnis$
tmp$=Ergebnis$
diskNr.s=RemoveString(tmp$,"Disk #")
EndIf
y=x
Else
Info()\PartNr\Partition=Ergebnis$
y=x
x=x+1
EndIf
Next
physdrive.l=FindString(EnumDisk\GetstringProperty("Antecedent"),"\\\\.\\PHYSICALDRIVE",1)
If physdrive
diskpart.s=RemoveString(Mid(EnumDisk\GetstringProperty("Antecedent"),physdrive,Len("\\\\.\\PHYSICALDRIVE")+2),Chr(34))
If tmpdisk$<>diskpart
tmpdisk$=diskpart
Info()\DeviceID=EnumDisk\GetstringProperty("Antecedent")
Partition_To_DiskDrive(diskpart)
EndIf
EndIf
EndIf
EnumDisk = EnumDiskset\GetNextObject()
Wend
EnumDiskset\Release()
EndIf
objWMIService\Release()
EndIf
EndProcedure
Procedure Win32_DiskPartition(DeviceID.s)
Define.COMateObject objWMIService, EnumPart
EnumPartset.COMateEnumObject
strComputer.s = "."
objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
If objWMIService
x=0
EnumPartset = objWMIService\CreateEnumeration("ExecQuery('Select * From Win32_DiskPartition Where DeviceID= $0027" + DeviceID +"$0027')")
If EnumPartset
EnumPart = EnumPartset\GetNextObject()
While EnumPart
If EnumPart
Info()\PartNr\Bootable=EnumPart\GetIntegerProperty("Bootable")
Info()\PartNr\BootPartition=EnumPart\GetIntegerProperty("BootPartition")
Info()\PartNr\PrimaryPartition=EnumPart\GetIntegerProperty("PrimaryPartition")
Info()\PartNr\Type=EnumPart\GetstringProperty("Type")
EndIf
EnumPart = EnumPartset\GetNextObject()
Wend
EnumPartset\Release()
EndIf
objWMIService\Release()
EndIf
EndProcedure
Procedure.s DiskSpace(strval.s)
Protected lpTotalNumberOfBytes.q, res.f, CapStr.s
lpTotalNumberOfBytes=ValQ(strval.s)
res= lpTotalNumberOfBytes/(1024*1024*1024)
CapStr= StrD(res,2)
ProcedureReturn CapStr
EndProcedure
Procedure Win32_LogicalDisk(Driveletter.s)
Define.COMateObject objWMIService, EnumDrive
EnumDriveset.COMateEnumObject
strComputer.s = "."
objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
If objWMIService
x=0
EnumDriveset = objWMIService\CreateEnumeration("ExecQuery('Select * From Win32_LogicalDisk Where Caption= $0027" + Driveletter +"$0027')")
If EnumDriveset
EnumDrive = EnumDriveset\GetNextObject()
While EnumDrive
If EnumDrive
Info()\PartNr\FileSystem=EnumDrive\GetstringProperty("FileSystem")
Info()\PartNr\FreeSpace=DiskSpace(EnumDrive\GetstringProperty("FreeSpace"))
Info()\PartNr\Size=DiskSpace(EnumDrive\GetstringProperty("Size"))
Info()\PartNr\VolumeName=EnumDrive\GetstringProperty("VolumeName")
Info()\PartNr\VolumeSerialNumber= EnumDrive\GetstringProperty("VolumeSerialNumber")
EndIf
EnumDrive = EnumDriveset\GetNextObject()
Wend
EnumDriveset\Release()
EndIf
objWMIService\Release()
EndIf
EndProcedure
Procedure listFilesByLetter(dl)
Protected Name.s = Space(256)
ClearList(Info())
Win32_DiskDriveToDiskPartition()
ResetList(Info())
While NextElement(Info())
If dl = 0
If Info()\PartNr\Driveletter = Left(Laufwerk,2)
GetVolumeInformation_(info()\PartNr\DriveLetter, @Name, 255,0,0,0,0,0)
info()\Name = name
currentid = info()\PNPDeviceID
For i = 0 To CountGadgetItems(0)
If GetGadgetItemText(0,i,0) <> info()\PartNr\DriveLetter
If GetGadgetItemText(0,i,0) > info()\PartNr\DriveLetter
AddGadgetItem(0,i,info()\PartNr\DriveLetter + Chr(10) + info()\Name + Chr(10) + info()\InterfaceType + Chr(10) + info()\Model + Chr(10) + info()\PNPDeviceID + Chr(10) + info()\MediaType)
WriteStringN(0,"Insert Device @ "+FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Date())+": "+info()\PartNr\DriveLetter + " " + info()\Name + " " + info()\InterfaceType + " " + info()\Model + " " + info()\PNPDeviceID + " " + info()\MediaType)
Break
ElseIf i = CountGadgetItems(0) And GetGadgetItemText(0,i,0) <> info()\PartNr\DriveLetter
AddGadgetItem(0,-1,info()\PartNr\DriveLetter + Chr(10) + info()\Name + Chr(10) + info()\InterfaceType + Chr(10) + info()\Model + Chr(10) + info()\PNPDeviceID + Chr(10) + info()\MediaType)
WriteStringN(0,"Insert Device @ "+FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Date())+": "+info()\PartNr\DriveLetter + " " + info()\Name + " " + info()\InterfaceType + " " + info()\Model + " " + info()\PNPDeviceID + " " + info()\MediaType)
Break
EndIf
Delay(10)
Else
Break
EndIf
Next
Break
EndIf
Delay(10)
Else
If CountGadgetItems(0) = 0
GetVolumeInformation_(info()\PartNr\DriveLetter, @Name, 255,0,0,0,0,0)
info()\Name = name
AddGadgetItem(0,-1,info()\PartNr\DriveLetter + Chr(10) + info()\Name + Chr(10) + info()\InterfaceType + Chr(10) + info()\Model + Chr(10) + info()\PNPDeviceID + Chr(10) + info()\MediaType)
Else
For i = 0 To CountGadgetItems(0)
If GetGadgetItemText(0,i,0) <> info()\PartNr\DriveLetter
GetVolumeInformation_(info()\PartNr\DriveLetter, @Name, 255,0,0,0,0,0)
info()\Name = name
If GetGadgetItemText(0,i,0) > info()\PartNr\DriveLetter
AddGadgetItem(0,i,info()\PartNr\DriveLetter + Chr(10) + info()\Name + Chr(10) + info()\InterfaceType + Chr(10) + info()\Model + Chr(10) + info()\PNPDeviceID + Chr(10) + info()\MediaType)
Break
ElseIf i = CountGadgetItems(0)
AddGadgetItem(0,-1,info()\PartNr\DriveLetter + Chr(10) + info()\Name + Chr(10) + info()\InterfaceType + Chr(10) + info()\Model + Chr(10) + info()\PNPDeviceID + Chr(10) + info()\MediaType)
Break
EndIf
Delay(10)
Else
Break
EndIf
Next
EndIf
Delay(10)
EndIf
Wend
EndProcedure
Procedure.s GetDevice(Bits)
For i = 'A' To 'Z'
If Bits & 1 = 1
Laufwerk.s = Chr(i)
EndIf
Bits = Bits >> 1
Next
ProcedureReturn Laufwerk
EndProcedure
Procedure CB(hwnd,msg,wParam,lParam)
Protected *db.DEV_BROADCAST_HDR
Protected *dbv.DEV_BROADCAST_VOLUME
If msg = #WM_DEVICECHANGE
Select wParam
Case #DBT_DEVICEARRIVAL
*db = lParam
If *db\dbch_devicetype = #DBT_DEVTYP_VOLUME
*dbv = *db
Laufwerk = GetDevice(*dbv\dbcv_unitmask) + ":\"
thread = CreateThread(@listFilesByLetter(),0)
If master = currentid And master <> "" And currentid <> ""
BlockInput_(#False)
Debug 1
EndIf
EndIf
Case #DBT_DEVICEREMOVECOMPLETE
*db = lParam
If *db\dbch_devicetype = #DBT_DEVTYP_VOLUME
*dbv = *db
Laufwerk.s = GetDevice(*dbv\dbcv_unitmask) + ":\"
For i=0 To CountGadgetItems(0)
If GetGadgetItemText(0,i,0) = Left(Laufwerk,2) And master <> GetGadgetItemText(0,i,4)
WriteStringN(0,"Removed Device @ "+FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Date())+": "+ GetGadgetItemText(0,i,0) + " " + GetGadgetItemText(0,i,1)+ " "+ GetGadgetItemText(0,i,2)+ " " + GetGadgetItemText(0,i,3)+ " " + GetGadgetItemText(0,i,4)+ " " + GetGadgetItemText(0,i,5))
RemoveGadgetItem(0,i)
ElseIf master = GetGadgetItemText(0,i,4) And master <> "" And currentid <> ""
WriteStringN(0,"Removed Master (lock pc) @ "+FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Date()))
RemoveGadgetItem(0,i)
BlockInput_(#True)
Debug 0
EndIf
Next
EndIf
EndSelect
ProcedureReturn 1
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 100, 100, 700, 350, "USB Recognition", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 0, 0, 700, 300, "Drive Letter", 116, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(0, 1, "Name",116)
AddGadgetColumn(0, 2, "Interface Type",116)
AddGadgetColumn(0, 3, "Model",116)
AddGadgetColumn(0, 4, "PNP Device-ID",116)
AddGadgetColumn(0, 5, "Media Type",116)
ButtonGadget(#Button,290,310,120,30,"Set device as master")
CreateThread(@listFilesByLetter(),1)
SetWindowCallback(@CB(),0)
hIcon1 = LoadIcon_(0, #IDI_APPLICATION)
hidden = 0
AddSysTrayIcon(1, WindowID(0), hIcon1)
SysTrayIconToolTip(1, "USB Recognition")
If CreatePopupMenu(#Menu)
MenuItem(#Menu_Refresh, "Refresh")
MenuItem(#Menu_Minimize,"Minimize to tray")
MenuBar()
MenuItem(#Menu_Exit, "Exit")
EndIf
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_SysTray
If EventType() = #PB_EventType_LeftClick Or EventType() = #PB_EventType_RightClick
DisplayPopupMenu(#Menu, WindowID(0))
EndIf
Case #PB_Event_Menu
Select EventMenu()
Case #Menu_Refresh
If hidden = 0 And Not IsThread(refresh)
ClearGadgetItems(0)
refresh = CreateThread(@listFilesByLetter(),1)
EndIf
Case #Menu_Minimize
If hidden = 0
HideWindow(0,1)
SetMenuItemText(#Menu,#Menu_Minimize,"Maximize window")
hidden = 1
Else
HideWindow(0,0)
SetMenuItemText(#Menu,#Menu_Minimize,"Minimize to tray")
hidden = 0
EndIf
Case #Menu_Exit
exit = #True
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #Button
For i = 0 To CountGadgetItems(0)
If GetGadgetItemState(0,i) = #PB_ListIcon_Selected
WriteStringN(0,"Device: "+GetGadgetItemText(0,i,1)+" ("+GetGadgetItemText(0,i,4)+") Set As Master@ "+FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Date()))
master = GetGadgetItemText(0,i,4)
EndIf
Next
EndSelect
Case #PB_Event_CloseWindow
exit = #True
EndSelect
Until exit
EndIf