ファイルの存在を確認する方法として"FIleExists"がありますが、
あれはローカルのディスクにしか使用できないのでしょうか?
ネットワークドライブ内のファイルを調べようとしたのですが、うまく行きません。
調べたいファイルのパスは正しく取得できていますし、もちろんそのパスにファイルは存在します。

使用が可能なのか不可なのかと、もし不可なら他の方法も教えていただければと思います。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

まず、FileExists に指定するパスは


\\server\sharename\directory\file.ext
という形式にされていますでしょうか。

S:\directory\file.ext
としても、asp にとっては、S:ドライブが
どのネットワークパスなのか、わかりません。

次に、\\server\sharename はどのような
アクセス権になっていますでしょうか。
ASPを匿名ユーザーとしてアクセスすると、
「IUSER_サーバー名」のユーザーとしてASPスクリプトは
動作します。
このユーザーが共有ディレクトリにアクセス権があるか
確認していただければと思います。

あるいは、ASPファイルに対して匿名アクセスではなく
基本認証アクセスに変更してみると、アクセス権の
テストが行いやすくなるかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
FileExistsは物理パスでしか使えないんだから、
"\\Server\share\~"の形式にすればいいんですね。
非常に役立ちました。

ASPは奥が深いですね…。

お礼日時:2000/12/19 19:06

そのファイルはそのネットワーク上に公開されているものなのでしょうか?もしくは権限が必要だとか…。


そういった場合、エラーが起きることがあるのではないでしょうか?

もしそうだった場合、そのPCに共有フォルダをつくり、そのフォルダの共有設定をしてやる必要があります。
そういうのを全部ご存知の上で、この質問を出したとしたら………ごめんなさい、蛇足です。

蛇足ついでに共有フォルダの作り方。
1.「コントロールパネル」-「ネットワーク」-「ネットワーク設定」タブで「Microsoftネットワーク共有サービス」が追加されていることを確認。
2.フォルダを適当なところに作る。
3.そのフォルダで マウス右ボタン -「共有...」
4.「共有タブで「共有する」を選ぶ。

自分で墓の穴掘り掘りしてる気が…(^^;
    • good
    • 0

すごく単純な部分ではないかと思います。


ネットワークドライブへの検索ではなく、ネットワークに
繋がっているコンピュータの中のファイルになるので、
相手のマシン名の指定等をキチット行えばよろしいかと・・
\\マシン名\\フォルダー名\サブフォルダー名\ファイル名.xxx
たぶん。
私達のASPでも同じような事をしていますが、上記のようにしています。
    • good
    • 0
この回答へのお礼

ありがとうございます。非常に役立ちました。
ASPはまだまだ奥が深いですね。

お礼日時:2000/12/19 19:07

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QIIS7.0 他コンピュータへのフォルダアクセス

現在、2003Server R2 SP2、IIS6.0で稼動していたVB.Net aspのプログラムを、2008Server、IIS7.0に移行しているのですが、今まで問題なく動作していたファイルの取得が、うまくいかなくなりました。

別のファイルサーバ上(2003Server R2 SP2)に置いてあるxmlファイルを読み込むという動作をさせたいのですが、エクスプローラ上では問題なく開きます。また、VB.Net aspからのステップ実行でも正しく取得出来ているのです。
しかし、ビルドしてIISの規定のフォルダに置き、IEから呼び出すと読み込めず、ファイルが存在しない場合の処理に入ってしまいます・・
試しに2008SV側のローカル上にフォルダを置くと、正しく取得します。

・読み込むフォルダのアクセス権限をEveryOne→フルコントロールに
・2008SVでWindowsFireWallの許可対象に"WorldWideWeb(http)"を追加
 →2003SVではF/Wサービスを停止
・IIS7.0の[アプリケーションプール]
 →右クリック[詳細設定]
 →プロセスモデルのID変更
 →"NetworkService"から"LocalSystem"に変更

上記設定では試してはいるのですが、うまくいきません。
OS、IIS共にバージョンアップしてしまったので、どちらが原因なのか、調査のアタリを付ける方法でも結構です。
どなたかお知恵を貸してください。よろしくお願いいたします。

現在、2003Server R2 SP2、IIS6.0で稼動していたVB.Net aspのプログラムを、2008Server、IIS7.0に移行しているのですが、今まで問題なく動作していたファイルの取得が、うまくいかなくなりました。

別のファイルサーバ上(2003Server R2 SP2)に置いてあるxmlファイルを読み込むという動作をさせたいのですが、エクスプローラ上では問題なく開きます。また、VB.Net aspからのステップ実行でも正しく取得出来ているのです。
しかし、ビルドしてIISの規定のフォルダに置き、IEから呼び出すと読み込めず、ファイル...続きを読む

Aベストアンサー

IIS7の場合、UNC パススルー認証 を設定すればいけると思いますが、
http://support.microsoft.com/kb/214806/ja
上記は、UNCパス(ネットワークパス)にあるディレクトリを仮想ディレクトリにする方法なので、ちょっと違うのかもしれません。

また、上記に加え、UNC(外部サーバーにアクセスできるログインID)を別途作成し、web.config や問題のデータが格納されている別サーバー に作成したログインIDにアクセス権限を付与してあげればいけそうな気がします。
http://support.microsoft.com/kb/934515/

ちょっと環境がないので試してないんですが、もし上記でもダメだった場合は、またご連絡ください。

参考URL:http://support.microsoft.com/kb/934515/

QC#でのWNetAddConnection3の使い方を教えてください

現在、C#(VisualStudio2005)で共有フォルダの認証を行い、
そのフォルダ内のファイルを読み込む処理を行ないたいと考えています。

■動作------------------------------------------------------
1.ボタン押下によってフォルダ(\\aaa)をユーザ(user)、パスワード(pass)で認証を行なう
2.ファイル(bbb.txt)の内容をメッセージボックスに出力する
3.認証を切る

■現在の実装状況--------------------------------------------
private void btnGetShareFileData_Click(object sender, EventArgs e)
{
NETRESOURCE netresource = new NETRESOURCE();
netresource.dwType = 1;
netresource.lpLocalName = null;
netresource.lpRemoteName = "\\\\aaa";
netresource.lpProvider = null;
try
{
int returnNo1 = WNetAddConnection3(IntPtr.Zero, ref netresource, "user", "pass", 0);
System.IO.StreamReader streamReader =
new System.IO.StreamReader("\\\\aaa\\bbb.txt", System.Text.Encoding.GetEncoding(932));
MessageBox.Show(streamReader.ReadToEnd());
int returnNo2 = WNetCancelConnection2("\\\\aaa", "0", true);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
[StructLayout(LayoutKind.Sequential)]
public struct NETRESOURCE
{
public int dwType;
public string lpLocalName;
public string lpRemoteName;
public string lpProvider;
}

[DllImport("mpr.dll")]
private static extern int WNetAddConnection3(
System.IntPtr hWndOwner,
ref NETRESOURCE lpNetResource,
string lpPassword,
string lpUserName,
int dwFlags
);
[DllImport("mpr.dll")]
private static extern int WNetCancelConnection2(
string lpName,
string dwFlags,
bool fForce
);
[DllImport("mpr.dll")]
private static extern int WNetAddConnection2(
ref NETRESOURCE lpNetResource,
string lpPassword,
string lpUsername,
int dwFlags
);


■結果------------------------------------------------------
WNetAddConnection3の戻り値が「487」で
System.IO.StreamReader streamReaderを実行されると
「ログオン失敗:ユーザ名を認識できないかまたはパスワードが間違っています。」
とエラーになってします。

WNetAddConnection3でのログオン自体がうまくできていないのでしょうですが、
どうすればよいのかがわかりません。
(ちなみにWNetAddConnection2でやってみても同様です)

どなたか教えていただけないでしょうか?
いろいろなページは参考にさせていただいているのですが、
知識が足らず読み解くことができないので、
できればサンプルコード等を教えていただけると助かります。

よろしくお願いいたします。

現在、C#(VisualStudio2005)で共有フォルダの認証を行い、
そのフォルダ内のファイルを読み込む処理を行ないたいと考えています。

■動作------------------------------------------------------
1.ボタン押下によってフォルダ(\\aaa)をユーザ(user)、パスワード(pass)で認証を行なう
2.ファイル(bbb.txt)の内容をメッセージボックスに出力する
3.認証を切る

■現在の実装状況--------------------------------------------
private void btnGetShareFileData_Click(object sender, Eve...続きを読む

Aベストアンサー

NETRESOURCE構造体の定義が違うからでしょう
メンバーが足りないのです

public struct NETRESOURCE
{
  public int dwScope;     // Added
  public int dwType;
  public int dwDisplayType;  // Added
  public int dwUsage;     // Added
  public string lpLocalName;
  public string lpRemoteName;
  public string lpComment;  // Added
  public string lpProvider;
}
メンバーが足りないためにAPIの中で違う場所を参照してしまうため共有資源の名前が受け取れていないのです
VS2005付属のMSDNなどで NETRESOUSE構造体を確認しましょう
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/wnet/wnet/netresource_str.htm

NETRESOURCE構造体の定義が違うからでしょう
メンバーが足りないのです

public struct NETRESOURCE
{
  public int dwScope;     // Added
  public int dwType;
  public int dwDisplayType;  // Added
  public int dwUsage;     // Added
  public string lpLocalName;
  public string lpRemoteName;
  public string lpComment;  // Added
  public string lpProvider;
}
メンバーが足りないためにAPIの中で違う場所を参照してしまうため共有資源の名前が受け...続きを読む

QVB6にてネットワーク上にある共有フォルダを・・・

VB初心者の者です。
ネットワーク上にある共有フォルダ有無をチェックするプログラムを作ろうとしています。

If Dir$("\\パソコン名\共有フォルダ名", vbDirectory) <> "" Then
   '共有フォルダが確認できた時の処理(A)
Else
   '共有フォルダが確認できなかった時の処理(B)
End If

上記プログラムを実行したところ、ErrorNo.52 「ファイル名または番号が不正です」というエラーで落ちてしまいます。
A、Bのどちらにも入ってきません。

「パソコン名\共有フォルダ名」は、エクスプローラ上から見えています(Pingも通ります)。
ネットワークドライブを割り当てる方法もあるのですが、事情によりその方法はNGなため、「\\パソコン名\共有フォルダ名」で何とかできないか模索中です。

参照先PCの設定で、接続を許可するユーザーの設定のようなものがあるのでしょうか。
解決策をご存知の方がいらっしゃいましたら、ご教示お願いします(アドバイス等何でも結構です)。
環境は、参照先・元のPC共にWindows2000(SP4)、言語はVB6(SP6)、会社内のLANにて実行しています。

よろしくお願いいたします。

VB初心者の者です。
ネットワーク上にある共有フォルダ有無をチェックするプログラムを作ろうとしています。

If Dir$("\\パソコン名\共有フォルダ名", vbDirectory) <> "" Then
   '共有フォルダが確認できた時の処理(A)
Else
   '共有フォルダが確認できなかった時の処理(B)
End If

上記プログラムを実行したところ、ErrorNo.52 「ファイル名または番号が不正です」というエラーで落ちてしまいます。
A、Bのどちらにも入ってきません。

「パソコン名\共有フォルダ名」は、エクスプローラ上...続きを読む

Aベストアンサー

せっかく VB6 なんだから Dir とか古くて貧弱な関数じゃなくて、FileSystemObject を使ったらどうでしょうか?

Private Sub hoge()
  On Error ErrorProc
  
  Dim fso As New Scripting.FileSystemObject
  If fso.FolderExists("\\serverName\shareName") Then
    ' 存在した場合の処理
  Else
    ' 存在しなかった場合の処理
  End If

ExitProc:
  Exit Sub
ErrorProc:
  ' エラーだった場合の処理
  Resume ExitProc
End Sub

QVBAでネットワークコンピュータのファイルにアクセスできない(XL2000)

EXCEL2000で、EXCELのファイルと、データ専用のファイルを組にして運用しています。都度データファイルのバックアップを取るために、VBA中でネットワークコンピュータ(LAN)のフォルダにFileCopyしようとするのですが、ファイルが見つからないというエラーが出て、コピー出来ません。しかし、エクスプローラーで一回ネットワークフォルダーを開いてから終了し、再度VBAを実行すると問題なくコピー出来ます(何か道筋が出来るらしい)。
また、WEBで調べてAPIのCopyFileを用いると良いという記事をみて、トライしましたが事態は同じでした。なお、過去の類似の質問で、WindowsXPの場合のMicrosoftの情報が紹介されていましたが、本ケースでは両方のPCともWindows98です。
以上、宜しくお願いします。

Aベストアンサー

こんにちは。様子が見えてきましたね。
パスワードの件、おそらく他に正解があると思いますが、
ネットワークドライブを割当てるのが手っ取り早いかと。

Dim FS, WshNet
Const strDrive = "Z:"

Set FS = CreateObject("Scripting.FileSystemObject")
Set WshNet = CreateObject("WScript.Network")

If Not FS.DriveExists(strDrive) Then
WshNet.MapNetworkDrive strDrive, "\\コピー先PC\コピー先フォルダ", False, , "パスワード"
End If
FS.CopyFile "コピー元パス", strDrive & "\", True

Set WshNet = Nothing
Set FS = Nothing


です。
ドライブ割当ては、

WshNet.MapNetworkDrive "ドライブレター", "割当てパス", False, "ユーザ名", "パスワード"

の部分で、False を True にすると、起動時に再接続します。
また、WinMe で確認しましたがユーザ名は省略できるようです。

ファイルのコピーに FileSystemObject を使っているようなので大丈夫とは思いますが、
念のため、実行する端末には最新の Win98 用 スクリプトランタイムを入れてください。

下記からダウンロードできます。

参考URL:http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=E74494D3-C4E1-4E18-9C6C-0EA28C9A5D9D

こんにちは。様子が見えてきましたね。
パスワードの件、おそらく他に正解があると思いますが、
ネットワークドライブを割当てるのが手っ取り早いかと。

Dim FS, WshNet
Const strDrive = "Z:"

Set FS = CreateObject("Scripting.FileSystemObject")
Set WshNet = CreateObject("WScript.Network")

If Not FS.DriveExists(strDrive) Then
WshNet.MapNetworkDrive strDrive, "\\コピー先PC\コピー先フォルダ", False, , "パスワード"
End If
FS.CopyFile "コピー元パス", strDrive & "\", True...続きを読む

Qフルパスから最後のディレクトリ名を取得したい。

vb.netなのですが、例えば
c:\aaa\bbb\ccc\ddd\eee\fff.exe
というフルパスがあったとして、
eeeというディレクトリ名を取得したいのですが、
何か良い方法はないでしょうか。
それぞれのディレクトリ名の文字数や階層数は
決まっていないのですが、オススメの方法が
ありましたら、教えて頂けると助かります。

Aベストアンサー

MessageBox.Show(IO.Path.GetFileName(IO.Path.GetDirectoryName(myPath)))

IO.Path の GetDirectoryName でフォルダのフルパスを取得して、さらに IO.Path の GetFileName で最終フォルダ(またはファイル)の名前を取得。

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。

QASP.NETでのメッセージ画面を出すには

はじめまして。
ASP.NET(C#)で、開発をしています。
例えば、内部である処理が終わった後に「完了!」みたいなメッセージ画面をポップアップさせたいと思っております。いろいろ調べてはいるんですが、方法がわかりません。JSを使わなければならないのかなとは思いますが、具体的な方法がわかりません。
よい方法がありましたら、教えていただけないでしょうか。よろしくお願いいたします。

Aベストアンサー

確認は取れていませんが、多分以下のHPの内容でいけると思いますが…。
参考に如何でしょうか。

・ASP.NETでメッセージボックス(OK・NO)の処理について
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5952&forum=7&6

・Webアプリでメッセージボックスを使いたい
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1644&forum=7&7

Qhtmlのfileタグに自動で値を入れる方法

htmlのタグでいって
<input type="file">を用いてファイルをサーバーにアップロードしたいと思っています。で、このとき、ファイル名は任意に選べるのではなく固定で送信したいと思っています。

すなわち、HTMLを読み込んだ時点で、fileのテキストボックスにファイルパスが埋め込まれているか、JavaScriptで、ファイルパスを自動入力するようにしたいと思っています。

最終的には、form内のオブジェクトをすべて非表示にし、onload時にsubmitするような形にしたいと思っています。いろいろ事情があって苦肉の策になっています…。

とりあえず(だめだとは思っていたのですが)
<input type="file" value="ファイルパス" name="filepath">
と直書きにしてみたり
document.all.filepath.value = "ファイルパス";
などとしてみたりしましたがだめでした…。
W3C勧告の使用上はvalueでファイルパスを指定できるようになっているようなのですが、現在の一般的なブラウザでは禁止されているようですね。

このような場合、何らかの方法でfileにファイルパスを自動入力することはできますでしょうか?
もしできない場合、何らかの方法で実現する方法はありますでしょうか?よろしくお願いします。

ちなみに実現できればいい環境は
WinXP環境のIE6です。言語はクライアント言語はJavaScriptのみで、という条件付です。
できないかもしれないのですが、こういうのって必要になるときもあるよなーなどと思っており、もしかしたら解決方法があるかもしれないと思い質問しました。よろしくお願いします。

htmlのタグでいって
<input type="file">を用いてファイルをサーバーにアップロードしたいと思っています。で、このとき、ファイル名は任意に選べるのではなく固定で送信したいと思っています。

すなわち、HTMLを読み込んだ時点で、fileのテキストボックスにファイルパスが埋め込まれているか、JavaScriptで、ファイルパスを自動入力するようにしたいと思っています。

最終的には、form内のオブジェクトをすべて非表示にし、onload時にsubmitするような形にしたいと思っています。いろいろ事情があって苦肉...続きを読む

Aベストアンサー

やっぱ無理じゃないでしょうか。
なにか裏ワザ的な方法で一時的にできたとしても、いつか直されるかもしれないのでおいそれとは使えないし。

>W3C勧告の使用上はvalueでファイルパスを指定できるようになっている
→参考URL 「ユーザが明示的に送信を求めたファイル以外のものは送ってはいけない」とあります。

参考URL:http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/appendix/notes.html#forms-security

Qファイルやディレクトリの存在確認を行う方法

ファイルをオープンするのはfopenでOKですが、ファイルやディレクトリの存在確認を行う方法が知りたいです。

何か組み合わせて作るものなのでしょうか?
perlとか便利な演算子があるのですが、C/C++って器用ではないですね。
これは処理系?依存の内容ですか?

私の環境は VC6, VC2005 Windows2000です。

Aベストアンサー

int access(const char* path, int mode);
int stat(const char* path, struct stat* sb);

かな?
MSDN を引くと _access_s() を使えとか書いてあるけど。

QVB.net Double と Decimal の違い?

VB.NETで開発しています
元々はC言語で開発してましたが、最近VB.NETをしています
で、以前誰かが作ったプログラムをデバッグしているんですが、その中に Double や Decimal が混じっています
どちらも 浮動小数点 と思うんですが 違いがいまいちわかりません
混じらせる利点ってないと思うんですが、どうなんでしょう?
有効桁数が違うとかだけだったら 簡単なんですが・・

Aベストアンサー

Doubleは俗に言う倍精度浮動小数点数と同じです。
精度重視したのか、Longより大きい値を表現できることを意識したのか、10進数型(Decimal)を使った理由(作者の意図)はこちらも良くわかりません。
Decimalを含むデータ型の説明は下記にあります。
データ型をクリックで詳細説明を参照できます。
http://msdn.microsoft.com/ja-jp/library/47zceaw7.aspx
 


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング