1

基本的に、アプリケーション内 (アプリケーションのプロパティの [リソース] タブ) にテキスト ファイルがあります。

今、私はそのファイルの読み取りと書き込みを試みていますが、読み取りは問題なく機能します。問題を引き起こしているのは書き込み部分です。

を使用しdim str as string = my.resources.textfileていますが、これは機能します。

を使用しようとするmy.resources.textfile = str2と、ファイルが読み取り専用であるというエラーが表示されます。

これを回避するにはどうすればよいですか?

注: ファイルをユーザーの PC に書き込むのはあまり好きではありません。書き込む必要のあるデータはそれほど多くなく、(私の目には) 専門家らしくないように見えるためです。ファイルをユーザーの PC に転送します。

4

2 に答える 2

3

1行のテキストを含む小さな小さなテキストファイルの場合、それを別のファイルに書き込むのは一種の無駄です.

なぜ「無駄」になるのでしょうか?それはそれを見る奇妙な方法です。そもそもファイルを書き込む価値がある場合は、別のファイルに書き込む価値があります。

ジェイコブがコメントで言っているように、実行可能ファイル自体を変更することは、まったく簡単な作業ではありません。それを実現するためにコードを動作させることは、本当の無駄です。そして、それは、ウイルス スキャナー、企業ポリシー、または基本的なコード レビューを通過して、そのようなコードを取得できることを前提としています。

ファイルをユーザーの PC に書き込むのはあまり好きではありません。書き込む必要のあるデータはそれほど多くなく、(私の目には) 専門家らしくないように見えるためです。ユーザーの PC。

あなたはこれについて心配する正しい本能を持っていますが、この特定のケースでの心配は見当違いです. ユーザーのデスクトップやドキュメント フォルダ、さらにはハード ディスクのルート レベルにファイルを書き込むことは、確かに専門的ではありません。これらの場所は、ユーザーまたはシステムに排他的に属しており、それらに正常に書き込むことができたとしても (UAC はディスクのルート レベルでずっとあなたと戦います)、そうすべきではありません。何とか何とか、私はこれについて前に怒鳴りました。

代わりに、まさにこの目的のための Application Data フォルダーを使用してください。この場所への読み取り/書き込み権限があることが保証されており、通常のユーザーがそこを見ることはないため、あなたが投げたものを見ることはありませ.

起こり得る唯一の間違いは、そのようなフォルダーへのパスをハードコーディングすることです。そうしないでください。マシンが変わると場所が変わります。代わりに、Environment.GetFolderPathメソッドを使用してその場所を取得してください。その関数は値の 1 つを取りますが、そのEnvironment.SpecialFolder値には異常な数があります。この目的のために興味を持っているのは次の 3 つです。

  • ApplicationData、ユーザーのアカウントを使用してローミングする必要があるアプリケーション データを格納するために使用されます (つまり、別のマシンを使用してログオンするときにアカウントを使用します)。
  • LocalApplicationData、ユーザーのアカウントでローミングしてはならないアプリケーション データを格納するために使用されます (つまり、現在のマシン上でのみローカルにとどまります)。
  • CommonApplicationDataこれは、すべてのユーザーに共通の (つまり、ユーザー固有ではない) アプリケーション データを格納するために使用されます。
于 2013-03-18T21:52:11.443 に答える
0

ログイン資格情報だけの場合、My.Settings を使用しないのはなぜですか? プロジェクトのプロパティを取得し、設定タブに設定を追加します。"username" など、次のように使用します: My.Settings.username = "Yorrick" My.settings.save

于 2015-12-10T04:39:31.790 に答える