- PR -

【ASP.NET】ローカルPCのドライブ一覧表示がうまくいきません!

1
投稿者投稿内容
haruka
常連さん
会議室デビュー日: 2003/12/09
投稿数: 36
投稿日時: 2004-02-18 09:44
Haruka@まだまだ初心者です。

ASP.NETでWebアプリケーションを開発しています。
標題の件、非常に悩んでおりましてご教示ください。

クライアントPCのドライブ一覧を(DropDownListコントロールに)表示させたいのですが、
うまくいきません。以下のコードは、WebフォームのPage_Load()で記述しています。

Dim fsObj As Scripting.FileSystemObject
Dim Drive As Scripting.Drive
Dim strDrive as String

fsObj = CreateObject("Scripting.FileSystemObject", "")
Drive_dd.Items.Clear()
For Each Drive In fsObj.Drives
   strDrive = Drive.DriveLetter
   Drive_dd.Items.Add(New ListItem(strDrive ,strDrive))
Next

※CreateObject("Scripting.FileSystemObject", "")
ヘルプによると、第二引数が""の場合、ローカルコンピュータが使用されます。
と記述してあります。でも、表示されてくるのは、サーバの情報です。

はじめは、クライアントスクリプト(VB.Script)で以下のような記述をしましたが、
CreateObjectの部分で、「ActiveXコンポーネントはオブッジェクトを作成できません」
のエラーがでて断念して、上記のようにしました。
そもそも、VBScriptでなぜこのようなERRORがでるのかも不明です。
何か設定がたりないのでしょうか?

Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")

同じようなことをされている方、ご教示ください。
何卒宜しくお願いします。

冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2004-02-18 09:49
引用:

CreateObjectの部分で、「ActiveXコンポーネントはオブッジェクトを作成できません」
のエラーがでて断念して、上記のようにしました。
そもそも、VBScriptでなぜこのようなERRORがでるのかも不明です。
何か設定がたりないのでしょうか?


サーバーからクライアントのファイルを自由に使えたら、いわゆるウィルスも自由に作れます。
セキュリティについてよく勉強して下さい。
(ブラウザのセキュリティ設定を思いっきり下げれば動くかもしれないけど、お奨めできません)
haruka
常連さん
会議室デビュー日: 2003/12/09
投稿数: 36
投稿日時: 2004-02-18 09:57
Harukaです。

業務の性格上、ローカルPCの情報を取得するような仕様を実現しなくては
いけません。

セキュリティを下げるのはやむなく考えていまして、IEのセキュリティ上
ActiveXコントロールを「有効」にしています。

以上、宜しく願いします。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-02-18 10:07
引用:

harukaさんの書き込み (2004-02-18 09:44) より:
Haruka@まだまだ初心者です。

ASP.NETでWebアプリケーションを開発しています。
標題の件、非常に悩んでおりましてご教示ください。

クライアントPCのドライブ一覧を(DropDownListコントロールに)表示させたいのですが、
うまくいきません。以下のコードは、WebフォームのPage_Load()で記述しています。





webフォームのPage_load()はサーバサイドで実行されます。
webアプリケーションのプログラムには・・・

1.サーバサイドスクリプト
2.クライアントサイドスクリプト

の二つが存在します。

1はサーバ側で実行されます。
2はクライアント側で実行されます。

そして、先ほどwebフォームのPage_load()はサーバサイドで実行されます。
と言ったことと

引用:

※CreateObject("Scripting.FileSystemObject", "")
ヘルプによると、第二引数が""の場合、ローカルコンピュータが使用されます。
と記述してあります。でも、表示されてくるのは、サーバの情報です。



を見て考えると、ここでいうローカルコンピュータというのが

1.サーバ側
2.クライアント側

のどちらかが分かると思います。

#書籍等を利用してASP.NETの仕組みを理解された方がいいかもしれません。
haruka
常連さん
会議室デビュー日: 2003/12/09
投稿数: 36
投稿日時: 2004-02-18 10:18
返答ありがとうございます。そうですね。
サーバーサイドの部分に記述しているので、でるわけないですもんね。

それで、クライアントスクリプト(VB.Script)に以下のように記述するのですが、

Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")

CreateObjectの部分で、「ActiveXコンポーネントはオブッジェクトを作成できません」

ここでERRORがでるのがなぜなのでしょうか?
ASPではどうようのことができるのに、ASP.NETだとできないなんてことは
ないと思うのですが。困り果てました。
何卒宜しくお願いします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2004-02-18 13:57
回答ではありません。
引用:
ASPではどうようのことができるのに、ASP.NETだとできないなんてことは
ないと思うのですが。

ASPでできるというのは<% %>のなかに書くということですか?もしそうなら、それは
ASP.NETでいうサーバープログラムですよね?.NETでもサーバー側のコードで
Server.CreateObject("Scripting.FileSystemObject")
と書けば、この行自体はエラーにはならないですね。それと同じことだと思います。

ASPではドライブ一覧を表示できているのですか?もしそうならどうやっているかを
示せば、もう少しヒントになることが得られるかもしれません。

以下、推測を含みます。
引用:
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")

結果でしかないのですが、ActiveXまわりのセキュリティ設定をいじったら
エラーにはならないようになりました(IE6)。googleで検索すればいくつかヒント
らしきものが引っかかりますが、scrrun.dllなるファイルを使っているようなことが
書いてあったのでこれが登録されている必要があるのかも。
haruka
常連さん
会議室デビュー日: 2003/12/09
投稿数: 36
投稿日時: 2004-02-18 15:44
べるさん、返答ありがとうございます。うまくいきました。

他フォーラムにも同じような趣旨の質問をしていたのですが、
同様の回答を頂きまして、指摘されたとおりに設定変更したところ、
ERRORなくうまくいきました。

IEのイントラネットゾーンのセキュリティの設定で、

◎スクリプトを実行しても安全だとマークされていない
  ActiveXコントロールの初期化とスクリプトの実行

設定部分を『有効』に設定変更しました。
インターネットゾーンの設定変更をしてただけでした。。。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)