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

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

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

Re[1]: StartupPathの値が希望通りの相対パスになりません


(過去ログ 35 を表示中)

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

■17738 / inTopicNo.1)  StartupPathの値が希望通りの相対パスになりません
  
□投稿者/ 望月 (1回)-(2008/05/01(Thu) 01:54:31)

分類:[VB.NET/VB2005] 

お世話になっております。
いろいろ調べたのですがどうにもわからないことがありまして、質問させてください。

現在、VB 2008 [VB.NET]を勉強中で、ちょっとしたアプリケーションを作成しています。
起動したexeと同じフォルダにtxtファイルを作成したいのですが、うまくいきません。

メニューのビルドから発行して、できてきたアプリケーションを

C:\Documents and Settings\xxxx\デスクトップ\TEST\NumberPlacer.application

に置いて起動させたのですが、

Application.StartupPath

の値が

C:\Documents and Settings\xxxx\Local Settings\Apps\2.0\YQVBYXXX.6ZM\OTC1P4HJ.NR3\numb..tion_8196e5a74bdbbb6e_0001.0000_e17c3167ecc8b0b8

になってしまうようで、

Application.StartupPath & "\file.txt"
としても
C:\Documents and Settings\xxxx\デスクトップ\TEST\file.txt
を指定することができません。

どうしたら解決できるかお解りの方がいましたらよろしくお願いします。
引用返信 編集キー/
■17739 / inTopicNo.2)  Re[1]: StartupPathの値が希望通りの相対パスになりません
□投稿者/ ネタ好き (189回)-(2008/05/01(Thu) 02:06:08)
No17738 (望月 さん) に返信
Environment.CurrentDirectory プロパティをお試しください。
多分これで問題が解決すると思います。

引用返信 編集キー/
■17740 / inTopicNo.3)  Re[2]: StartupPathの値が希望通りの相対パスになりません
□投稿者/ 倉田 有大 (208回)-(2008/05/01(Thu) 02:07:48)
No17739 (ネタ好き さん) に返信
> ■No17738 (望月 さん) に返信
> Environment.CurrentDirectory プロパティをお試しください。
> 多分これで問題が解決すると思います。

何気によく使いますね、このプロパティー。
私が作っているソフトが、該当しているだけかもしれませんが^^;
引用返信 編集キー/
■17741 / inTopicNo.4)  Re[3]: StartupPathの値が希望通りの相対パスになりません
□投稿者/ ネタ好き (190回)-(2008/05/01(Thu) 02:39:06)
No17740 (倉田 有大 さん) に返信
> ■No17739 (ネタ好き さん) に返信
>>■No17738 (望月 さん) に返信
>>Environment.CurrentDirectory プロパティをお試しください。
>>多分これで問題が解決すると思います。
>
> 何気によく使いますね、このプロパティー。
> 私が作っているソフトが、該当しているだけかもしれませんが^^;

そうそう。私もよく使います。
これはやっぱりレジストリィを使わなくなったのが原因だと思います。
これっていい事だと思います。
アンインストールプログラム書かなくてもいいし、残りカスの心配しなくてもいいからね。


引用返信 編集キー/
■17744 / inTopicNo.5)  Re[4]: StartupPathの値が希望通りの相対パスになりません
□投稿者/ 望月 (2回)-(2008/05/01(Thu) 03:10:07)
No17741 (ネタ好き さん) に返信
No17740 (倉田 有大 さん) に返信

申し訳ありません。
Environment.CurrentDirectory を Application.StartupPath の代わりに使ったのですが、
前と同じ「・・・Local Settings\Apps・・・」が入ってしまいます。

たぶん自分が根本的に理解していないと思うのですが、
VB2008で発行してできた .application は VB6 の .exe と同じ感覚で考えてはいけないのでしょうか。
いつのまにかスタート>プログラムの中にも追加されているのですが・・・。
「アンインストールプログラム書かなくてもいい」プログラムが作りたいのですが・・・。

質問がぶれてきてしまいましたが、この状態がご理解できて相対パスがうまくいく解決策が解りましたらよろしくお願いします。
引用返信 編集キー/
■17745 / inTopicNo.6)  Re[5]: StartupPathの値が希望通りの相対パスになりません
□投稿者/ ネタ好き (193回)-(2008/05/01(Thu) 03:31:59)
No17744 (望月 さん) に返信
起動するEXEファイルはどこにありますか?
Environment.CurrentDirectory プロパティは起動EXEの場所を指しますので、
きっと別の場所にEXEファイルが配置されていると思います。
引用返信 編集キー/
■17746 / inTopicNo.7)  Re[6]: StartupPathの値が希望通りの相対パスになりません
□投稿者/ 望月 (3回)-(2008/05/01(Thu) 03:51:38)
No17745 (ネタ好き さん) に返信
> ■No17744 (望月 さん) に返信
> 起動するEXEファイルはどこにありますか?
> Environment.CurrentDirectory プロパティは起動EXEの場所を指しますので、
> きっと別の場所にEXEファイルが配置されていると思います。

はぅあ!ありました!

C:\Documents and Settings\xxxx\Local Settings\Apps\2.0\YQVBYXXX.6ZM\OTC1P4HJ.NR3\numb..tion_8196e5a74bdbbb6e_0001.0000_dab77756806b0bb8\NumberPlacer.exe

ができていました。なぜこんなところに・・・。
最初の設定で間違えたかもしれません。とりあえずはビルドしたらここから抜き出すようにします。
Environment.CurrentDirectory もちゃんとexeのある場所を指しています。やっほーい!

なんか結局変な質問をしてしまい申し訳ありませんでした。
また解らなくなったらよろしくお願いします。
Environment.CurrentDirectory はこれからも多用させていただきます。
解決済み
引用返信 編集キー/
■17750 / inTopicNo.8)  Re[6]: StartupPathの値が希望通りの相対パスになりません
□投稿者/ 渋木宏明(ひどり) (732回)-(2008/05/01(Thu) 09:24:02)
渋木宏明(ひどり) さんの Web サイト
> Environment.CurrentDirectory プロパティは起動EXEの場所を指しますので、

ヘルプには

>現在の作業ディレクトリの絶対パスを取得または設定します。

とあります。

作業ディレクトリは実行開始時に指定可能で、実行開始後の変更も可能です。

なので、実行ファイルが配置されているディレクトリと同じである保証はありません。

引用返信 編集キー/
■17753 / inTopicNo.9)  Re[7]: StartupPathの値が希望通りの相対パスになりません
□投稿者/ よねKEN (144回)-(2008/05/01(Thu) 09:32:06)
> C:\Documents and Settings\xxxx\Local Settings\Apps\2.0\YQVBYXXX.6ZM\OTC1P4HJ.NR3\numb..tion_8196e5a74bdbbb6e_0001.0000_dab77756806b0bb8\NumberPlacer.exe
>
> ができていました。なぜこんなところに・・・。

「発行」しているためでは?ClickOnceを使いたいなら別ですが、
単純に配布したいだけらな、ReleaseモードでビルドしてRelease\bin以下のEXEと
他に必要なファイルを配布するだけでOKです。(特に変わったことをしているプログラムでなければ)


渋木宏明(ひどり)さんの指摘にもありますが、

> Environment.CurrentDirectory プロパティは起動EXEの場所を指しますので、

EXEのショートカットを作成して、作業フォルダを別のディレクトリに変えた上で、
そのショートカットをダブルクリックするとApplication.StartupPathと
Environment.CurrentDirectory の違いが確認できますね。
引用返信 編集キー/
■17764 / inTopicNo.10)  Re[7]: StartupPathの値が希望通りの相対パスになりません
□投稿者/ Azulean (91回)-(2008/05/01(Thu) 12:17:06)
FileDialog系もカレントフォルダ書き換える場合がありますよ。

いずれにせよ、カレントフォルダに依存したコードを書くのはよくありませんし、「カレントフォルダ = アプリのフォルダ」という前提の場合は正常に動作しないパターンが出てきます。
引用返信 編集キー/
■17768 / inTopicNo.11)  Re[1]: StartupPathの値が希望通りの相対パスになりません
□投稿者/ 魔界の仮面弁士 (706回)-(2008/05/01(Thu) 12:48:46)
No17738 (望月 さん) に返信
> 起動したexeと同じフォルダにtxtファイルを作成したいのですが、うまくいきません。

まずは、その仕様から見直すべきかと思いますよ。

アプリケーションの実行ユーザが、exe と同じフォルダに書き込める権限を有している保証はありませんので。
(読み込みならばできるでしょうけれども)

データの書き込みが必要であれば、ClickOnceデータフォルダや、アプリケーションデータディレクトリ等を
利用された方が良いのでは無いでしょうか。


TextBox1.AppendText(System.Reflection.Assembly.GetExecutingAssembly().Location)
TextBox1.AppendText(vbNewLine & vbNewLine)
TextBox1.AppendText(System.Windows.Forms.Application.StartupPath)
TextBox1.AppendText(vbNewLine & vbNewLine)
TextBox1.AppendText(System.Windows.Forms.Application.ExecutablePath)
TextBox1.AppendText(vbNewLine & vbNewLine)
TextBox1.AppendText(System.Environment.CurrentDirectory)
TextBox1.AppendText(vbNewLine & vbNewLine)
TextBox1.AppendText(System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData))
TextBox1.AppendText(vbNewLine & vbNewLine)
TextBox1.AppendText(System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData))
TextBox1.AppendText(vbNewLine & vbNewLine)
If System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed Then
TextBox1.AppendText(System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory)
Else
TextBox1.AppendText("--ClickOnce配置ではありません--")
End If
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -