Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Partition/Laufwerk dynamisch an-/abmelden

9 views
Skip to first unread message

Wendelin Uez

unread,
Jul 11, 2023, 6:14:34 AM7/11/23
to
Ich möchte eine einzelne Partition eines Heimnetz-Rechners dynamisch
verfügbar machen (und auch im Netz freigeben) und wieder den Zugriff
aussperren. Gibt es eine API-Funktion, mit der ich den Laufwerksbuchstaben
ab- und anmelden kann, oder gibt es eine andere Möglichkeit? Ich stelle mir
sowas wie "CONNECT diskname driveletter" vor.

Ich habe mit externen USB-Platten und per Batch gestarteten Tools
experimentiert, aber dort funktioniert nur die Deaktivierung, leider nicht
mehr die Reaktivierung. Und zu eine einzelne SATA-HD an- und abschalten habe
ich bisher auch nur von Problemen gelesen.

Ulrich Möller

unread,
Jul 11, 2023, 7:24:17 AM7/11/23
to
Hallo Wendelin,

Partitionen und ext. USB-Laufwerke sind aber grundsätzlich verschieden
und werden deshalb anders behandelt.

Wenn es um das "Mounten" von Partitionen und der Vergabe von
Laufwerksbuchstaben geht, ist DiskPart dein Freund.

Siehe auch: https://www.windowscentral.com/how-mount-drive-windows-10


Gruß Ulrich

Uwe Sieber

unread,
Jul 12, 2023, 4:28:08 AM7/12/23
to
Wendelin Uez wrote:
> Ich möchte eine einzelne Partition eines Heimnetz-Rechners dynamisch
> verfügbar machen (und auch im Netz freigeben) und wieder den Zugriff
> aussperren. Gibt es eine API-Funktion, mit der ich den
> Laufwerksbuchstaben ab- und anmelden kann

Private Declare Function GetVolumeNameForVolumeMountPoint Lib "kernel32.dll" _
Alias "GetVolumeNameForVolumeMountPointA" ( _
ByVal lpszVolumeMountPoint As String, _
ByVal lpszVolumeName As String, _
ByVal cchBufferLength As Long) As Long

Private Declare Function DeleteVolumeMountPoint Lib "kernel32.dll" _
Alias "DeleteVolumeMountPointA" ( _
ByVal lpszVolumeMountPoint As String) As Long

Private Declare Function SetVolumeMountPoint Lib "kernel32.dll" _
Alias "SetVolumeMountPointA" ( _
ByVal lpszVolumeMountPoint As String, _
ByVal lpszVolumeName As String) As Long

> Ich habe mit externen USB-Platten und per Batch gestarteten Tools
> experimentiert, aber dort funktioniert nur die Deaktivierung, leider
> nicht mehr die Reaktivierung.

RemoveDrive plus RestartSrDev oder RestartUsbPort sollten gehen:
https://www.uwe-sieber.de/drivetools.html
https://www.uwe-sieber.de/misctools.html

Braucht alles Admin-Rechte.

Wendelin Uez

unread,
Jul 12, 2023, 11:28:04 AM7/12/23
to
Danke für die Declares.

Bezieht sich "braucht Admin-Rechte" nur auf deine Tools (wie ich annehme)
oder auch auf die Funktionen?

Ich bekomme zwar problemlos mit GetVolumeNameForVolumeMountPoint für einen
MountPoint "I:\" (eines angeschlossenen USB-Drives) dessen VolumeName
fehlerfrei heraus, aber ein DeleteVolumeMountPoint ("I:\") schlägt fehl,
ebenso wie ein SetVolumeMountPoint ("X:\", VolumeName) zum Ändern von I: auf
X:

Wenn ich das richtig verstehe sollte der MountPoint das "L:\" sein und der
VolumeName \\?Volume\{8dbe....}\ ein Identifier für das Laufwerk, der beim
letzten mounten der Device von Windows erzeugt wurde, um die Device
wiederzuerkennen.

Vielleicht hängt es aber auch mit meiner Hardware zusammen, denn ich kann
mit RemoveDrive das USB-Kaufwerk zwar aushängen, aber mit RestartSrDev nicht
mehr einhängen.

Uwe Sieber

unread,
Jul 13, 2023, 3:15:48 AM7/13/23
to

Bis auf GetVolumeNameForVolumeMountPoint braucht alles Admin-Rechte.

Ohne diese schlagen DeleteVolumeMountPoint und SetVolumeMountPoint mit
ERROR_ACCESS_DENIED fehl, das steht dann als 5 in Err.LastDllError.

SetVolumeMountPoint geht nur wenn keine Buchstabe zugeordnet ist,
man muss also vorher mit DeleteVolumeMountPoint einen zugeordneten
Buchstaben entfernen.

RemoveDrive kann zwar ohne Admin-Rechte sicher entfernen, das Gerät hat
dann aber Problem-Code 47, damit bekommt man ein Gerät über den Geräte-
Manager nicht wieder aktiviert.

RestartSrDev braucht immer Admin-Rechte.


Wendelin Uez wrote:
> Danke für die Declares.
>
> Bezieht sich "braucht Admin-Rechte" nur auf deine Tools (wie ich
> annehme) oder auch auf die Funktionen?
>
> Ich bekomme zwar problemlos mit GetVolumeNameForVolumeMountPoint für
> einen MountPoint "I:\" (eines angeschlossenen USB-Drives) dessen
> VolumeName fehlerfrei heraus, aber ein DeleteVolumeMountPoint ("I:\")
> schlägt fehl, ebenso wie ein ("X:\", VolumeName) zum

Wendelin Uez

unread,
Jul 13, 2023, 11:28:57 AM7/13/23
to
Dumme Frage: Ich bin zwar als Admin angemeldet, bekomme aber (in anderem
Kontext) öfters mal die Admin-Aufforderung - die kommt zwar bei den Tools
nicht und im VB-Code logischwerweise erst recht nicht, aber wie kann ich das
im Code oder auch pauschal präventiv abfangen? Habe mich bisher nie darum
kümmern müssen, weil wegklicken einfacher und schneller war.


Happy Oyster

unread,
Jul 16, 2023, 10:28:00 AM7/16/23
to
Aus meinem DriveMapper... Weil ich immer als Admin arbeite, weiss ich nicht,
ob Admin-Rechte erforderlich sind.
Function MountNetDrive(ByVal szLocalName As String, ByVal szRemoteName As String, _
Optional ByVal szUsername As String = vbNullString, _
Optional ByVal szPassword As String = vbNullString, _
Optional ByVal bPersistent As Boolean = False) As Long

Dim uNetRes As NETRESOURCE
Dim lResult As Long
Dim bResult As Long
Dim lFlags As Long

Dim szUser As Variant
Dim szPass As Variant

uNetRes.dwScope = RESOURCE_GLOBALNET
uNetRes.dwType = RESOURCETYPE_DISK
uNetRes.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
uNetRes.dwUsage = RESOURCEUSAGE_CONNECTABLE

uNetRes.lpComment = vbNullString
uNetRes.lpProvider = vbNullString

uNetRes.lpLocalName = szLocalName & vbNullChar
uNetRes.lpRemoteName = szRemoteName & vbNullChar

lFlags = IIf(bPersistent, CONNECT_UPDATE_PROFILE, 0&)

If szUsername = "" Or szPassword = "" Then
lResult = WNetAddConnection2(uNetRes, vbNullString, vbNullString, lFlags)
Else
lResult = WNetAddConnection2(uNetRes, szPassword, szUsername, lFlags)
End If

MountNetDrive = lResult
End Function

Function UnMountDrive(szLocalName As String) As Boolean
UnMountDrive = WNetCancelConnection2(szLocalName, 0, 0)
End Function

Wendelin Uez

unread,
Jul 17, 2023, 1:47:31 PM7/17/23
to
danke, YMMD
0 new messages