【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.20164

Windowsサービスプログラムがネットワークドライブに書けません
投稿者---おおお(2005/02/27 18:46:21)


こんにちは
大変困っています。
C言語にてWindowsサービスプログラムを作成しています。
[サービスプログラムの処理内容]
Windowsサービスはローカルにあるプロセス(A.exe)を起動します。
起動されたプロセスは、ローカルに有るネットワークドライブ(Z:)
にファイルを保存したいのですが、Windowsサービスに登録し、実行すると
エラー番号3(指定されたパスが見つかりません。)とエラーになり
書き込みができません。しかし、サービスからではなく、自分でA.exeを
クリックにて実行すると、正常にファイルが書き込めます。
いろいろ調べて、サービスはSTSTEMアカウントにて起動されるので、
アカウントを指定し、admini権限のユーザにて起動させるように、
しましたが無理でした。直接ネットワークパスを指定してもエラー番号53(ネットワークパスが見つかりません)といわれました。
[ファイルの書き込みソース]

driveは設定ファイルより取得(Z:)
a.htmというファイルをネットワークドライブ(z:\)に保存

        // ファイル名作成
        sprintf(filename,"%s\\%s",drive,a.htm);

        /*--------------------------------------*/
        /* ファイルオープン処理               */
        /*--------------------------------------*/

        if ( ( fd = CreateFile(filename
            ,GENERIC_READ|GENERIC_WRITE
            ,FILE_SHARE_READ|FILE_SHARE_WRITE
            ,NULL
            ,CREATE_ALWAYS
            ,FILE_ATTRIBUTE_NORMAL
            ,NULL) ) == INVALID_HANDLE_VALUE )
        {
            return(-1);
        }



プロセス実行パソコン:WindowsServer2003
ネットワークドライブ先パソコン:WindowsServer2003

なんで、クリックにより起動した場合は、書き込めるのに、
サービスだったら書き込めないのでしょうか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:Windowsサービスプログラムがネットワークドライブに書けません 20190 KING・王 2005/03/01 01:38:52
<子記事> Re:Windowsサービスプログラムがネットワークドライブに書けません 20216 通りすがり 2005/03/03 09:17:44


No.20190

Re:Windowsサービスプログラムがネットワークドライブに書けません
投稿者---KING・王(2005/03/01 01:38:52)


ネットワークドライブは、ログインしているユーザ毎に設定されていますので、ログインしているアカウントに依存します。
仮に、ユーザAでネットワークドライブZを登録しても、別のユーザBで
ログインしている場合は、ネットワークドライブZは存在しません。
(ユーザB側で登録したら別ですが・・・)

で、詳しくは忘れましたが、サービスプログラムは、サービスプログラム用のアカウントで実行されます。
ということで、ユーザAでいくらネットワークドライブZを登録していても、サービスのアカウントには関係のない話なので、
サービスプログラムからはZドライブが存在しないと言うことになるのです。

直接EXEをダブルクリックして実行した場合は、ログインしているユーザのアカウントで実行されるので、
ユーザAでネットワークドライブZを登録してある状態で、ユーザAでログオンしている状態でEXEをダブルクリックしたら、
そのEXEはユーザAのアカウントで実行されるため、ネットワークドライブZにアクセスできるのです。


この投稿にコメントする

削除パスワード

No.20216

Re:Windowsサービスプログラムがネットワークドライブに書けません
投稿者---通りすがり(2005/03/03 09:17:44)


件名:Windowsサービスプログラムでネットワークドライブにファイル保存 [@IT Windows Server Insider]

利用上の注意も読めない上に10分位しか待てないのか・・・


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧