Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Prozess Modul gibt komischen Wert zurück

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Ryko



Anmeldungsdatum: 02.01.2013
Beiträge: 12

BeitragVerfasst am: 16.01.2013, 18:46    Titel: Prozess Modul gibt komischen Wert zurück Antworten mit Zitat

Hallo,
Ich versuche momentan mit dieser Methode das MainModul eines Prozess zu kommen.Funktionieren tut dies wie gewollt,ausser ich benutzte eben SystemProzesse.
Beispiel Ausgabe:
Zitat:

RSFMain.exe
C:\Dokumente und Einstellungen\Besitzer\Eigene Dateien\Programmieren\Free Basic
Sources\RSFMain.exe


Beispiel Ausgabe für alg.exe:
Zitat:

Ein Pfeil nach oben und unten(Als Zeichen)??????????U?$


Könnte es sein das es daran liegt das es Unicode ist was da ausgegeben wird?Denn dieser Pfeil nach oben und unten habe ich in keiner ASCII Tabelle gefunden sonder lediglich in einer Unicode Zeichen Tabelle.Inwiefern müsste ich dann den Code umschreiben damit Unicode dargestellt wird?

Code:
Function GetProcessFile(ByVal Pid As Integer) As String
   
   Dim hSnap As HANDLE
   Dim mdEntry32 As MODULEENTRY32
   Dim bSucess As Boolean
   
   hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,Pid)

   mdEntry32.dwSize = SizeOf(MODULEENTRY32)
   
   bSucess = Module32Next(hSnap,@mdEntry32)
      
      Return mdEntry32.szExePath
      
   CloseHandle(hSnap)
   
End Function


Mfg Ryko
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 17.01.2013, 13:03    Titel: Antworten mit Zitat

Der Pfeil ↕ ist ASCII Code 18.

Bei mir kommt auch Garbage, aber nur wenn der Aufruf an sich schon fehlschlägt weil z.B. der Prozess auf Grund fehlender Adminrechte nicht geöffnet werden konnte. Bei anderen Prozessen gehts.

Mit Unicode hat das ganze nichts zu tun.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 17.01.2013, 14:04    Titel: Antworten mit Zitat

Hi,
auch ohne Adminrechte bekomme ich ein lesbares Ergebnis:
Code:
#Include "windows.bi"
#Include "win/tlhelp32.bi"

Dim mdEntry32 As MODULEENTRY32
Dim hSnap As HANDLE
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, GetCurrentProcessId)
mdEntry32.dwSize = SizeOf(MODULEENTRY32)

If Module32First(hSnap,@mdEntry32) Then
  ?"MODULE NAME:  ";mdEntry32.szModule
  ?"executable    ";mdEntry32.szExePath
  ?"process ID    ";mdEntry32.th32ProcessID
  ?"ref count (g) &H";Hex(mdEntry32.GlblcntUsage)
  ?"ref count (p) &H";Hex(mdEntry32.ProccntUsage)
  ?"base address  &H";Hex(mdEntry32.modBaseAddr)
  ?"base size     ";mdEntry32.modBaseSize
EndIf

CloseHandle(hSnap)
Sleep
mit Win 7, FB 0.24
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 17.01.2013, 14:40    Titel: Antworten mit Zitat

Voltas Code-Beispiel funktioniert bei mir auch (Windows 7 Professional 64 Bit, FB 0.24 stable). Gerade ausprobiert.
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 17.01.2013, 15:50    Titel: Antworten mit Zitat

Hi,
ich vermute das sich ohne Adminrechte doch nicht alle Module ermitteln lassen.
Welche möglich sind wird mir so angezeigt:
Code:
#Include "windows.bi"
#Include "win\tlhelp32.bi"

Dim As Integer ProcessFound
Dim As HANDLE Snapshot, Snapshot2
Dim Process As PROCESSENTRY32
Dim Module As MODULEENTRY32

Process.dwSize = SizeOf(PROCESSENTRY32)
Module.dwSize  = SizeOf(MODULEENTRY32)

Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If Snapshot Then
  ProcessFound = Process32First(Snapshot, @Process)
  While ProcessFound
    Snapshot2 = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,Process.th32ProcessID)
    If Snapshot2 Then
      If Module32First(Snapshot2, @Module) Then _
      Print Module.th32ProcessID, Module.szExePath
      CloseHandle(Snapshot2)
    EndIf
    ProcessFound = Process32Next(Snapshot, @Process)
  Wend
  CloseHandle(Snapshot)
EndIf
Sleep

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Ryko



Anmeldungsdatum: 02.01.2013
Beiträge: 12

BeitragVerfasst am: 17.01.2013, 17:56    Titel: Antworten mit Zitat

Hmm naja als Admin bin ich angemeldet. OS wäre Winxp SP3

Edit:// Tatsächlich funktioniert das nicht mit System Prozessen Zunge rausstrecken .
Nur einige wie ctfmon.exe oder Rundll32.exe bekomm ich angezeigt.

Edit// Nochmals. Habe den zusammenhang gefunden.Mein beschriebenes Problem tritt nur bei Diensten auf.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 20.01.2013, 23:09    Titel: Antworten mit Zitat

Für dein Programm mal unter dem Benutzer "SYSTEM" aus und schau was dann passiert: http://blog.delphi-jedi.net/2008/05/08/runassys-10-preview/

Bzw. versuch mal dir selbst das SeDebugPrivilege zu geben bevor du den Code ausführst, und zwar hiermit:

Code:
Dim As TOKEN_PRIVILEGES pv, po
pv.PrivilegeCount = 1
pv.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
Dim As HANDLE t
Dim As Dword no
LookupPrivilegeValue(0, SE_DEBUG_NAME, @pv.Privileges(0).Luid)
OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, @t)
AdjustTokenPrivileges(t, 0, @pv, SizeOf(po), @po, @no)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Ryko



Anmeldungsdatum: 02.01.2013
Beiträge: 12

BeitragVerfasst am: 21.01.2013, 14:37    Titel: Antworten mit Zitat

Hehe genau das wollte ich gerade Posten Zunge rausstrecken .
Hatte mir mit GetLastError den Fehler ausgeben lassen und bekamm 5 zurück sprich keine Zugriffsberechtigung.
Die Methode habe ich dann genutzt
Code:
Sub SetDebugPrivileges()
   Dim tp As TOKEN_PRIVILEGES
   Dim hToken As HANDLE
   
   If (LookupPrivilegeValue(NULL,SE_DEBUG_NAME,@tp.Privileges(0).Luid)) Then
      
   If (OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,@hToken)) Then
      
      If(hToken <> NULL) Then
         
         tp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
         tp.PrivilegeCount = 1
         If (AdjustTokenPrivileges(hToken,FALSE,@tp,0,0,0)) Then
            CloseHandle(hToken)
         EndIf
         
      EndIf
      
   EndIf
      
   EndIf
   
End Sub

Nochmal Danke an alle!
Mfg Ryko
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz