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

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

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

Re[3]: 別サーバーへのフォルダの作成


(過去ログ 80 を表示中)

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

■47278 / inTopicNo.1)  別サーバーへのフォルダの作成
  
□投稿者/ とりの (25回)-(2010/02/23(Tue) 18:06:48)

分類:[ネットワーク全般] 

いつもお世話になっております。

現在、レガシーASPで別サーバーにフォルダを作る処理を

Private Function createFold(ByVal FoldCd)

Dim objFS

Set objFS = CreateObject("Scripting.FileSystemObject")

On Error Resume Next

'フォルダを作成する
objFS.CreateFolder(foldPath & "\" & FoldCd)

If Err.Number <> 0 Then
Response.Write "エラー内容:" & CStr(Err.Description) & "<br>"
Exit Function
End If

createFold = True

End Function

のような形で組んでおります。

しかし、自サーバーにフォルダを作成することはできたのですが、
別のサーバーに作成しようとしたところ

「エラー内容:ファイルの名前または数が不正です。」

と出てきてしまいました。

アクセス権は与えているらしく、
フォルダを作成する権限を与えればいいのか(?)と思うのですが
具体的な手順などが分かりません。

申し訳ありませんが、どうかお力添えを頂ければ幸いです。
どうぞ、宜しくお願い致します。


引用返信 編集キー/
■47285 / inTopicNo.2)  Re[1]: 別サーバーへのフォルダの作成
□投稿者/ オショウ (526回)-(2010/02/24(Wed) 10:28:50)
No47278 (とりの さん) に返信
> アクセス権は与えているらしく、

  いるらしく?
  ではなくて、確実な話、どう設定されているんですか?

> フォルダを作成する権限を与えればいいのか(?)と思うのですが
> 具体的な手順などが分かりません。

  権限がない為だと思いますが・・・

> 申し訳ありませんが、どうかお力添えを頂ければ幸いです。
> どうぞ、宜しくお願い致します。

  レガシーASPでしょう・・・
  他PCの共有リソースに認証ログインして、要望されることを
  行える機能モジュールを、VB6でActiveX作って、ASP上で呼び
  出して行うようにするのが得策かと・・・

  他PCの共有リソースに認証接続する方法は解っておられますか?

  APIで、WNetAddConnect2使うかな・・・
  http://msdn.microsoft.com/ja-jp/library/cc446983.aspx

  因みに、接続したリソースを切断することも忘れずに!

※ レガシーASPで偽装する方法もあったかと思いますが・・・
  忘れました。検索すれば出てくるかと。
  偽装できれば、そのPCの共有リソースに認証ス通しでアクセス
  できる方法もあるかと思いますが・・・
  ローカルネットワーク上の話ですよネ?
  インターネット越しなら、認証ス通しはマズイので、必ず認証
  させて行いましょう!

以上。参考まで

引用返信 編集キー/
■47287 / inTopicNo.3)  Re[1]: 別サーバーへのフォルダの作成
□投稿者/ 魔界の仮面弁士 (1502回)-(2010/02/24(Wed) 10:50:28)
2010/02/24(Wed) 22:48:06 編集(投稿者)

# 本題を先に持ってくるために、引用順を変更。

No47278 (とりの さん) に返信
CreateFolder に、意図したパスが渡されているかどうかは確認済みでしょうか?
また、ネットワークドライブを渡そうとしていたりはしませんか?


> 具体的な手順などが分かりません。
ドメイン運用かワークグループ運用かによって手順が若干変わりますが、たとえば
ワークグループ運用であれば、Web サイトの実行アカウント(既定値は IUSR_pcname)と
同じ名前/パスワードのアカウントをファイルサーバー側に用意し、そのアカウント
(あるいは、そのアカウントが所属するグループ)に対して、 NTFS のアクセス許可を
与えておけば、FileSystemObject からは \\serverName\sharedName\folderName として
ファイルサーバー上のフォルダやファイルにアクセスすることができます。

[FileSystemObject でリモート ファイルにアクセスできない]
http://support.microsoft.com/kb/197964/ja

[FileSystemObject オブジェクトを使用するとエラー 800a0035 が発生する]
http://support.microsoft.com/kb/276011/</pre></pre>


> Set objFS = CreateObject("Scripting.FileSystemObject")
ASP から呼び出す場合には、Server.CreateObject を使った方が安全かと思います。
http://support.microsoft.com/kb/414599/ja

> objFS.CreateFolder(foldPath & "\" & FoldCd)
それでも動くとは思いますが、本来の文法とは異なります。

VBScript の場合、戻り値の無いメソッド呼び出しでは、引数に括弧はつけずに
 objFS.CreateFolder foldPath & "\" & FoldCd
と記述する必要があります。もしも括弧を使いたいのであれば、
 Call objFS.CreateFolder(foldPath & "\" & FoldCd)
のように指定してください。

今回、括弧付きでも動作していたのは、たまたま引数が1個だけであったがために、
 Call objFS.CreateFolder( (foldPath & "\" & FoldCd) )
の意味で解釈されていたためです。


> If Err.Number <> 0 Then
> Response.Write "エラー内容:" & CStr(Err.Description) & "<br>"
> Exit Function
> End If
> createFold = True
この実装の場合、「成功=True/失敗=False」ではなく、
「成功=True/失敗=Empty」になってしまいますよ。


> アクセス権は与えているらしく、
「らしく」ではなく、具体的に調べてみてください。

運用はワークグループでしょうか。それともドメインでしょうか。
また、アクセス権はどのように与えたのでしょうか?
(共有権限の話なのか、NTFS セキュリティの話なのか、それ以外の話なのか)

それと、既定の IUSR_pcname に対してアクセス権を与えたのか、
それとも別の実行アカウントを用意したのかも記述したほうが良いかと。


それと、設定しても反映されないようであれば、以前のアカウント セッションで
接続されたままになってしまっているのかも知れませんので、双方のサーバーを
再起動することも検討してみてください。


> フォルダを作成する権限を与えればいいのか(?)と思うのですが
それはつまり、フォルダを作成することができていないというだけで、
GetFolder メソッドや OpenTextFile メソッド等に関しては、
別サーバーに対しても期待動作している……という意味なのでしょうか?

フォルダの作成権限のみが問題であれば、OS によって多少の差はありますが、
フォルダのプロパティから、[セキュリティ]タブ-[詳細設定]ボタン-[編集]ボタンの
『アクセス許可エントリ』のダイアログなどから設定できます。
http://www.microsoft.com/japan/athome/magazine/ucontents/users/winxp/0501/03.aspx
引用返信 編集キー/
■47312 / inTopicNo.4)  Re[2]: 別サーバーへのフォルダの作成
□投稿者/ とりの (26回)-(2010/02/25(Thu) 18:12:52)
2010/02/25(Thu) 18:16:17 編集(投稿者)
2010/02/25(Thu) 18:16:08 編集(投稿者)

オショウ さん、魔界の仮面弁士 さん 返信有り難うございます。

すいません。
"らしく"と書いたのは、自分が直接設定する立場にいなくて
細かいところの表現ができなかったからです。

必然、「アクセス権はどのように与えたのでしょうか?」
などに答えられるわけもなく、ほとほと困っておりました。

とりあえず、サーバーからローカルPCにフォルダを作成するために
必要な設定をすることになり、先程拙いながらも無事設定出来ました

しかし若干、自分的にはどうなんだろうと思います。

ローカルへの設定は

あるフォルダのセキュリティ→everyone フルコントロール
あるフォルダの共有→アクセス許可→everyone フルコントロール

と大体このような形にしました。(とてつもなく危うい感じが・・・)

これと同じように設定してもらおうかと思います。

でも、環境がちょっと違うと思うんです。
もしかしたらローカルセキュリティ設定を使う?かもしれない。

>Web サイトの実行アカウント(既定値は IUSR_pcname)と同じ名前/パスワードのアカウント
これをeveryoneにすげ替えればより良いのだと思います。

> ASP から呼び出す場合には、Server.CreateObject を使った方が安全かと思います。
了解しました。

> VBScript の場合、戻り値の無いメソッド呼び出しでは、引数に括弧はつけずに
なんとなく付けたくなります^^;
でも修正。φ(..)

> この実装の場合、「成功=True/失敗=False」ではなく、
> 「成功=True/失敗=Empty」になってしまいますよ。
Falseと判断しもらえるかと思っていました。φ(..)

> フォルダの作成権限のみが問題であれば、OS によって多少の差はありますが、
> フォルダのプロパティから、[セキュリティ]タブ-[詳細設定]ボタン-[編集]ボタンの
> 『アクセス許可エントリ』のダイアログなどから設定できます。
> http://www.microsoft.com/japan/athome/magazine/ucontents/users/winxp/0501/03.aspx
ありがとうございました。




解決済み
引用返信 編集キー/
■47314 / inTopicNo.5)  Re[3]: 別サーバーへのフォルダの作成
□投稿者/ 魔界の仮面弁士 (1506回)-(2010/02/25(Thu) 19:03:20)
No47312 (とりの さん) に返信
> "らしく"と書いたのは、自分が直接設定する立場にいなくて
> 細かいところの表現ができなかったからです。
自分で設定したのでは無いのであろうとは感じましたが、原因個所が分かっていない以上
設定者に具体的な話を聞いておかないと、状況確認もままならないかと。

> 先程拙いながらも無事設定出来ました
とりあえず解決ですね。

> あるフォルダのセキュリティ→everyone フルコントロール
> あるフォルダの共有→アクセス許可→everyone フルコントロール
> と大体このような形にしました。(とてつもなく危うい感じが・・・)
フルコントロールにするかどうかはケースバイケースですが、
それを everyone に対して許可する必要は無いと思います。

必要なアカウント(IIS管理ツール → Web サイト → ディレクトリ セキュリティ → 匿名アクセスなど)に対して
適当なグループを割り当てて、そのグループに対して、最低限の権限を付与すれば良いのではないでしょうか。
(グループではなく、アカウントそのものに対して割り当てても良いですが)

> >Web サイトの実行アカウント(既定値は IUSR_pcname)と同じ名前/パスワードのアカウント
> これをeveryoneにすげ替えればより良いのだと思います。
できましたっけ?
everyone はユーザーではなく、グループだったと思いますが…。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -