by イグトランス » 2008年6月24日(火) 00:42
NT系限定ですが、DefineDosDeviceという関数はどうでしょうか。
コード: 全て選択
DefineDosDevice(0, "W:", "C:\WINDOWS")
これで、Subst W: C:\WINDOWS相当になります。1番目の引数の0をDDD_REMOVE_DEFINITIONにすれば、削除になるそうです(試していませんが)。
以下、必要な宣言を置いておきます。
コード: 全て選択
Declare Function DefineDosDevice Lib "kernel32" Alias "DefineDosDeviceA" (
dwFlags As DWord,
lpDeviceName As *Byte,
lpTargetPath As *Byte) As BOOL
Const DDD_RAW_TARGET_PATH = &h00000001
Const DDD_REMOVE_DEFINITION = &h00000002
Const DDD_EXACT_MATCH_ON_REMOVE = &h0000004
Const DDD_NO_BROADCAST_SYSTEM = &h00000008
Const DDD_LUID_BROADCAST_DRIVE = &h00000010
NT系限定ですが、DefineDosDeviceという関数はどうでしょうか。
[code]DefineDosDevice(0, "W:", "C:\WINDOWS")[/code]
これで、Subst W: C:\WINDOWS相当になります。1番目の引数の0をDDD_REMOVE_DEFINITIONにすれば、削除になるそうです(試していませんが)。
以下、必要な宣言を置いておきます。
[code]Declare Function DefineDosDevice Lib "kernel32" Alias "DefineDosDeviceA" (
dwFlags As DWord,
lpDeviceName As *Byte,
lpTargetPath As *Byte) As BOOL
Const DDD_RAW_TARGET_PATH = &h00000001
Const DDD_REMOVE_DEFINITION = &h00000002
Const DDD_EXACT_MATCH_ON_REMOVE = &h0000004
Const DDD_NO_BROADCAST_SYSTEM = &h00000008
Const DDD_LUID_BROADCAST_DRIVE = &h00000010
[/code]