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

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

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

Re[2]: Windowsサービスからファイルを書き出す方法


(過去ログ 80 を表示中)

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

■47375 / inTopicNo.1)  Windowsサービスからファイルを書き出す方法
  
□投稿者/ FON (1回)-(2010/03/01(Mon) 04:07:26)

分類:[VB.NET/VB2005 以降] 

VisualBasic2008にてWindowsサービスの勉強を行っております。

参考書等を読み、各種イベント(開始や停止、サスペンドイベントの捕捉等)は一通り確認しました。

今、サービスプログラムからいろいろな値を取得しそれをファイルへ書き出すプログラムを作成しておりますが、
onStartイベント時にファイル書き出しを行うとサービスが起動しなくなりました。

※正確には下記のメッセージが表示されサービスを開始できません。
 
 ローカルコンピュータ上のSampleServiceサービスは起動して停止しました。
 パフォーマンスログ、警告サービスなど、一部のサービスは作業がない場合に自動的に停止します。

Windowsサービスでファイル操作(読み込みや書き込み)を行う場合、Timerと同様に何か制限があるのでしょうか。

なお、ファイルへの書き込みは単純なもので下記のような内容です。

Dim Writer As New IO.StreamWriter("C:\ServiceDemoLogFile.txt")
Writer.WriteLine("テスト")
Writer.Close()

上記をonStartに記述したところサービスが起動しない状態となりました。

なお、上記の部分を削除すると正常に開始できるようになるので、何か原因があると思うのですが
原因がわからず困っております。
引用返信 編集キー/
■47376 / inTopicNo.2)  Re[1]: Windowsサービスからファイルを書き出す方法
□投稿者/ オショウ (531回)-(2010/03/01(Mon) 04:13:55)
No47375 (FON さん) に返信
> Windowsサービスでファイル操作(読み込みや書き込み)を行う場合、Timerと同様に何か制限があるのでしょうか。
>
> なお、ファイルへの書き込みは単純なもので下記のような内容です。
>
> Dim Writer As New IO.StreamWriter("C:\ServiceDemoLogFile.txt")
> Writer.WriteLine("テスト")
> Writer.Close()

  ただ単に、そのサービスに付与されている権限では、C:\に対して
  ファイルのライトができないだけです。

  しかしながらサービスにC:\へのアクセス権限を与えてしまうと厄介
  なこともあるので、ファイルの書きだしに関しては、ドライブやフォ
  ルダに関して、アクセス権限をどうするか検討する必要があります。

  偽装すればできますが・・・まだそんなレベルでもないでしょうから
  まず権限の勉強をされた方がよいと思います。

以上。
引用返信 編集キー/
■47386 / inTopicNo.3)  Re[2]: Windowsサービスからファイルを書き出す方法
□投稿者/ FON (2回)-(2010/03/01(Mon) 11:26:10)
No47376 (オショウ さん) に返信

>ただ単に、そのサービスに付与されている権限では、C:\に対して
>ファイルのライトができないだけです。

ご指摘の通りで、投稿後にそもそも一時フォルダを指定していないことに気づきました。
ユーザ用一時領域への書き込みで無事動作が確認できました。
ご指摘ありがとうございます。

>しかしながらサービスにC:\へのアクセス権限を与えてしまうと厄介
>なこともあるので、ファイルの書きだしに関しては、ドライブやフォ
>ルダに関して、アクセス権限をどうするか検討する必要があります。
>
>偽装すればできますが・・・まだそんなレベルでもないでしょうから
>まず権限の勉強をされた方がよいと思います。

おっしゃる通りだと思います。
セキュリティ権限はいろいろと認識を深めておいた方が良いと思いますので、
今後も勉強を行いたいと思います。
Vistaや7でのUACも意識する必要がありますので、
ファイル操作時のアクセス権限は今後も気をつけたいと思います。

ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -