2011-01-18 12 views
0

私は一時ファイルを作成するプログラムを持っています。このプログラムが昇格された権限を持つ管理者として実行された場合、ユーザーが管理者であっても結果のファイルを昇格された権限なしで削除することはできません。これにより、ユーザーは常に「管理者として実行」でアプリケーションを実行する必要があります。windows 7-64bit - プログラムの管理者権限を犠牲にするためのwin32 API

プログラムには管理者権限または昇格された権限は必要ありません。アプリケーションが常に通常のアクセス許可で実行されるようにするプログラム的な方法はありますか?

答えて

1

いいえ、コードを実行する前にElevationが発生するので、特にコード内でプログラムを仰角なしで実行することはできません。ユーザーがアプリをElevatedにしたい場合、Elevatedが実行されます。しかし、あなたのアプリは必要に応じてファイルを作成し、すべてのユーザーに無制限にアクセスできるようにするには、単にSetFileSecurity()またはSetNamedSecurityInfo()を使用してください。詳細は、http://support.microsoft.com/kb/102102を参照してください。

2

マニフェストはWindowsにアプリケーションasInvokerを起動するよう指示することができますが、ユーザーが右クリックして[管理者として実行]を選択すると、アプリケーションが昇格します。私はユーザーの教育を通じてこれを処理するように誘惑されるだろうが、あなたが行うことができるプログラム的なものがある - それが価値があるかどうかを判断するのはあなた次第である。昇格しているかどうかを確認することができます(基本的にIsInRoleは、アプリケーションが昇格されている場合にのみ管理者であると言います)。そうでない場合は、昇格しない別のプロセスを起動します実際のファイルを作成するnativemanaged)にリンクして書いたブログエントリがあります。

関連する問題