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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.9444 の関連記事表示

<< 0 >>
■9444  Windowsサービスのexeがあるフォルダを判断したい
□投稿者/ nbmyou -(2007/10/26(Fri) 17:30:40)

    分類:[.NET 全般] 

    当掲示板にはたびたびお世話になっております。
    初心者のnbmyouと申します。

    現在、VS.net2005のC#で、フォルダ監視のWindowsサービスを作成しています。
    作成したWindowsサービスのexeやdllがあるフォルダに、XMLの設定ファイルを置き、
    このファイルでWindowsサービスの設定(監視するフォルダなど)が行えるようにしたいと思っています。

    そこで質問なのですが、
    exeやdllがあるフォルダを、プログラムから調べるためには
    どうすればいいのでしょうか?
    検討がつかずにおりますので、調べ方だけでもありがたいので、
    何か情報を教えていただけませんでしょうか?

    お手数ですが、よろしくお願いいたします。
親記事 /過去ログ22より / 関連記事表示
削除チェック/

■9445  Re[1]: Windowsサービスのexeがあるフォルダを判断したい
□投稿者/ ぽぴ王子 -(2007/10/26(Fri) 17:50:23)
>
    No9444 (nbmyou さん) に返信

    サービスで使えるのかどうかはわかりませんが

    Application.StartupPath プロパティ

    とか。
記事No.9444 のレス /過去ログ22より / 関連記事表示
削除チェック/

■9447  Re[1]: Windowsサービスのexeがあるフォルダを判断したい
□投稿者/ Jitta on the way -(2007/10/26(Fri) 18:56:01)
    No9444 (nbmyou さん) に返信
    > 当掲示板にはたびたびお世話になっております。
    > 初心者のnbmyouと申します。
    >
    > 現在、VS.net2005のC#で、フォルダ監視のWindowsサービスを作成しています。
    > 作成したWindowsサービスのexeやdllがあるフォルダに、XMLの設定ファイルを置き、
    > このファイルでWindowsサービスの設定(監視するフォルダなど)が行えるようにしたいと思っています。
    >
    > そこで質問なのですが、
    > exeやdllがあるフォルダを、プログラムから調べるためには
    > どうすればいいのでしょうか?
    > 検討がつかずにおりますので、調べ方だけでもありがたいので、
    > 何か情報を教えていただけませんでしょうか?
    >
    > お手数ですが、よろしくお願いいたします。

    Platform API で、GetCurrentPath とかあったような?

    アセンブリに問い合わせれば、知っていそうな?
記事No.9444 のレス /過去ログ22より / 関連記事表示
削除チェック/

■9449  Re[2]: Windowsサービスのexeがあるフォルダを
□投稿者/ いしだ -(2007/10/26(Fri) 19:36:36)
    2007/10/26(Fri) 19:37:39 編集(投稿者)

    投稿場所間違えました。
    失礼しました。
記事No.9444 のレス /過去ログ22より / 関連記事表示
削除チェック/

■9451  Re[2]: Windowsサービスのexeがあるフォルダを判断したい
□投稿者/ 渋木宏明(ひどり) -(2007/10/26(Fri) 23:00:30)
>
    > Platform API で、GetCurrentPath とかあったような?

    いやいやいやいや、「カレントディレクトリ」は「実行ファイルの配置されたディレクトリ」と同じである保証はありませんよ。

    しかも、サービスの場合はログオンすらしてない状態で実行されるので、「カレントディレクトリ」は常に Windows フォルダ辺りに設定されていたような気が。

    > アセンブリに問い合わせれば、知っていそうな?

    の方が確実デス。
記事No.9444 のレス /過去ログ22より / 関連記事表示
削除チェック/

■9453  Re[3]: Windowsサービスのexeがあるフォルダを判断したい
□投稿者/ nbmyou -(2007/10/27(Sat) 07:34:35)
    みなさん、回答ありがとうございます。

    カレントディレクトリは、取得してみるとwindows\systemでした。

    アセンブリに問い合わせるということ自体、どういうことなのか、
    まだ理解できていませんが、調べながらやってみます。
記事No.9444 のレス /過去ログ22より / 関連記事表示
削除チェック/

■9450  Re[1]: Windowsサービスのexeがあるフォルダを
□投稿者/ いしだ -(2007/10/26(Fri) 19:37:56)
    2007/10/26(Fri) 19:41:34 編集(投稿者)

    System.AppDomain.CurrentDomain.BaseDirectory

    これでもいけるんじゃないでしょうか。
記事No.9444 のレス /過去ログ22より / 関連記事表示
削除チェック/

■9454  Re[2]: Windowsサービスのexeがあるフォルダを
□投稿者/ Tom Yama -(2007/10/27(Sat) 11:03:39)
    WindowsAPI でよければ、GetModuleFileName() で、取得できます。
記事No.9444 のレス /過去ログ22より / 関連記事表示
削除チェック/

■9455  Re[3]: Windowsサービスのexeがあるフォルダを
□投稿者/ 渋木宏明(ひどり) -(2007/10/27(Sat) 14:40:44)
>
    > WindowsAPI でよければ、GetModuleFileName() で、取得できます。

    .NET で↑に相当する操作が

    >アセンブリに問い合わせる

    です。

    Windows サービスの場合 GetModuleFileName(0, xxx) でサービスの .exe 名ってちゃんと取れましたっけ?

    ファイル形式は .exe であっても、Windows サービスはサービスコントロールマネージャから特殊な手順で起動されるはずなので、駄目ぽな気が。
記事No.9444 のレス /過去ログ22より / 関連記事表示
削除チェック/

■9456  Re[4]: Windowsサービスのexeがあるフォルダを
□投稿者/ Tom Yama -(2007/10/27(Sat) 15:30:05)
    No9455 (渋木宏明(ひどり) さん) に返信
    > Windows サービスの場合 GetModuleFileName(0, xxx) でサービスの .exe 名ってちゃんと取れましたっけ?
    >
    > ファイル形式は .exe であっても、Windows サービスはサービスコントロールマネージャから特殊な手順で起動されるはずなので、駄目ぽな気が。
    あっ、そうなんですか?
    サービスのことは、全然、知りません。ので、ダメだったら、ごめんなさいです。
記事No.9444 のレス /過去ログ22より / 関連記事表示
削除チェック/

■9457  Re[5]: Windowsサービスのexeがあるフォルダを
□投稿者/ はつね -(2007/10/27(Sat) 15:46:47)
>
    ちょっと前に作成したWindowsサービスでサービスとして起動するアセンブリと同じフォルダにあるファイルを読んでいるのですが、そのときは次のようにして取得していました(VB2005)。

    Dim fileName As String = String.Concat(My.Application.Info.DirectoryPath, "\hogehoge.txt"

    参考ドキュメント→http://msdn2.microsoft.com/ja-jp/library/6whasz3x(vs.80).aspx
記事No.9444 のレス /過去ログ22より / 関連記事表示
削除チェック/

■9498  Re[6]: Windowsサービスのexeがあるフォルダを
□投稿者/ シャノン -(2007/10/29(Mon) 10:19:40)
    No9457 (はつね さん) に返信
    サービスの設定は
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
    に置くものだと思ってました。

    …権限的にはレジストリでもファイルでも似たようなもんでしょうし。
記事No.9444 のレス /過去ログ22より / 関連記事表示
削除チェック/

■9505  Re[7]: Windowsサービスのexeがあるフォルダを
□投稿者/ nbmyou -(2007/10/29(Mon) 13:15:40)
    2007/10/30(Tue) 14:52:52 編集(投稿者)
    2007/10/29(Mon) 13:17:47 編集(投稿者)

    No9498 (シャノン さん) に返信

    > サービスの設定は
    > HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
    > に置くものだと思ってました。
    >
    > …権限的にはレジストリでもファイルでも似たようなもんでしょうし。

    情報ありがとうございます。

    サービスの設定は、上記のレジストリに置くことが推奨されていたりするのでしょうか。
    そのような情報に疎いもので・・・。

    お手数ですが、教えていただけると大変勉強になり助かります。
    よろしくお願いします。

    (今回、サービスの設定をユーザが変更する必要があり、
    ただし設定変更用のUIを用意しないため、xmlファイルとしてみました)


    ※(10/30 とりあえず解決済みにいたしました)
記事No.9444 のレス / END /過去ログ22より / 関連記事表示
削除チェック/

■9504  Re[6]: Windowsサービスのexeがあるフォルダを
□投稿者/ nbmyou -(2007/10/29(Mon) 13:10:23)
    2007/10/29(Mon) 13:16:07 編集(投稿者)

    No9457 (はつね さん) に返信
    > Dim fileName As String = String.Concat(My.Application.Info.DirectoryPath, "\hogehoge.txt"
    >
    > 参考ドキュメント→http://msdn2.microsoft.com/ja-jp/library/6whasz3x(vs.80).aspx

    情報ありがとうございます。

    当方C#でのコーディングのため、

    [プロジェクト]→[参照の追加]で、[Microsoft.VisualBasic]を設定し、
    +++++++++++++++++++++++++++
    Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase MyApp
    = new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase();
    string configPath = Path.Conbine(MyApp.Info.DirectoyPath, "hogehoge.txt");
    +++++++++++++++++++++++++++
    上記コードで思い通りのパスが取得できました。

    どうもありがとうございました!
記事No.9444 のレス /過去ログ22より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -