0

一部のデータを XML ファイルに保存するアプリケーションを作成しました。問題は、XML 保存のパスにあります。TinyXML を使用してデータを vc++ に保存しています。

このアプリケーションを展開すると、インストールされ"C:\Program files(x86)\applicationname "、アプリケーションを実行すると、XML ファイルが保存されます

"C:\Users\UserName\AppData\Local\VirtualStore\Program Files (x86)\ApplicationName ".

このアプリケーションをシステムの起動時に動作するようにしました。したがって、このアプリケーションを再起動すると、xml ファイルが別のパスに保存されます。"C:\Users\UserName\AppData\Local\VirtualStore\windows\sysWOW64"

XML をインストールしたパスに保存するか、appdata、アプリケーション名に保存する必要があります

アプリケーションがインストールされている場所に XML ファイルを保存するにはどうすればよいですか?

doc.SaveFile( "test.xml" ); // xml saving code in tinyxml library
4

1 に答える 1

0

まず、C++ コードはおそらく機能しているため、これは C++ とは関係ありません。XML や tinyxml、さらには visual-c++ と同じです。

Windowsはこれらの書き込みアクセスをユーザー固有の「VirtualStore\Program Files」にリダイレクトするようですが、その実際のセマンティクスを調査するのはあなたに任せます。起動時にユーザーがいない場合、以前のユーザーはログインしていないため、このパスは明らかに異なります。

ここで、固定パスを取得するために、関数GetModuleFileName()を使用して実行可能ファイルの場所を見つけ、そのパスを使用して Smartmeter.xml を見つけることができます。ただし、現在直面している問題は、「Program Files」の下にインストールされたプログラムが、インストール ディレクトリへの書き込みアクセス権を魔法のように取得しないことです。これは、あるユーザーが別のユーザーのデータをいじるのを防ぐためです。

あなたがしていることは、MS Windows では「サービス」と呼ばれる、バックグラウンドで実行されるプログラムを作成していると思います。このファイルで何を達成したいのか、全体的に何を計画しているのかはまだ不明であり、これらは将来のステップを決定するものです. いずれにせよ、サービスが提供する可能性を見てみましょう。あなたのニーズに合ったものがあるかもしれません。

于 2013-01-20T09:00:52.717 に答える