ビスタはProgramDataフォルダからファイルが見つかりません
-
23-08-2019 - |
質問
私は、共通のデータフォルダ(CSIDL_COMMON_APPDATA)のサブディレクトリ内のAccessファイルをインストールするレガシーVB6のプログラムを持っています。私は今、64ビットのVistaシステム上でこのプログラムをインストールしている、とプログラムが正常に動作し、Cでファイルにアクセスします:\はProgramData \うわー\ WowCat.mdbが、このファイルは、Windowsエクスプローラに表示されません。
。私は私の古いPCから取られた以降のバージョン、で、このデータベースを上書きしたいのですが、エクスプローラを使用して、私はCでファイルを見ることができません:\はProgramData \うわー\(私はすべての隠されたファイルやシステムファイルを表示しています)。私が先に行くと、とにかく新しいWowCat.mdbをコピーする場合、プログラムがまだ古いもので動作します。
VBのコードをステッピング、それは間違いでファイルを開いている:C:\はProgramData \うわー\ WowCat.mdb。 Cの検索:ドライブが唯一の新しいコピーを示し、だからここでプログラムがアクセスしているものです。
?解決
これは、Windows Vistaのフォルダリダイレクトのです。あなたは通常Cに何かを書くために権利を持っていない場合:\プログラムファイルフォルダは、Vistaは黙ってユーザーディレクトリ内の「秘密」フォルダにこれらの書き込みをリダイレクトします。ファイルがまだファイル(およびそのユーザーとして実行されているすべてのプログラム)を作成したユーザーに対して表示されますが、それは他の誰のために表示されなくなります。だからあなたのプログラムは、おそらくExplorerがあるよりも、別のユーザーとして実行されているので、エクスプローラはそれを見ることができません。
私のVistaの64ビットマシン上のディレクトリ/ ALからの次の出力を参照してください。
C:\ProgramData>dir /aL
Volume in drive C has no label.
Volume Serial Number is 74DB-58F8
Directory of C:\ProgramData
02.11.2006 16:41 <JUNCTION> Application Data [C:\ProgramData]
02.11.2006 16:41 <JUNCTION> Desktop [C:\Users\Public\Desktop]
02.11.2006 16:41 <JUNCTION> Documents [C:\Users\Public\Documents]
02.11.2006 16:41 <JUNCTION> Favorites [C:\Users\Public\Favorites]
02.11.2006 16:41 <JUNCTION> Start Menu [C:\ProgramData\Microsoft\Windows\Start Menu]
02.11.2006 16:41 <JUNCTION> Templates [C:\ProgramData\Microsoft\Windows\Templates]
0 File(s) 0 bytes
6 Dir(s) 62 040 051 712 bytes free
機能は、あなたがそれらについて読む場所に応じて、再解析ポイントまたはジャンクションとして知られています。彼らは、Unixにおけるシンボリックリンクと非常によく似ています。
他のヒント
これを適切に行うと、WindowsインストーラMSIまたはレガシーインストーラの実行がCommonAppDataFolder下にサブフォルダを作成する必要が上昇し、このフォルダにみんな(または適切なグループ)のフルコントロールを与え、最終的にそこにあなたのMDBを配置します。また、フォルダを作成するMDBがあるファイルを移動し、単にファイルにアクセス許可を設定することができます。
高架実行または不作為を検出して仕事をするの上昇プロセスを生成している場合EXE自体が最初の実行でこれを行うことも可能です。規格は、このアクションは、しかし、表示されたUAC盾のアイコンでメニュー項目やボタンによって開始されなければならないことを指示し、ちょうどUACプロンプトをポップアップません。
これは、しかしMSIパッケージを経由して、すべての方がはるかに簡単です。