VisualBasic Benutzer ermitteln

I

iPhiiL

Gast
Hallo,

ich habe eine weitere Frage. Da ihr mir beim letzten Mal so gut geholfen habt, vertraue ich jetzt nochmal auf euch. :evillol:

Also ich möchte ein Programm erstellen, was auch an anderen Computern den User finden kann. Also z.B eine Datei von a nach b zu machen. Da aber der Pfad nicht genau wie meiner ist(sagen wir mal "C:\Users\MeinSpeziellerUsername") habe ich ein bisschen gegooglet und habe diesen Code herausgefunden:

Code:
Private Declare Function GetUserName _
    Lib "advapi32.dll" _
    Alias "GetUserNameA" _
( _
    ByVal lpBuffer As String, _
    ByRef nSize As Long _
) As Long

Private Declare Function GetComputerName _
    Lib "kernel32.dll" _
    Alias "GetComputerNameA" _
( _
    ByVal lpBuffer As String, _
    ByRef nSize As Long _
) As Long

Private Const MAX_COMPUTERNAME_LENGTH As Long = 31&

Private Function UserName() As String
    Dim s As String
    s = Space$(255)
    Dim nSize As Long
    nSize = Len(s)
    Dim n As Long
    n = GetUserNameA(s, nSize)
    If n = 0& Then
        UserName = ""
    Else
        UserName = Left$(s, nSize - 1)
    End If
End Function

Private Function ComputerName() As String
    Dim s As String
    s = Space$(MAX_COMPUTERNAME_LENGTH + 1)
    Dim nSize As Long
    nSize = Len(s)
    Dim n As Long
    n = GetComputerNameA(s, nSize)
    If n = 0& Then
        ComputerName = ""
    Else
        ComputerName = Left$(s, nSize - 1)
    End If
End Function

Private Sub Main()
    Call MsgBox(UserName & " @ " & ComputerName)
End Sub

Der Code ist mega lang. Ich habe ihn von dieser Seite. Aber wo muss ich diesen langen Code einfügen? Also bei diesem Code hier, wo muss er hin??

Code:
Imports System.IO
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        File.Copy("C:\Users\UserName\Desktop\Neues Textdokument1.txt", "C:\Users\Username\Desktop\Admin\Neues Textdokument2.txt")
        MsgBox("Die ausgewählte Datei wurde erfolgreich kopiert!", MsgBoxStyle.Information, "Erfolgreich kopiert!")
        File.Delete("C:\Users\UserName\Desktop\Neues Textdokument1.txt")
        MsgBox("Ihre kopierte Datei wurde erfolgreich gelöscht", msgboxstyle.information, "Erfolgreich gelöscht")
    End Sub
End Class

Könnt ihr mir da irgendwie helfen? Vielen Dank !!!
 
Im .Net Framework gibts zwei Eigenschaften die du anstelle deines Spaghetticodes aus dem Internet verwenden kannst, den Rest solltest du alleine schaffen:

Environment.UserName -> enthält den aktuellen User
Environment.MachineName -> enthält den Namen des Computers
 
Also ist dann der Code

Code:
Imports System.IO
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        File.Copy("C:\Users\Environment.UserName\Desktop\Neues Textdokument1.txt", "C:\Users\Environment.UserName\Desktop\Admin\Neues Textdokument2.txt")
        MsgBox("Die ausgewählte Datei wurde erfolgreich kopiert!", MsgBoxStyle.Information, "Erfolgreich kopiert!")
        File.Delete("C:\Users\Environment.UserName\Desktop\Neues Textdokument1.txt")
    End Sub
End Class

:confused_alt:

Sorry falls das komplett falsch ist, aber soetwas hab ich noch nicht gemacht. :D
 
Dir ist schon klar, dass er den Pfad "C:\Users\Environment.UserName\Desktop\" erwartet, oder?
Also er sucht, nach dem User mit dem Namen "Environment.UserName"

Lern die Syntax von Visual Basic ...
 
Ja deswegen habe ich ja von vorne rein ges. ich bin darin ein kompletter vollnoob weil ich das mit diesem benutzer ermitteln noch nicht gemacht habe :D Ich glaube ich lass es einfach :p
 
Kannst ja mal die Hilfe zu String.Concat suchen und lesen. Da sollte dann beschrieben sein, wie du den Inhalt von Variablen zu einem String zusammen wirfst. Ansonsten schau mal nach einem Buch ala "Jetzt lerne ich VB.Net in 7 Tagen ..."
 
Wenn du keine Ahnung von Programmiersprachen hast, würde ich dir auch raten, erstmal die Finger von solchen weitreichenden Dingen zu lassen.
Kümmere dich lieber erstmal darum, dass du die Syntax verstehst, anstatt irgendwelche unsicheren Dateioperationen auszuführen.
Deine Frage hat was mit dem grundsätzlichen Verständnis von Visual Basic zu tun. Ansonsten würdest du wissen, wo das Problem liegt, auch wenn du nicht weißt, wie man den Benutzernamen ermittelt (übrigens weiß ich das auch nicht.)
 
Zuletzt bearbeitet:
Probiers mit
Code:
System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory)
Das gibt dir den Pfad des Desktop-Ordners zurück.

Wie du das in den deinen Code reinbaust, kannst du mal selber herausfinden, die Syntax muss man sich schon selbst mal aneignen.
 
Code:
Environment.ExpandEnvironmentVariables("%USERPROFILE%\Desktop\Neues Textdokument1.txt")

wäre auch ne Möglichkeit...
 
Zurück
Oben