Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Net use in VB

Wiesner / 11 Antworten / Baumansicht Nickles

Ich verbinde mich derzeit zu meinen wichtigen Netzwerk Shares mit einer Batchdatei und dem Befehl: net use \\PCname /USER:username@domain password


Da in der Batchdatei das Passwort in Klartext steht frage ich mich ob es da nicht möglich ist selbiges in eine VB-Exe zu Packen. Mein Problem ist ich finde kein Codebeispiel wie ich "net use" in VB mache.


Könnt Ihr mir da weiterhelfen?


Thanks


Mike

bei Antwort benachrichtigen
HADU Wiesner „Net use in VB“
Optionen

Hi,
schau' Dir mal die Klasse System.Diagnostics.ProcessStartInfo an

Gruß HADU

bei Antwort benachrichtigen
T-Rex HADU „Hi, schau Dir mal die Klasse System.Diagnostics.ProcessStartInfo an Gruß HADU“
Optionen

Das ist eine Klasse, die erst ab VB.NET vorhanden ist. VB selbst kennt diese Klasse nicht.


 

 GrüßeT-Rex 
bei Antwort benachrichtigen
HADU T-Rex „Das ist eine Klasse, die erst ab VB.NET vorhanden ist. VB selbst kennt diese...“
Optionen

Das ist richtig - VB ist für mich VB.NET.
VB6 ist ja schon seit Jahren out ... mal ganz davon abgesehen, dass ich es noch nicht angerührt habe und deswegen keine Ahnung davon habe :-)

bei Antwort benachrichtigen
T-Rex HADU „Das ist richtig - VB ist für mich VB.NET. VB6 ist ja schon seit Jahren out ......“
Optionen

Gut, dann entwickle ich seit jahren in einer toten Sprache. :-)

Microsoft hätte gern, daß VB.NET das gute alte VB Classic ablöst. Da es sich aber um eine andere Sprache handelt, wird das wohl in nächster Zeit nix.


 

 GrüßeT-Rex 
bei Antwort benachrichtigen
HADU T-Rex „Gut, dann entwickle ich seit jahren in einer toten Sprache. :- Microsoft hätte...“
Optionen

Ich sage das halt so gerne, weil ich erst mit VB.NET eingestiegen bin.
Die alten Projekte, die noch in VB4, 5 oder 6 geschrieben wurden, müssen immer die Kollegen bearbeiten. Auch recht, das haben die schließlich auch selber verbrochen.

bei Antwort benachrichtigen
HADU Wiesner „Net use in VB“
Optionen

Warum gibst Du Deinem Benutzer eigentlich nicht einfach die entsprechenden Zugriffsrechte auf der Freigabe?
Dann musst Du keinen Benutzer+Passwort mitgeben!

HADU

bei Antwort benachrichtigen
Wiesner Nachtrag zu: „Net use in VB“
Optionen

Das mit der Banalen Lösung wäre schön, aber es handelt sich um den Zugriff von Test PCs auf die User PC in unserer Domain, aber Danke für den Tipp mit der Klasse ich muß mal wieder alle meine spärlichen VB - Kenntnisse zusammenraffen.

bei Antwort benachrichtigen
T-Rex Wiesner „Das mit der Banalen Lösung wäre schön, aber es handelt sich um den Zugriff...“
Optionen

Folgende Zeile sollte es problemlos tun:

Call Shell(Environ$("COMSPEC") & " /c net use \\PCname /USER:username@domain password")


Ansonsten:
Netzlaufwerk Verbinden und Trennen


 
 GrüßeT-Rex 
bei Antwort benachrichtigen
REPI Wiesner „Net use in VB“
Optionen

Hier mal was als VB-Script


'
' MapDrives.VBS
'
' WSH ab Version 2.0 (5.1)
' Abbilden von festen Netzfreigaben auf lokale Laufwerksbuchstaben
' für W2000
'

'
' Variablen
'

Option Explicit
On Error Resume Next

Dim WSHFile, WSHShell, WSHNetwork, Command, ErrorCode
Dim MakroName, Version, LogProg, LogText
Dim Name, FName
Dim Text, Titel, Stil, Ergebnis
Dim LocalDrive(), NetDriveShare(), NetDriveShareText()
Dim LW, LWFlag, LWStatus
Dim ObjArgs, Arg, Argument(), i
Dim CRLF, TAB, x

CRLF = vbCRLF
TAB = vbTAB

' WSHFile Object.
Set WSHFile = CreateObject("Scripting.FileSystemObject")

' WSHShell Object.
Set WSHShell = WScript.CreateObject("WScript.Shell")

' WSHNetwork Object.
Set WSHNetwork = WScript.CreateObject("WScript.Network")

' Variablen vorbelegen.
Name = WScript.ScriptName
FName = WScript.ScriptFullName
LogProg = Left(FName, InstrRev(FName, "\")) & "Log.vbs"

MakroName = "'" & Left(Name, InstrRev(Name, ".") - 1) & "'"
Version = "V1.2"

' Bei Änderungen auch hier anpassen.
ReDim Preserve LocalDrive(4), NetDriveShare(4), NetDriveText(4)

LocalDrive(0) = "k:"
NetDriveShare(0) = "\\tgt_dc1\d"
NetDriveText(0) = "d: auf tgt_dc1"

LocalDrive(1) = "t:"
NetDriveShare(1) = "\\tgt_dc1\cd-rom"
NetDriveText(1) = "cd-rom auf tgt_dc1"

LocalDrive(2) = "u:"
NetDriveShare(2) = "\\tgt_dc1\bereiche"
NetDriveText(2) = "bereiche auf tgt_dc1"

LocalDrive(3) = "x:"
NetDriveShare(3) = "\\tgt_dc1\profiles"
NetDriveText(3) = "profiles auf tgt_dc1"

LocalDrive(4) = "y:"
NetDriveShare(4) = "\\tgt_dc1\users"
NetDriveText(4) = "users auf tgt_dc1"

If (WSHFile.FileExists(LogProg)) Then
' Information protokollieren.
LogText = "4" & Space(1) & Chr(34) & MakroName & " - Start (" & FName & ")" & Chr(34)
Command = LogProg & Space(1) & LogText
ErrorCode = WSHShell.Run(Command, 1, True)
End If

' Fehlerroutine.
Sub ErrorCheck(ErrorCode)
Select Case ErrorCode
Case 0
' kein Fehler, Durchlauf O.K. !!!

Case - 2147024829
Text = "Netzwerkressource " & NetDriveShare(x) & CRLF
Text = Text & "existiert nicht - keine Verbindung möglich !"
Titel = MakroName & " Routine " & Version
Stil = vbCritical + vbOkOnly
WSHShell.Popup Text, 5, Titel, Stil

Case - 2147024811
Text = "Laufwerk " & LocalDrive(x)
Text = Text & "existiert bereits - keine Verbindung möglich !"
Titel = MakroName & " Routine " & Version
Stil = vbCritical + vbOkOnly
WSHShell.Popup Text, 5, Titel, Stil

Case Else
Text = "Fehlercode: " & CStr(ErrorCode) & CRLF
Text = Text & "Bitte überprüfen !"
Titel = MakroName & " Routine " & Version
Stil = vbCritical + vbOkOnly
WSHShell.Popup Text, 5, Titel, Stil

End Select
End Sub

' Sub für Endemeldung im Makro.
Sub EndeBox()
' Ausschriften nur ohne Argument.
If IsEmpty(Arg) Then
Text = "Ende - Mapping diverse Netzfreigaben !!!"
' Text = Text & Space(5) & "(" & cStr(Date) & " - " & cStr(Time) & ")"
Titel = MakroName & " Routine " & Version
Stil = vbInformation + vbOkOnly
WSHShell.Popup Text, 5, Titel, Stil
End If

If (WSHFile.FileExists(LogProg)) Then
' Information protokollieren.
LogText = "4" & Space(1) & Chr(34) & MakroName & " - Ende (" & FName & ")" & Chr(34)
Command = LogProg & Space(1) & LogText
ErrorCode = WSHShell.Run(Command, 1, True)
End If

' Object trennen.
WScript.DisconnectObject WSHShell
Set WSHShell = Nothing

WScript.DisconnectObject WSHFile
Set WSHFile = Nothing

WScript.DisconnectObject WSHNetwork
Set WSHNetwork = Nothing

WScript.DisconnectObject ObjArgs
Set ObjArgs = Nothing

WScript.DisconnectObject LW
Set LW = Nothing

WScript.Quit
End Sub

' Beginn Main.
' Argument(e) auslesen.
Set ObjArgs = Wscript.Arguments
For i = 0 To ObjArgs.Count - 1
ReDim Preserve Argument(i)
Argument(i) = ObjArgs(i)
Next

' Erstes Argument herausfiltern, wenn gesetzt.
If (i > 0) Then Arg = UCase(Argument(0)) End If

LWFlag = 1
Text = "Folgende Freigaben wurden dauerhaft verbunden:" & CRLF & CRLF
For x=0 To UBound(LocalDrive, 1)
If (WSHFile.DriveExists(LocalDrive(x))) Then
Set LW = WSHFile.GetDrive(LocalDrive(x))
If (LW.ShareName = "") Then
' dann kein Netzlaufwerk vorhanden, kann also
' auch nicht getrennt werden.
LWFlag = 0
Else
' Laufwerk trennen, wenn schon verbunden, auch wenn diese
' Freigabe momentan aktiv ist und aus Benutzerprofil entfernen.
WSHNetwork.RemoveNetworkDrive LocalDrive(x), True, True
LWFlag = 1
End If
End If

' Wenn Variable auf 0 gesetzt erfolgt kein erneutes Verbinden.
If LWFlag Then
' Laufwerk dauerhaft mit Share verbinden,
' kann auch noch über Benutzername und Passwort verbunden werden (z.B. W2000).
WSHNetwork.MapNetworkDrive LocalDrive(x), NetDriveShare(x), True

' Auftretende Fehler anzeigen.
ErrorCheck(Err.Number)

' Test ob Laufwerk funktionsfähig.
Set LW = WSHFile.GetDrive(LocalDrive(x))
If LW.IsReady Then LWStatus = "up" Else LWStatus = "down" End If
Else
LWStatus = "failed"
End If

Text = Text & LocalDrive(x) & Space(3) & NetDriveShare(x) & CRLF
Text = Text & Space(6) & "--> " & NetDriveText(x) & TAB & TAB & LWSTATUS & CRLF & CRLF

Next

' Ausschriften nur ohne Argument.
If IsEmpty(Arg) Then
Titel = "Mapping Drive's"
Stil = vbInformation + vbOkOnly
WSHShell.Popup Text, 15, Titel, Stil
End If

EndeBox

Es empfiehlt sich immer, etwas Linux im Hause zu haben.
bei Antwort benachrichtigen
Wiesner Nachtrag zu: „Net use in VB“
Optionen

Danke an alle ich habs schon "T-Rex" brachte mich darauf wie's geht.
Ich bin mal wieder auf der Leitung gestanden und hab das einfachste übersehen :-)

bei Antwort benachrichtigen
Synthetic_codes Wiesner „Net use in VB“
Optionen

kleine frage dazu noch: wäre es nicht möglich das ganze mittels shell-object auszuführen(also bevor mich hier alle niederprügeln, ich hab mit vb und vb.net GAR NIX AM HUT. da hab ich mal reingeschnuppert... sonst kenn ich mich nur mit qbasic aus(Lang lebe die Computersteinzeit der 486er). ich bin viel mehr vor jahren in die C/C++ & Assembler ecke abgedriftet, und in C hätte ich das mit dem Shellaufruf gemacht

'); DROP TABLE users;--
bei Antwort benachrichtigen