Puisque vous êtes juste en VB.Net, que diriez-vous de créer un programme de ligne de commande pour le faire pour vous ?
- Créer une application console
coller ce code:
Module Module1
Sub Main()
Dim program = ""
Dim drive As String = ""
Try
'Get the commandLine, without thhis application name or the beginning space
Dim commandLine As String = Environment.CommandLine.Replace(System.Reflection.Assembly.GetExecutingAssembly().Location, "").Replace("""", "").Substring(1)
'Get the DriveNAme part of the commaneLine
Dim driveName As String = commandLine.Split(":"c)(0)
drive = GetDriveByName(driveName)
'Get the Program Name part of the commandLine
program = commandLine.Split(":"c)(1)
If drive.Length = 0 Then Throw New Exception("No drive was found with the name '" + driveName + "'")
Dim starter As New System.Diagnostics.ProcessStartInfo(drive + program)
starter.UseShellExecute = True
System.Diagnostics.Process.Start(starter)
Catch ex As Exception
Console.WriteLine("Failed starting " + drive + program + ". " + ex.Message)
End Try
End Sub
''' <summary>Returns the drive letter of the Fixed or Removable drive with the specified name</summary>
''' <param name="DriveName"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function GetDriveByName(ByVal DriveName As String) As String
Dim returnDrive As String = ""
For Each drive As System.IO.DriveInfo In System.IO.DriveInfo.GetDrives()
If (drive.DriveType = (IO.DriveType.Fixed Or IO.DriveType.Removable)) Then 'Only interested in removable drives
If (drive.VolumeLabel.Equals(DriveName, StringComparison.OrdinalIgnoreCase)) Then
'This is our drive!
returnDrive = drive.Name
End If
End If
Next drive
Return returnDrive
End Function
End Module
Ensuite, compilez donner votre demande un joli nom (par exemple StartByDriveName.exe) et le compiler.
Vous pouvez maintenant l'utiliser dans un fichier batch:
StartByDriveName <driveName>:<path>\ProgramName
par exemple StartByDriveName MomsUSB: \ Program Files \ Excel.Exe
Je suis en train d'essayer d'éviter les solutions de contournement pour cette tâche, car aucune n'est idéale. Attribuer une lettre de lecteur permanente peut conduire à des conflits sur la route que je voudrais éviter. – KevinD
avec linux vous pouvez assigner un point de montage à l'uid de l'appareil, mais je n'ai pas entendu parler d'une telle fonctionnalité sur windoze. –