C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[13]: ドライブが同じストレージに属するか調べる方法


(過去ログ 141 を表示中)

[トピック内 19 記事 (1 - 19 表示)]  << 0 >>

■82511 / inTopicNo.1)  ドライブが同じストレージに属するか調べる方法
  
□投稿者/ イカ太郎 (1回)-(2017/01/12(Thu) 20:20:25)

分類:[.NET 全般] 


VB.NETに関する質問です。

例えば、
SSDとHDDを接続したPDで
SSD内にCとDドライブを作成し
HDD内にEとFドライブを作成しているとします。

この場合、CとDドライブやEとFドライブはそれぞれ同じストレージ内に存在し、
CとEや、DとF等は異なるストレージに存在することになります。

このように指定した二つドライブパスが
同じストレージに属しているかどうか調べたいのですが
どのようにすれば良いですか?




引用返信 編集キー/
■82512 / inTopicNo.2)  Re[1]: ドライブが同じストレージに属するか調べる方法
□投稿者/ 魔界の仮面弁士 (1051回)-(2017/01/12(Thu) 20:53:13)
2017/01/12(Thu) 21:03:21 編集(投稿者)

No82511 (イカ太郎 さん) に返信
> SSDとHDDを接続したPDで
(Panasonic の PD ドライブ買ってました…)


> このように指定した二つドライブパスが
> 同じストレージに属しているかどうか調べたいのですが
> どのようにすれば良いですか?
固定ディスクが相手なら WMI を使って辿れます。
https://msdn.microsoft.com/ja-jp/library/aa394134.aspx
https://msdn.microsoft.com/ja-jp/library/aa394175.aspx


下記は VB ではなく VBScript のコードですが、参考にしてみてください。
ドライブレターが割り当てられていないパーティションも調べられます。
https://gallery.technet.microsoft.com/scriptcenter/1abfce9f-d531-440e-9500-b9d7d2e454df

VBScript なので、System.Management 名前空間のマネージクラスではなく
COM の SWbemServices オブジェクトが使われていますが、足掛かりとして。
引用返信 編集キー/
■82515 / inTopicNo.3)  Re[1]: ドライブが同じストレージに属するか調べる方法
□投稿者/ Azulean (768回)-(2017/01/12(Thu) 21:56:50)
PD ドライブ、懐かしいですね。

No82511 (イカ太郎 さん) に返信
> このように指定した二つドライブパスが
> 同じストレージに属しているかどうか調べたいのですが
> どのようにすれば良いですか?

ちなみに、NTFS だと、フォルダー以下に別パーティションを割り当てると言うことができます。
たとえば、D:\ と D:\Hdd1 と D:\Hdd2 で別々のパーティション、別々のストレージを割り当てることができます。

今回の要求・背景がわかりませんが、このあたりは気にしなくて良いと思っていていいですかね…?
引用返信 編集キー/
■82516 / inTopicNo.4)  Re[2]: ドライブが同じストレージに属するか調べる方法
□投稿者/ 魔界の仮面弁士 (1052回)-(2017/01/12(Thu) 22:36:57)
No82515 (Azulean さん) に返信
> ちなみに、NTFS だと、フォルダー以下に別パーティションを割り当てると言うことができます。
> たとえば、D:\ と D:\Hdd1 と D:\Hdd2 で別々のパーティション、別々のストレージを割り当てることができます。

仮想ハードディスク ファイルを C:\hoge\storage.vhd に作成し、
その 1 個のディスク上の同一パーティーションを、
E:\ と C:\TestStorage\ の 2 箇所に同時に割り当てる…なんてこともできますね。

この場合、No82512 の方法だと E:\ と C:\ は異なるストレージとして認識されます。


あとはハードウェア RAID やソフトウェア RAID が構成されていた場合はどう考えるのか、とか。
引用返信 編集キー/
■82517 / inTopicNo.5)  Re[3]: ドライブが同じストレージに属するか調べる方法
□投稿者/ 774RR (468回)-(2017/01/13(Fri) 08:30:38)
JBOD とか。
ネットワークドライブ X: と Y: が物理的に同じ装置であるとか無いとか。

引用返信 編集キー/
■82531 / inTopicNo.6)  Re[4]: ドライブが同じストレージに属するか調べる方法
□投稿者/ イカ太郎 (3回)-(2017/01/14(Sat) 13:21:08)
ありがとうございます。

http://stackoverflow.com/questions/9346320/wmi-to-get-drive-letter-association-with-physical-drive-path-misses-cdroms


このページの方法で所望することができました。

しかしWMIを使った方がもっとスマートにできるのでしょうか?

https://msdn.microsoft.com/ja-jp/library/aa394134.aspx

の方法はC#用のコードなのでVBではどのように使えば良いか分かりません。

http://www.wmifun.net/sample/win32_diskpartition.html

の方法でもそれらしいことができるのですが
C:やD:から直接ドライブ情報を抜き出す方法が分かりません。

http://dobon.net/vb/dotnet/file/driveinfo.html

この方法がもっとエレガントな気がしますが
同じディスクにあるかどうかの調べ方が分かりません。

どうすれば良いでしょうか?







引用返信 編集キー/
■82538 / inTopicNo.7)  Re[5]: ドライブが同じストレージに属するか調べる方法
□投稿者/ 魔界の仮面弁士 (1056回)-(2017/01/14(Sat) 16:40:59)
No82531 (イカ太郎 さん) に返信
> http://stackoverflow.com/questions/9346320/wmi-to-get-drive-letter-association-with-physical-drive-path-misses-cdroms
> このページの方法で所望することができました。
> しかしWMIを使った方がもっとスマートにできるのでしょうか?

そのページの前半に書かれているのが、WMI を使った方法ですよ。
Win32_LogicalDiskToPartition クラスから辿るコードになっています。

後半には FileSystemObject を使った例がありますが、これだと今回の目的は満たせ無いでしょうし。



そのページで紹介されている WMI のコードは、
VBA から COM ベースで呼び出しているコードになっています。
VB.NET でも同じようにかけますが、マネージクラスの方が良いでしょう。


直接 System.Management.ManagementObject などを利用しても良いのですが、
ここでは型付き WMI オブジェクト(MgmtClassGen)を利用したコードで書いてみます。


Imports ROOT.CIMV2.Win32
Module Module1
 Sub Main()
  Dim q = From map As LogicalDiskToPartition In LogicalDiskToPartition.GetInstances()
      Select New LogicalDisk(map.Dependent).Name, New DiskPartition(map.Antecedent).DiskIndex

  For Each o In q
   Console.WriteLine("{0} はディスク#{1}にあります。", o.Name, o.DiskIndex)
  Next
 End Sub
End Module


出力結果は、たとえば下記のようになります。

C: はディスク#0にあります。
D: はディスク#0にあります。
E: はディスク#1にあります。



LINQ を使わない場合は、こんな感じになります。
ついでに Dispose も明示しておきます。


'http://www.wmifun.net/library/win32_logicaldisktopartition.html
For Each map As LogicalDiskToPartition In LogicalDiskToPartition.GetInstances()
  Dim partition As New DiskPartition(map.Antecedent)  'Win32_DiskPartition
  Dim logicalDisk As New LogicalDisk(map.Dependent)   'Win32_LogicalDisk

  Console.WriteLine(logicalDisk.Name & " → " & partition.DeviceID)

  'Console.WriteLine(" Name = {0}", logicalDisk.Name)
  'Console.WriteLine(" Volume = {0}", logicalDisk.VolumeName)
  'Console.WriteLine(" FileSystem = {0}", logicalDisk.FileSystem)
  'Console.WriteLine(" Size = {0}", If(logicalDisk.IsSizeNull, "", logicalDisk.Size))
  'Console.WriteLine(" FreeSpace = {0}", If(logicalDisk.IsFreeSpaceNull, "", logicalDisk.FreeSpace))
  'Console.WriteLine(" Disk = {0}", partition.DiskIndex)
  'Console.WriteLine(" Partition = {0}", partition.Index)

  logicalDisk.Dispose()
  partition.Dispose()
  map.Dispose()
Next



ただし上記の方法だと、ドライブレターが割り当てられていないパーティションの
Win32_DiskPartition を拾えません。未割当のパーティションも調査したい場合は、
Win32_LogicalDiskToPartition => Win32_LogicalDisk と辿るのではなく、
Win32_DiskDriveToDiskPartition => Win32_DiskDrive と辿ります。



'Win32_LogicalDiskToPartition を列挙
For Each map As DiskDriveToDiskPartition In DiskDriveToDiskPartition.GetInstances()
  Dim drive As New DiskDrive(map.Antecedent)      'Win32_DiskDrive
  Dim partition As New DiskPartition(map.Dependent)   'Win32_DiskPartition

  Console.WriteLine(partition.Name)

  'Console.WriteLine("Drive DeviceID = {0}", drive.DeviceID)
  'Console.WriteLine("Drive Name = {0}", drive.Name)
  'Console.WriteLine("Drive Caption = {0}", drive.Caption)
  'Console.WriteLine("Drive Index = {0}", drive.Index)
  'Console.WriteLine("Drive InterfaceType = {0}", drive.InterfaceType)
  'Console.WriteLine("Drive MediaType = {0}", drive.MediaType)
  'Console.WriteLine("Drive Manufacturer = {0}", drive.Manufacturer)
  'Console.WriteLine("Drive Model = {0}", drive.Model)
  'Console.WriteLine("Drive SerialNumber = {0}", drive.SerialNumber)

  'Console.WriteLine(" Partition DeviceID = {0}", partition.DeviceID)
  'Console.WriteLine(" Partition Name = {0}", partition.Name)
  'Console.WriteLine(" Partition Caption = {0}", partition.Caption)
  'Console.WriteLine(" Partition Index = {0}", partition.Index)
  'Console.WriteLine(" Partition DiskIndex = {0}", partition.DiskIndex)
  'Console.WriteLine(" Partition Type = {0}", partition.Type)

  drive.Dispose()
  partition.Dispose()
  map.Dispose()
Next
引用返信 編集キー/
■82542 / inTopicNo.8)  Re[6]: ドライブが同じストレージに属するか調べる方法
□投稿者/ イカ太郎 (4回)-(2017/01/14(Sat) 18:17:45)
ありがとうございます。

一つ目の方法を試してみたのですが
ROOT.CIMV2.Win32
が見つからないというエラーと
LogicalDiskToPartition
が宣言されていないというエラーが出ます

どうすれば良いでしょうか?
 
引用返信 編集キー/
■82544 / inTopicNo.9)  Re[7]: ドライブが同じストレージに属するか調べる方法
□投稿者/ 魔界の仮面弁士 (1059回)-(2017/01/14(Sat) 18:49:16)
No82542 (イカ太郎 さん) に返信
> > ここでは型付き WMI オブジェクト(MgmtClassGen)を利用したコードで書いてみます。

【MgmtClassGen】について調べてみてください。
https://msdn.microsoft.com/ja-jp/library/2wkebaxa.aspx


> ROOT.CIMV2.Win32
> が見つからないというエラーと
> LogicalDiskToPartition
> が宣言されていないというエラーが出ます

(1) スタートメニューから、Visual Studio コマンド プロンプト を起動します。

(2) 下記のコマンドを実行します。出力先となる C:\temp\ の指定は、適宜修正してください。

MgmtClassGen Win32_DiskPartition /L VB /N root\cimv2 /P C:\temp\Win32_DiskPartition.vb
MgmtClassGen Win32_DiskDrive /L VB /N root\cimv2 /P C:\temp\Win32_DiskDrive.vb
MgmtClassGen Win32_DiskDriveToDiskPartition /L VB /N root\cimv2 /P C:\temp\Win32_DiskDriveToDiskPartition.vb
MgmtClassGen Win32_LogicalDisk /L VB /N root\cimv2 /P C:\temp\Win32_LogicalDisk.vb
MgmtClassGen Win32_LogicalDiskToPartition /L VB /N root\cimv2 /P C:\temp\Win32_LogicalDiskToPartition.vb

(3) Visual Basic でコンソール アプリケーション のプロジェクトを作成します。

(4) 参照設定に System.Management を加えます。

(5) プロジェクトに、先ほど作成したファイルを 3 つ加えます。
 Win32_DiskPartition.vb
 Win32_LogicalDisk.vb
 Win32_LogicalDiskToPartition.vb

※残った Win32_DiskDrive.vb と Win32_DiskDriveToDiskPartition.vb の 2 つは、
 今はプロジェクトに含めなくても構いません。これは、最後に書いた
 「ドライブレターが割り当てられていないパーティション」用のクラスです。

(6) プロジェクトの プロパティを開きます。
[アプリケーション]タブの [ルート名前空間]を削除してから、
No82538 のコードを貼り付けてください。



これで動作すると思います。


もし、手順 6 でルート名前空間を残したい場合には、
Module1 の先頭に書いた名前空間の修正が必要です。

'Imports ROOT.CIMV2.Win32
Imports ConsoleApplication1.ROOT.CIMV2.Win32


ただ、これだと分かりにくいので、できれば自動生成された .vb ファイルの冒頭にある
「Namespace ROOT.CIMV2.Win32」の部分を
「Namespace Global.ROOT.CIMV2.Win32」に書き換えた方が良いでしょう。
この修正なら、呼び出し側は「Imports ROOT.CIMV2.Win32」のままで大丈夫です。
引用返信 編集キー/
■82545 / inTopicNo.10)  Re[8]: ドライブが同じストレージに属するか調べる方法
□投稿者/ イカ太郎 (5回)-(2017/01/14(Sat) 19:25:19)
ありがとうございます。

コマンドプロンプトで試してみたのですが
五つのファイルとも


C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>MgmtClassGen Win32_Logica
lDisk /L VB /N root\cimv2 /P C:\temp\Win32_LogicalDisk.vb
Microsoft (R) .NET Framework Version 3.5.30729.1
Copyright (C) Microsoft Corporation. All rights reserved.
Generating Code for WMI Class Win32_LogicalDisk ...
Errors Occurred!!!! Reason : パス 'C:\temp\Win32_LogicalDisk.vb' の一部が見つか
りませんでした。



というエラーが発生してファイルが生成されませんでした。

C:\tempフォルダーは間違いなく存在します。

何が原因でしょうか?
Expressを使っているためでしょうか?




引用返信 編集キー/
■82547 / inTopicNo.11)  Re[9]: ドライブが同じストレージに属するか調べる方法
□投稿者/ イカ太郎 (7回)-(2017/01/14(Sat) 19:35:49)
あと、ちなみに
http://stackoverflow.com/questions/9346320/wmi-to-get-drive-letter-association-with-physical-drive-path-misses-cdroms
の方法だと一秒くらいかかるのですが
もっとも高速に取得できる方法はどれでしょうか?
 
引用返信 編集キー/
■82548 / inTopicNo.12)  Re[9]: ドライブが同じストレージに属するか調べる方法
□投稿者/ 魔界の仮面弁士 (1060回)-(2017/01/14(Sat) 19:37:02)
No82545 (イカ太郎 さん) に返信
> C:\tempフォルダーは間違いなく存在します。

スペルミスで無いなら、そのフォルダへの書き込みアクセス権があるかどうかを
確認してみてください。存在しないフォルダの他、アクセス権が不足している場合にも、
『パス 'C:\temp\Win32_LogicalDisk.vb' の一部が見つかりませんでした。』が報告されます。


> Expressを使っているためでしょうか?
Express を使っていないので分かりません。
引用返信 編集キー/
■82549 / inTopicNo.13)  Re[9]: ドライブが同じストレージに属するか調べる方法
□投稿者/ 魔界の仮面弁士 (1061回)-(2017/01/14(Sat) 20:00:02)
No82545 (イカ太郎 さん) に返信
> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>MgmtClassGen Win32_Logica
> lDisk /L VB /N root\cimv2 /P C:\temp\Win32_LogicalDisk.vb
> Microsoft (R) .NET Framework Version 3.5.30729.1

『Microsoft Visual Studio 10.0』は、Visual Studio 2010 のことなので、
.NET 4 版が呼び出されるものと思っていたのですが、Express だと違うのでしょうか?


当方環境で使っていたのは、VS2012 付属版(.NET Framework Version 4.0.30319.17929)
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\mgmtclassgen.exe

および、VS2010 付属版(.NET Framework Version 4.0.30319.1)
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\mgmtclassgen.exe
です。どちらも、当方では問題なく呼び出せました。


念のため、VS2008 のコマンドプロンプト(.NET Framework Version 3.5.30729.1)や
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\mgmtclassgen.exe

VS2005 (.NET Framework Version 2.0.50727.42) でも確認してみましたが、
C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\Bin\MgmtClassGen.exe

いずれも『コードは正常に生成されました。』と表示されます。



> Errors Occurred!!!! Reason : パス 'C:\temp\Win32_LogicalDisk.vb' の一部が見つかりませんでした。

『エラーが発生しました。 原因 : パス 'C:\temp…』ではなく
『Errors Occurred!!!! Reason : パス 'C:\temp…』になっていますね。


英語版が呼び出されていて、日本語版の情報をうまく引き出せないとか?
引用返信 編集キー/
■82550 / inTopicNo.14)  Re[10]: ドライブが同じストレージに属するか調べる方法
□投稿者/ イカ太郎 (8回)-(2017/01/14(Sat) 20:07:30)
ありがとうございます。


仰る通り出力先フォルダーを変えるとうまくいきました。

更に教えてくださった通り、名前空間でエラーが出たので
名前を削除するとうまくいきました。
できれば名前空間名を変えたくないので

'Imports ROOT.CIMV2.Win32
Imports ConsoleApplication1.ROOT.CIMV2.Win32


ただ、これだと分かりにくいので、できれば自動生成された .vb ファイルの冒頭にある
「Namespace ROOT.CIMV2.Win32」の部分を
「Namespace Global.ROOT.CIMV2.Win32」に書き換えた方が良いでしょう。
この修正なら、呼び出し側は「Imports ROOT.CIMV2.Win32」のままで大丈夫です。


というのを試してみました。

しかし、いずれも、「見つかりません」というエラーが出てうまくいきません

なぜでしょうか?
 
引用返信 編集キー/
■82551 / inTopicNo.15)  Re[10]: ドライブが同じストレージに属するか調べる方法
□投稿者/ イカ太郎 (10回)-(2017/01/14(Sat) 20:49:25)
すいません 
WindowsApplication1
を使うとうまくいきました

Globalを使う方はやはりうまくいきませんが、

引用返信 編集キー/
■82552 / inTopicNo.16)  Re[11]: ドライブが同じストレージに属するか調べる方法
□投稿者/ イカ太郎 (11回)-(2017/01/14(Sat) 20:52:47)
あともう一つ教えてください

Dim Drive_hai(5,1)


というような配列を作成し、

1次元目にC:,D:,E:・・・というドライブ名を格納し
2次元目にDisk1,Disk2・・・というディスク名を格納した後に、
C:やD:といった文字列から直接
2次元目の文字列を取り出したいのですが
いちいち配列から検索せずに直接取り出すような方法はございますでしょうか?

A,B,C・・・に1,2,3という数字を割り当て、
文字列から直接取り出すという方法しかないでしょうか?



引用返信 編集キー/
■82569 / inTopicNo.17)  Re[11]: ドライブが同じストレージに属するか調べる方法
□投稿者/ 魔界の仮面弁士 (1062回)-(2017/01/16(Mon) 09:28:04)
No82550 (イカ太郎 さん) に返信
> 仰る通り出力先フォルダーを変えるとうまくいきました。

それは、C:\temp\ のパス指定が間違っていたということでしょうか?
それとも、権限不足だったということでしょうか?



No82551 (イカ太郎 さん) に返信
> すいません 
> WindowsApplication1
> を使うとうまくいきました

それでうまくいったということは、 No82544
>> (3) Visual Basic でコンソール アプリケーション のプロジェクトを作成します。
の部分で『コンソール アプリケーション』を選択しなかったのでは無いでしょうか。


なお、ここに指定する "ConsoleApplication1" というのは、
>> (6) プロジェクトの プロパティを開きます。
>> [アプリケーション]タブの [ルート名前空間]を
に書かれていた文字列の事です。


> Globalを使う方はやはりうまくいきませんが、

最初に明示いただいていませんでしたが、VB2010 をお使いなのですよね?
Namespace に Global と書く方法は、VB2012 以降でのみ有効な記述方法です。

Global キーワードによる名前空間の完全修飾名はご存知ですか?


『Global』キーワードは VB2005 から追加された機能で、
名前空間の最上位であることを意味する予約語です。

 Dim s1 As String 'VB のプリミティブ型
 Dim s2 As System.String 'System 名前空間の String クラス
 Dim s3 As Global.System.String '☆


しかし 2010 以下では、Global を使えるのは呼び出し側だけであり、
宣言側の Namespace 部に利用することは出来ませんでした。
Namespace 部に Global を明示できるようになったのは 2012 以降です。


たとえば下記は、VB2012 では動作しますが、VB2010 以下では★の行でエラーになります。
※ [ルート名前空間] が ConsoleApplication1 であることを想定したコードです。


Namespace Global.Test
  Public Class X '★『'Global' はこのコンテキストで許可されていません。識別子を指定してください。』
  End Class
End Namespace

Namespace Test
  Public Class Y
  End Class
End Namespace

Module Module1
  Sub Main()
    Dim a As New Global.Test.X() '☆
    Dim b As New Test.Y()
    Dim c As New ConsoleApplication1.Test.Y()
    Dim d As New Global.ConsoleApplication1.Test.Y()
  End Sub
End Module


ちなみに、この [ルート名前空間] という考え方は C# にもありますが、
VB とは動作が異なるので注意して下さい。VB の[ルート名前空間]が
コンパイル時に補完されるものであるのに対し、C# のそれはコンパイル時ではなく
プロジェクトにファイルを追加したときに補完される仕様です。



// C# では、プロジェクトにコードファイルを追加したときに namespace に
// [ルート名前空間] や [サブフォルダ名] が名前空間に補完されます。
namespace ConsoleApplication1
{
  class Class1
  {
  }
}


' VB の場合、追加したファイルには Namespace は補完されませんが、
' コンパイル時に、プロジェクト全体に対して [ルート名前空間] が補完されます。
Public Class Class1
 
End Class



既存のプロジェクトの [ルート名前空間] を変更した場合、
VB ではプロジェクト内の自作クラスすべての名前空間が更新されますが、
C# では既存の自作クラスには影響を与えず、次回以降に追加したファイルのみが対象です。
引用返信 編集キー/
■82570 / inTopicNo.18)  Re[12]: ドライブが同じストレージに属するか調べる方法
□投稿者/ 魔界の仮面弁士 (1063回)-(2017/01/16(Mon) 09:51:12)
No82552 (イカ太郎 さん) に返信
> Dim Drive_hai(5,1)
> というような配列を作成し、

Dim Drive_hai(5,1) As String

では無く?



> 1次元目にC:,D:,E:・・・というドライブ名を格納し
> 2次元目にDisk1,Disk2・・・というディスク名を格納した後に、

こういうときには配列ではなく、Dictionary を使いましょう。
たとえば下記のようにします。

Dim Drive_hai As New Dictionary(Of String, String)()

値を設定する際には、
 Drive_hai.Add("C:", "Disk0")
 Drive_hai.Add("D:", "Disk0")
 Drive_hai.Add("E:", "Disk1")
のように Add メソッドを使うか、もしくは
 Drive_hai("Z:") = "Disk2"
のように、キー名を含めて代入します。


取り出すときには、
 TextBox1.Text = Drive_hai("C:")
のようにします。


もし、"Disk0" のような文字列ではなく、0 のような数値で格納するなら
 Dim Drive_hai As New Dictionary(Of String, UInteger)()
のようにします。
この場合、キー部("C:" など)は String 型、値部(0 など)を UInteger にしています。



指定したキーが登録されているかどうかは、ContainsKey メソッドで判断できます。

If Drive_hai.ContainsKey("X:") Then
  TextBox1.Text = Drive_hai("X:")
Else
  TextBox1.Text = "未登録"
End If

英単語 contain は「〜 を含んでいる」の意味ですね。それに三単現の -s が付いて Contains 。


Drive_hai の中身をループで列挙する場合はこんな感じです。

For Each entry In Drive_hai
  Dim driveLetter = entry.Key
  Dim diskNumber = entry.Value
  
Next


もしくはこれでも OK。

For Each driveLetter In Drive_hai.Keys
  Dim diskNumber = Drive_hai(driveLetter)
  
Next
引用返信 編集キー/
■82573 / inTopicNo.19)  Re[13]: ドライブが同じストレージに属するか調べる方法
□投稿者/ イカ太郎 (13回)-(2017/01/16(Mon) 19:44:36)
どうもありがとうございます。

知りたいことがずばり書かれてありました。


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -