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

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

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

Re[3]: 実行ファイルに保存?


(過去ログ 102 を表示中)

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

■61056 / inTopicNo.1)  実行ファイルに保存?
  
□投稿者/ ノートパッド (1回)-(2011/07/31(Sun) 20:42:24)

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

よろしくお願いします。

Visual Studio 2008 (VB)でメモ帳を作ってみようかと思っています。
そこで質問なのですが、実行ファイルに直接保存というのはできないのでしょか?

例えば、
textboxとbutton(書き込みと読み込み)のformを作って
c\test.txtというファイルに読み書きで保存できる「A.exe」があるとします。
この場合だと「A.exe」で保存したデータはそのパソコンでしか読み込めず
違うパソコンで「A.exe」を起動したら当然保存されたc\test.txtがないので読み込めないと思います。

これを「A.exe」で作成したデータを「A.exe」に保存して
違うパソコンで「A.exe」を起動しても読み取れるというようにしたいです。

どうすればいいのか教えていただけたらと思い質問させていただきました。

引用返信 編集キー/
■61057 / inTopicNo.2)  Re[1]: 実行ファイルに保存?
□投稿者/ 逆運の覇者 (42回)-(2011/07/31(Sun) 21:07:28)
できません。

プログラミングは不可能を可能にするドラえもんの道具ではありません。
自分が何をしたいのか、そもそもする必要があるのかを明確にしてから質問すると良いでしょう。
そうでないと、ノートパッドさんの質問の意味はわかりますが、
質問の意図するところがわからないためにアドバイスのしようもない現状を抜け出せません。
(なぜなら、質問者であるノートパッドさん自身が明確に考えていないのだから。
 質問者本人がわからないものを他人が推察し、現実に即した解決法を提示するのは不可能です)

この場合、A.exeと一緒にテキストファイルを配布すれば、
A.exe自身にデータを埋め込まずに解決しますよね。

根本的なところの説明がないために代替案を考えることもできません。
考えをまとめてから質問してください。
引用返信 編集キー/
■61058 / inTopicNo.3)  Re[1]: 実行ファイルに保存?
□投稿者/ Azulean (804回)-(2011/07/31(Sun) 21:52:26)
No61056 (ノートパッド さん) に返信
> この場合だと「A.exe」で保存したデータはそのパソコンでしか読み込めず
> 違うパソコンで「A.exe」を起動したら当然保存されたc\test.txtがないので読み込めないと思います。

この「A.exe」自体は物理メディア(HDD/USB メモリなど)か、ネットワークで、書き込んで読み込める形で共有されているのですか?
そういったファイル共有の仕組みが満たされていないと、違うパソコンは違うファイルを指し示すだけで、同じものを読み込めません。
(物理的に離れているパソコンで作業した結果は、何かその間をつなぐものが存在しなければ、伝えることができないということです)

これは「A.exe」自体に埋め込む方式であろうと、「A.exe」が別のテキストファイルに書き込む方式であろうと変わりません。
引用返信 編集キー/
■61059 / inTopicNo.4)  Re[2]: 実行ファイルに保存?
□投稿者/ ノートパッド (2回)-(2011/07/31(Sun) 23:17:43)
運の覇者さん、Azuleanさん
ご回答ありがとうございます。
大雑把な質問で申し訳ありません。

Windowsにあるメモ帳(Notepad)などは内容を保存して(ネットワークにつながっていなくても)別のパソコンで読むことができると思います。
そういったものをイメージして作ってみようと思っていたのですが
メモ帳(Notepad)など仕組みをもう一度勉強し直します。


引用返信 編集キー/
■61060 / inTopicNo.5)  Re[3]: 実行ファイルに保存?
□投稿者/ shu (895回)-(2011/07/31(Sun) 23:32:50)
No61059 (ノートパッド さん) に返信

> Windowsにあるメモ帳(Notepad)などは内容を保存して(ネットワークにつながっていなくても)別のパソコンで読むことができると思います。
> そういったものをイメージして作ってみようと思っていたのですが
> メモ帳(Notepad)など仕組みをもう一度勉強し直します。

Windows標準のメモ帳でも保存したファイルは使用中のパソコンにのみ保存されnotepad.exeに保存されるわけではありませんよ。実際他のパソコンで
同じファイルを開こうとしても開けないはずです。もし開けるのでしたらそれはネットワーク上のパソコンとかHDDへのパスを同じドライブに
割り当てて使われているということは考えられます。もしメモ帳のexeファイルに保存されているのならその保存されたファイルを毎回コピーしてあげないと
別パソコンでは開けません。もっとも使用中のexeファイルの内容を書き換える事は出来ませんのでノートパッド さんの言われていることを実現することは
無理でしょう。
引用返信 編集キー/
■61061 / inTopicNo.6)  Re[4]: 実行ファイルに保存?
□投稿者/ 逆運の覇者 (43回)-(2011/07/31(Sun) 23:57:15)
いい加減な質問だったわけじゃなく、可能であると無知ゆえに思い込んでいたわけですか。
普段パソコンを使っていれば、勉強するようなことではないと思いますが。


突拍子がなさすぎてトンデモ話を聞かされているような感じですが、なぜ
>Windowsにあるメモ帳(Notepad)などは内容を保存して(ネットワークにつながっていなくても)別のパソコンで読むことができると思います。
と思ったのでしょうか?
引用返信 編集キー/
■61064 / inTopicNo.7)  Re[3]: 実行ファイルに保存?
□投稿者/ やんまー (79回)-(2011/08/01(Mon) 00:38:35)
メモ帳に対する認識
「内容を保存して別のパソコンで読むことができる」

は間違っていると思いますが 汗

※とりあえずメモ帳で保存をしてみてください。必ずどこに保存するか聞かれますよ ^^;

発想は面白いと思いました。


バイナリファイルに書きこむ方法は思いつきませんが、
シェルスクリプトやperlなら、可能かもな、と思いました。

一歩間違えると実行ファイルが壊れるので、やるべきではないと思いますけど。
引用返信 編集キー/
■61073 / inTopicNo.8)  Re[4]: 実行ファイルに保存?
□投稿者/ やんまー (84回)-(2011/08/01(Mon) 08:57:40)
もしかすると・・・

例えば、デスクトップなどにテキストファイルを作って
ダブルクリックすると、メモ帳が開きますよね。

で、そこになにか書き込んで保存するとテキストファイルが更新される・・・


このことが、「実行ファイルに書き込んでいる」と誤解しているのではないでしょうか?

ダブルクリックで開くので、テキストファイル自体が実行ファイルであるかのように感じているのでは・・・?



実際にはテキストファイルの拡張子txtに関連付けされたメモ帳が他の場所(system32の下かな)から
デスクトップのテキストファイルを開いているだけです。

テキストファイルが実行ファイルとなっているわけではないです。


※ これでわかってもらえるでしょうか・・・
引用返信 編集キー/
■61074 / inTopicNo.9)  Re[5]: 実行ファイルに保存?
□投稿者/ くだん (3回)-(2011/08/01(Mon) 10:48:47)
例えば、
c\test.txtというファイルに読み書きで保存できる「notepad.exe」があるとします。
この場合だと「notepad.exe」で保存したデータはそのパソコンでしか読み込めず
違うパソコンで「notepad.exe」を起動したら当然保存されたc\test.txtがないので読み込めないと思います。

「notepad.exe」は Windows 付属のアプリですのでインストールしなくても入っています。
(システムフォルダ直下にいると思います。)
c\test.txt を読み込みたい場合は、c\test.txt もコピーする必要があります。
これは実行ファイル(exe)ではなく、データファイルであり、拡張子が txt のものは
一般にテキストファイルと呼ばれています。

他のテキストエディタで開きたい場合は、そのエディタの実行ファイル(exe)と
c\test.txt も必要です。
引用返信 編集キー/
■61075 / inTopicNo.10)  Re[6]: 実行ファイルに保存?
□投稿者/ るろ (1回)-(2011/08/01(Mon) 11:00:19)
本末転倒ですがメインの実行ファイルと、バイナリ変更用の実行ファイルを連携させて互いに書換を…という案も。
データ用ファイルを配布する事と変わらない上に、問題を複雑化させてますが。

あるいは、メモリ上に実行コードを展開し別プロセスで実行。自身を終了させておいてバイナリ変更とか。
ウィルス対策ソフトに検知される可能性がありますけど。
実行中のプロセスが実行ファイル自身をロックしてるので、それを回避出来ればこんな回り道は必要無いんでしょう。


大事なのはコレでは無くて、実行ファイルとデータファイルの区別をつけましょうと。
双方のアイコンが同じで、拡張子を表示していない/注視していない、更にその拡張子に対して既定のプログラムが設定されている場合など。
色々と混同しているのではないかと推測。
引用返信 編集キー/
■61076 / inTopicNo.11)  Re[7]: 実行ファイルに保存?
□投稿者/ PATIO (122回)-(2011/08/01(Mon) 11:55:46)
> Windowsにあるメモ帳(Notepad)などは内容を保存して(ネットワークにつながっていなくても)別のパソコンで読むことができると思います。

「どうしてこのように考えたのか」から説明してもらった方が良いかなと思います。
そうすれば、どの部分でそういう勘違いをしたのかがわかると思うので。
勘違いの元になっている部分を訂正しないと他の部分でも勘違いしそうな気がします。

こういう話も話題的には満更ではないかなと言う気もします。
普段は当たり前と思って素通りしてしまっている部分を再考するきっかけになると思うので。

引用返信 編集キー/
■61105 / inTopicNo.12)  Re[8]: 実行ファイルに保存?
□投稿者/ ノートパッド (3回)-(2011/08/02(Tue) 12:44:47)
返信が遅くなり申し訳ありません。
いろいろな回答ありがとうございます。

notepad.exeのことをよくわかっていませんでした。
メモ帳(notepad.exe)を起動し、入力したデータはメモ帳の実行ファイル内に保存して
メモ帳(notepad.exe)ごと他のパソコンに持っていったら見れると思っていました。

実際は、メモ帳(notepad.exe)で入力したデータはデータファイル(.txt?)として保存され
データファイル(.txt?)を開くときメモ帳(notepad.exe)を起動して見ることができるということなのでしょうか?
他のパソコンに移動させるのもデータの入ったデータファイルで
移動先の実行ファイル(メモ帳notepad.exe)を起動して読み取るってことなのでしょうか?
引用返信 編集キー/
■61106 / inTopicNo.13)  Re[9]: 実行ファイルに保存?
□投稿者/ 魔界の仮面弁士 (2283回)-(2011/08/02(Tue) 12:50:28)
No61105 (ノートパッド さん) に返信
> 実際は、メモ帳(notepad.exe)で入力したデータはデータファイル(.txt?)として保存され
> データファイル(.txt?)を開くときメモ帳(notepad.exe)を起動して見ることができるということなのでしょうか?

そういうことです。さらに言えば――

・既定の拡張子は .TXT ですが、他の拡張子で保存することもできます。
 また、.TXT 以外のファイル(.INIなど)も、テキストデータであればメモ帳で読み取れます。

・.TXT ファイルを開くためのアプリケーションは、メモ帳だけではありません。
  ワードパッドや Microsoft Word 等でも、.TXT ファイルの読み書きが行えます。
引用返信 編集キー/
■61114 / inTopicNo.14)  Re[9]: 実行ファイルに保存?
□投稿者/ ツPツAツTツIツO (5回)-(2011/08/02(Tue) 15:35:49)
2011/08/02(Tue) 15:39:23 編集(投稿者)
2011/08/02(Tue) 15:36:40 編集(投稿者)

No61105 (ノートパッド さん) に返信
> 他のパソコンに移動させるのもデータの入ったデータファイルで
> 移動先の実行ファイル(メモ帳notepad.exe)を起動して読み取るってことなのでしょうか?

ここに反応。
書かれている認識で正しいと思います。
データを保持しているのはあくまでもデータファイルです。
で、テキストデータで保持しているファイルを一般にテキストファイルと言います。
テキスト以外のデータが入っているファイルはバイナリファイルになります。
(一部テキストを含んでいたとしてもテキスト以外のデータが入っていればバイナリ)

テキストファイルを扱うプログラムを一般にはテキストエディタと呼びます。
notepadもこの一種です。テキストエディタはそれこそ星数ほどあるので
こだわっている人はお気に入りのテキストエディタを使っているケースが多いです。
テキストファイルの場合、基本的にテキストエディタならどれを使っても作成出来ますし、
参照することも可能です。
なので、簡単に文字情報をやり取りする場合はテキストファイルをやり取りします。
もらったテキストファイルをテキストエディタで見る事で内容が読めるわけです。

P.S うーっ、名前が化けてる。firefoxのバカっ。
ちなみに文字コードとかの厳密な部分までは触れてません。


引用返信 編集キー/
■61117 / inTopicNo.15)  Re[10]: 実行ファイルに保存?
□投稿者/ 道すがら (1回)-(2011/08/02(Tue) 16:38:32)
自己データ格納型のExeを作りたいのだと、推察。
DOS時代のアセンブラでは、PEヘッダを弄くって、固有データを埋め込む技がありました。
そのことを指しているのでは?
実行中の自分のExeを更新するのは無理なので、Replaceを考えないといけません。
いずれにしても、safed 下では、不可能に近いでしょう。

引用返信 編集キー/
■61127 / inTopicNo.16)  Re[11]: 実行ファイルに保存?
□投稿者/ 甕星 (5回)-(2011/08/03(Wed) 06:20:12)
いや、面白いアイデアですね。
出来なくはないです。

実行中のモジュールは書込み禁止されてしまうので単純には出来ませんが、アプリケーション起動後にテンポラリフォルダにアプリケーションを展開。最初に起動されたアプリケーションはテンポラリフォルダのアプリケーションを起動して終了。テンポラリフォルダのアプリケーションから実行ファイルに書き込み。PEヘッダーのチェックサムは使ってないので気にしなくて大丈夫なはず。

自己解凍ファイルやインストーラーなど、実行ファイル自体にデータも持たせている例は多々あるので、実際に作ってみてはいかがでしょう?
引用返信 編集キー/
■61128 / inTopicNo.17)  Re[12]: 実行ファイルに保存?
□投稿者/ Azulean (807回)-(2011/08/03(Wed) 06:50:07)
今の質問の段階では、exe に埋め込むことを目指しているわけではなく、マシン間のデータの共有することを目指していると思っています。
(勘違いから exe に埋め込む方法が最適と思われていると認識しています)

誤解が解けた後に、どこを目指すかを決めてからの話にしませんか、exe に埋め込む方法などの具体策は。
技術的には可能でも、Program Files に配置されているなどのアクセス権の問題もややこしいですし、複数ファイルを扱いたくなった場合も悩ましいことですので…。
引用返信 編集キー/
■61130 / inTopicNo.18)  Re[11]: 実行ファイルに保存?
□投稿者/ shu (903回)-(2011/08/03(Wed) 07:32:11)
No61117 (道すがら さん) に返信
> 自己データ格納型のExeを作りたいのだと、推察。
> DOS時代のアセンブラでは、PEヘッダを弄くって、固有データを埋め込む技がありました。
> そのことを指しているのでは?
> 実行中の自分のExeを更新するのは無理なので、Replaceを考えないといけません。
> いずれにしても、safed 下では、不可能に近いでしょう。
>
面白そうな話ですが、スレの流れでこの段階でこの回答は変な気がします。
引用返信 編集キー/
■61134 / inTopicNo.19)  Re[12]: 実行ファイルに保存?
□投稿者/ くだん (4回)-(2011/08/03(Wed) 09:55:24)
> 技術的には可能でも、Program Files に配置されているなどのアクセス権の問題もややこしいですし、複数ファイルを扱いたくなった場合も悩ましいことですので…。

賛同。

だからこそ保存可能なアプリの設定情報については、一時フォルダやユーザの
アプリケーションフォルダに保存する手法を使うわけですし、VB2008 のでかい
EXE がファイル毎に複製されるとかぞっとします。
逆に、過去に作ったテキストデータを全て1つのファイルに記憶するとかも
マジキチ仕様でしょ。(それとも「c\test.txt」と「c\testtest.txt」を作ったら
最新の1ファイルだけ覚えるの?それもそれで中途半端)

アイデアはともかく、そのままではすぐに行き詰まり、既存のしくみではそう
ならないような考え方があるのに、知らないで話を進めるのは面白い話では
ないと感じます。

ついでに OS の
[ファイル・タイプの関連付けを変更する2つの方法]
http://www.atmarkit.co.jp/fwin2k/win2ktips/482ftype/ftype.html
どの実行ファイルを使うかの選択がユーザによってできると。
このあたりの仕組みも知らないのだろうなと思うので貼ります。
DOS コマンドで
> notepad.exe c:\test.txt
と打つような話とか。・・・つかそもそも「notepad.exe」と「c\test.txt」
はファイルが違うという認識がある時点で、質問にあった理論は崩れたと
思うんですけどね。何故崩れなかったのかの方が不思議です。

初心者だから知識が足りないとか言うなら仕方ないとしても、程度が
あるだろうと。全く知らないのは興味を持ててないって事と同義じゃ
ないかと思います。

引用返信 編集キー/
■61177 / inTopicNo.20)  Re[13]: 実行ファイルに保存?
 
□投稿者/ ぽりぽり (1回)-(2011/08/04(Thu) 14:58:53)
以前自分も同じ様に他データファイルを作りたく無いと思い、
ファイル名の部分を使用し実行ファイルにデータを保存するプログラムなら作ったことがあります。
Windowsだとパスも含めて256文字分のデータしか保存できませんが、自分の場合はゲームの点数を保存したかっただけなので充分でした。

引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -