2016-10-18 7 views
2

ProgramDataフォルダに書き込むコンポーネントを持つWindowsアプリケーションがあります。アンインストーラを実行すると、このコンポーネントによって生成されたファイルは削除されません。 UAC :: RunElevated使用して、我々は最初の動作中はProgramDataNSIS RMDirがProgramDataのユーザー作成ファイルの削除に失敗しました

SetOutPath "$RENDERER_INSTALL_DIR" 

LogSet On 
File /r "${MAGNIFY_DIR}/secRenderer/Arelle/*" 
LogSet Off 

AccessControl::GrantOnFile "$RENDERER_INSTALL_DIR" "(S-1-5-32-545)" "FullAccess" 

にサードパーティのコンポーネントをインストールし、このコンポーネントはアンインストール時

はProgramData

に独自のインストールディレクトリに書き込み、我々は、上記で作成したフォルダを削除しよう再度UAC :: RunElevatedを使用して

RMDir /r $RENDERER_INSTALL_DIR 

ただし、コンポーネントを操作して作成されたファイルは削除されません。

これらのファイルは、管理者ではなくコンポーネントを使用したユーザーが所有していることがわかりましたが、それにもかかわらず完全な読み取り、書き込み、および削除の権限があります。

この作品はどのように作成しますか?

+0

UACプラグインを使用しないことをお勧めします。 – Anders

答えて

2

本当に質問に答えるためにここには2つの未知数があります。

なぜUACプラグインが関与していますか? lowerあなたのシステムへのアクセスにのみ役立ちます!正しく使用することも難しいので、それを試してみることをお勧めします。

このサードパーティコンポーネントはACLを変更しますか?アンインストールする前にACLを確認してください。

file system virtualizationがあなたを騙している可能性はありますか? VirtualStoreフォルダを確認します。

Process Monitorとは何ですか? ACCESS_DENIEDやその他のエラーが発生していますか?

ProgramDataの下のフォルダにすべてのユーザーが完全にアクセスすることはお勧めできません。また、これを必要とするコンポーネントはWindowsロゴのガイドラインに従いません。

+1

感謝祭のプロセスモニタは、RMDir行が実際には実行されていないことを示しています。アンインストーラが認識していたファイルを自動的に削除することを認識していないため、 –

関連する問題