3

明らかな理由(プログラムファイルへの書き込み、およびデフォルトで許可されなくなったその他のもの)により、Vistaで問題が発生しているvb6アプリケーションで作業しています。

  • アプリケーション データまたはユーザーの保存ファイルはどこに保存すればよいですか?
  • そこにもフォルダやファイルを作成する権限が必要ですか?
  • 他にどのような一般的なアクションが問題を引き起こしますか?
  • このプログラムには、ファイルをダウンロードして登録する必要があるアップデーターがあります。これが発生した場合、権限を昇格するにはどうすればよいですか?

これらの質問のいくつかには明白な答えがありますが、私は明白なことを正しく理解したいと思っています.

4

4 に答える 4

3

あなたがしていることによっては、あなたは苦痛の世界に陥るかもしれません. これらの質問のいずれにも明確な答えはありませんが、現在同じ問題を抱えている人から、私が知っていることは次のとおりです.

1) アプリケーション データまたはユーザーの保存ファイルはどこに保存すればよいですか?

これは、何をしたいかによって異なります。ユーザーごとに保存する場合は Users/AppData に保存し、すべてのユーザーに保存する場合は Common/AppData に保存します。

  If SHGetFolderPath(0, CSIDL_COMMON_APPDATA, -1, SHGFP_TYPE_CURRENT, sTempPath) = 0 Then
      sCommonAppdata = Left$(sTempPath, InStr(1, sTempPath, Chr(0)) - 1) &  "CompanyName\AppName"
  End If

これを、Users AppData ディレクトリの CSIDL_APPDATA に変更します。注: これらは、XP と Vista ではファイル システム上のまったく異なる場所にマップされるため、デバッグ時には別の場所を参照する準備をしてください。

2) そこにもフォルダやファイルを作成する権限が必要ですか?

Program Files に何かを書き込むには管理者アクセスが必要です。現在、Program Files 内のファイルに対する VB 用 API と標準 API の動作が異なるという問題が発生しています。

3) 問題を引き起こす他の一般的なアクションは何ですか?

隠れた落とし穴がたくさんあります。ほんの数例を挙げると、IPC または名前付きパイプを介して他のアプリケーションと通信することはできません (トレイ通知アイコンを介して通信していたサービスがあり、完全に書き直す必要がありました)。UAC 通知が表示された場合は、非常に困難です。また、管理者なしでは LOCAL_MACHINE のレジストリに書き込むことはできないため、LOCAL_USER に固執するか、資格情報を取得する必要があります (以下を参照)。

4) プログラムには、ファイルをダウンロードして登録する必要があるアップデーターがあります。

これで頑張ってください。私が言ったように、VB6 で記述しないことを強くお勧めします。VB6 ファイル API は、標準 API とは異なる方法でファイルにアクセスするようです。特権を昇格する必要がある場合は、誰かが親切に助けてくれたこの投稿を参照してください。

于 2009-02-18T19:06:57.707 に答える
0

Vistaには、レガシーアプリケーションを実行できるようにする一連の互換性オプションが付属しているため、短期的には、アプリケーションを変更する必要がまったくない場合があります。これには、ファイルとレジストリの仮想化が含まれます。これは、基本的に、互換モードで実行されている特定のアプリケーションでのみ表示される仮想の場所に、C:\ProgramFilesなどの保護されたフォルダーへの書き込み操作をリダイレクトする機能です。

詳細については、この記事「Dr.DobbでWindowsVistaアプリケーションの互換性を管理する方法」を参照してください。

于 2009-02-18T18:06:25.530 に答える
0

つまり、UAC をオフにして、ActiveX インストーラー サーバーをインストールすると役に立ちます。長期的には、\users または \programdata の下の users ディレクトリにデータと構成情報を配置する必要があります。

于 2009-02-18T18:00:28.273 に答える