0

これは私を夢中にさせます。私はStackOverflow全体を検索し、UACについてすべて読みました。しかし、私はまだ問題に直面しています。

VS 2008 を使用して、これだけを行う単純なプログラムを作成しました。

File.Delete("c:\windows\fonts\whatever.ttf")

EXE には、requireAdministrator=True の適切なマニフェストがあります。コンパイルすると、アプリ アイコンは盾のアイコンを受け取ります。そして、管理者または標準ユーザーとしてログインしてアプリケーションを起動すると、「次のプログラムで変更を行いますか...」という確認ダイアログが表示されます。さらに、EXE でコード署名証明書を使用します。

アプリを実行すると、次の動作が得られます。

管理者としてログインしてアプリケーションを実行すると、ファイルが削除されます。

ただし、標準ユーザーとしてログインすると、UAC プロンプトが表示されて管理者パスワードを入力しますが、削除を実行すると「ファイル アクセスが拒否されました」というエラーが表示されます。

誰かが私にこれを説明できますか?マニフェストの requiresAdministrator=True がプロセスを昇格させると思いました。しかし、まだシステムファイルを削除できません。

ありがとう。

4

1 に答える 1

1

プロセスは昇格しますが、管理者グループのメンバーのみがファイルを変更または削除できるというアクセス制御がファイルにあり、「標準」ユーザーが管理者グループのメンバーでない場合、ファイルを変更することはできません。

于 2009-12-10T20:44:24.673 に答える