VB.NET Symlink (mklink)
Guten Tag,
ich bin am verzweifeln.
Mittels VB.NET möchte ich per Buttonklick einen Symlink (mklink) einer Datei erstellen.
Mein code sieht wie folgt aus.
Beide Pfade enthalten Leerzeichen. Mit dem Wert "Zufallszahl" wird davor eine Zufallszahl generiert. Das funktioniert tatellos.
Kann mir jemand weiterhelfen? Ich komme einfach nicht zurecht.
Vielen lieben Dank.
Paddy
ich bin am verzweifeln.
Mittels VB.NET möchte ich per Buttonklick einen Symlink (mklink) einer Datei erstellen.
Mein code sieht wie folgt aus.
Dim rnd As New Random
Dim ZufallsZahl As Integer = rnd.Next(1, 10000000)
Dim appData As String = GetFolderPath(SpecialFolder.ApplicationData)
Dim MkLink1 As String = "C:\Program Files (x86)\Testpfad\" & ZufallsZahl & "\Test.txt"
Dim Mklink2 As String = "" & appData & "\Testpfad\Test.txt"
Dim Mklink As New Process
Mklink.StartInfo.FileName = "cmd.exe"
Mklink.StartInfo.Arguments = "/C mklink " & Chr(34) & MkLink1 & Chr(34) & " " & Chr(34) & Mklink2 & Chr(34)
Mklink.Start()
Beide Pfade enthalten Leerzeichen. Mit dem Wert "Zufallszahl" wird davor eine Zufallszahl generiert. Das funktioniert tatellos.
Kann mir jemand weiterhelfen? Ich komme einfach nicht zurecht.
Vielen lieben Dank.
Paddy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 297092
Url: https://administrator.de/forum/vb-net-symlink-mklink-297092.html
Ausgedruckt am: 02.01.2025 um 23:01 Uhr
6 Kommentare
Neuester Kommentar
Mach das Erstellen eines Softlinks nativ mit der WIn32-API (CreateSymbolicLink) und nicht so umständlich über die CMD X) wir sind hier ja nicht auf einer DOS-Party
Der letzte Parameter bei CreateSymbolic Link sagt aus ob der Link ein Verzeichnis oder eine Datei ist welche verlinkt wird.
fk
Imports System.Runtime.InteropServices
Public Class Form1
Private Enum SYMBOLIC_LINK_FLAG As Integer
File = 0
Directory = 1
End Enum
<DllImport("kernel32.dll")>
Private Shared Function CreateSymbolicLink(ByVal lpSymlinkFileName As String, ByVal lpTargetFileName As String, ByVal dwFlags As SYMBOLIC_LINK_FLAG) As Boolean
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
CreateSymbolicLink("C:\test_link.txt", "C:\test.txt", SYMBOLIC_LINK_FLAG.File)
End Sub
End Class
fk
Zitat von @duschgas:
Leider habe ich immernoch Probleme mit den Leerzeichen
Dim MkLink1 As String = "C:\Program Files (x86)\Testpfad\" & ZufallsZahl & "\Test.txt"
Dim Mklink2 As String = "" & appData & "\Testpfad\Test.txt"
CreateSymbolicLink(MkLink1, Mklink2 , SYMBOLIC_LINK_FLAG.File)
Hättets du da einen Tipp für mich?
Geht hier auch mit Pfaden die Leerzeichen enthalten einwandfrei! Ein zusätzliches HInzufügen von Anführungszeichen ist nicht erforderlich. Du musst hier aber wissen das du nur als Administrator in das ProgramFiles Verzeichnisse schreiben kannst! Diese Verzeichnisse sind besonders geschützt.Leider habe ich immernoch Probleme mit den Leerzeichen
Dim MkLink1 As String = "C:\Program Files (x86)\Testpfad\" & ZufallsZahl & "\Test.txt"
Dim Mklink2 As String = "" & appData & "\Testpfad\Test.txt"
CreateSymbolicLink(MkLink1, Mklink2 , SYMBOLIC_LINK_FLAG.File)
Hättets du da einen Tipp für mich?
Noch als Zusatz: Wenn du Hardlinks erstellen willst geht das auch
<DllImport("kernel32.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
Private Shared Function CreateHardLink(ByVal lpFileName As String, ByVal lpExistingFileName As String, ByVal lpSecurityAttributes As IntPtr) As Boolean
End Function