ドライブにパスワード

タグの編集
投稿者 かずき  (社会人) 投稿日時 2009/1/31 20:17:15
マイコンピュータから外部ドライブにアクセスするときにパスワードを
求めるプログラムを作ろうと思います。
ロジックなどが思いつかないので、ご教示ください。
投稿者 初心者A  (社会人) 投稿日時 2009/1/31 22:17:34
>マイコンピュータから外部ドライブにアクセスするときにパスワードを
>求めるプログラムを作ろうと思います。
>ロジックなどが思いつかないので、ご教示ください。 
最初におことわりしておきますが、私はまだ初心者レベルのものですが、
一緒に考えさせてください。

まず、プログラムを組む前に、処理の流れをコンピュータが理解できるように日本語で書く
ことが大切であると教えられていますのでそれをやってみたいと思います。

(1)外部ドライブが存在するかどうかを調べる
(2)条件分岐
  存在しなければ、メッセージboxで「存在しません」のメッセージを表示する
  存在する場合は、「外部ドライブにアクセスする」

 ここで「外部ドライブにアクセス」するやり方が分からないので調べることにします。
 MSDNライブリやリファレンス本で調べます
 検索で「ドライブにアクセス」を入力しても、サンプルコードなどが見あたらないので
 このあたりは?です。

(3)パスワードを使用する仕方を調べる

おおまかな流れはこんなものでよいのでしょうか?



投稿者 初心者A  (社会人) 投稿日時 2009/1/31 22:59:08
「外部ドライブにアクセスする」には、Directory クラスを使うことがわかりました。
しかし、サンプルコードなどはないのでこれ以上はわかりませぬ。



Visual Basic .NET では、Directory クラスを通じてフォルダとドライブを処理できます。このクラスを使うと、システム上のドライブの管理だけでなく、フォルダの作成、編集、および削除を行うことができます。Directory クラスのよく使われるメソッドは、次のとおりです。

メソッド 説明 
CreateDirectory path で指定したすべてのディレクトリを作成します。 
Delete オーバーロードされたメソッドです。ディレクトリおよびそのディレクトリ内のディレクトリとファイルを削除します。 
Exists 指定したパスがディスク上の既存の DirectoryInfo オブジェクトを参照しているかどうかを確認します。 
GetDirectories オーバーロードされたメソッドです。現在のディレクトリにあるディレクトリの配列を取得します。 
GetDirectoryRoot 指定したパスのルート部分を返します。 
GetLogicalDrives 現在のコンピュータの論理ドライブの名前を取得します。 
GetParent 指定したパスの親ディレクトリを取得します。 
Move DirectoryInfo オブジェクトとその内容を新しいパスに移動します。 
SetCurrentDirectory 現在のディレクトリを設定します。 

参照
投稿者 初心者A  (社会人) 投稿日時 2009/1/31 23:06:16
(1)外部ドライブが存在するかどうかを調べる
(2)条件分岐
  存在しなければ、メッセージboxで「存在しません」のメッセージを表示する
  存在する場合は、「外部ドライブにアクセスする」
の部分は下記のコードが参考になるのかな?


http://msdn.microsoft.com/ja-jp/library/system.io.directory.aspx
投稿者 初心者A  (社会人) 投稿日時 2009/1/31 23:27:12

(3)パスワードを使用する仕方を調べる

は、下記のサンプルコードが参考になるのかな?
http://msdn.microsoft.com/ja-jp/library/d3223ht2.aspx

投稿者 初心者A  (社会人) 投稿日時 2009/2/1 03:35:02
http://msdn.microsoft.com/ja-jp/library/system.io.directory.getlogicaldrives.aspx
すべてのドライブを取得するということなので参考になるのかな?
投稿者 初心者A  (社会人) 投稿日時 2009/2/1 05:28:30
これはかずきさんを侮辱しているわけではないことをはじめにお断りしておきます。
 
かずきさんが作ろうとしているプログラムというのは、とっても高度で初心者レベルでは
手をだせないようなシロモノなのではないかと、ふと思ったのですが、

私のような初心者は、そのへんの程度がわからずに挑戦して、あえなくVBに挫折してしまう
ケースって多いのではないでしょうか。
投稿者 るきお  (社会人) 投稿日時 2009/2/2 21:42:58
ご質問の答えではありませんが回答を書きます。

>かずきさんが作ろうとしているプログラムというのは、とっても高度で初心者レベルでは
>手をだせないようなシロモノなのではないかと、ふと思ったのですが、
そうですね。要件にもよりますがかなり困難なプログラムになると思います。

たとえば、①かずきさんが作ったプログラムにフォルダやファイルにアクセスする機能があって、
そのときに外部ドライブ(外付けドライブ?)上にあるフォルダ・ファイルにアクセスする場合は
パスワードを要求するということでしたら、それほど難しくありません。

しかし、②マイコンピュータなどWindowsに備わっている機能から、外部ドライブにアクセスするときや
Excelなどでファイルを開いたり保存したりするときに外部ドライブを指定する場合などに
パスワードを要求しようとするのであればかなり難しいです。

>マイコンピュータから外部ドライブにアクセスするときにパスワードを
>求めるプログラムを作ろうと思います。
とかいてあるので②の方かなと思っています。

>ロジックなどが思いつかないので、ご教示ください。 
ロジックは「もし外部ドライブならパスワードを入力させて、判定する」という単純なものですが、
そのロジックを組み込む方法が難しいです。

たとえば、Excelで保存先に外部ドライブを指定した場合にこのロジックを実行するにはどうしたらよいでしょうか?ロジック以前にこういったところから考える必要があります。

それで肝心の方法なのですが、冒頭にも書いたようにわかりません。
多分Windows APIを使ってフックすることになる野ではないかと思いますが、それらしいAPIもざっと見たところありませんし、rootkit toolと呼ばれるアプリケーションでは多くのアプリケーションからフォルダを隠すことができるので、あるいはどうやってフォルダを隠しているのかわかればそこからやり方をたどれるかもしれないとは思いました。

>私のような初心者は、そのへんの程度がわからずに挑戦して、あえなくVBに挫折してしまう
>ケースって多いのではないでしょうか。  
私は壁にあたって止まり、壁にあたっては止まりを繰り返して理解が深まっていきました。
1つのことを簡単にはあきらめないという思いも必要ですが、引き際も肝心と思います。
引き際を探る意味でこの掲示板のようなコミュニティを利用していただければいいと思います。
投稿者 初心者A  (社会人) 投稿日時 2009/2/2 23:55:13
>1つのことを簡単にはあきらめないという思いも必要ですが、引き際も肝心と思います。
>引き際を探る意味でこの掲示板のようなコミュニティを利用していただければいいと思います。

そうですか。凡人が入り込めないプロ中のプロの領域もやはりあるのですね。
プログラミングの世界は深奥な世界なのですね。

私のようなものは、せいぜい万年初級レベルからは抜け出せないと思いますので、
とにかく「作品を完成させることに躍起になるのではなく、試行錯誤する、その過程も楽しんでいきたいと思ってます。
有り難うございました。これからも色々とおしえてくだい。