奇妙な問題があります。HOSTS ファイルのエントリを変更するアプリケーションを C# (.Net 4 クライアント プロファイル) で作成しています。HOSTS ファイルのユーザー アカウントに「フル アクセス」を追加し、通常のテキスト エディターで問題なくファイルを編集できます。
アプリケーションは、Visual Studio 2010 Debugger で実行すると動作します ([Visual Studio ホスティング プロセスを有効にする] が選択されている場合)。
Visual Studio の外部でアプリケーションを実行すると、「管理者として実行」(!!!) した場合でも、HOSTS ファイルを書き込もうとすると UnauthorizedAccessException が発生する可能性があります。なんで?詳細な情報からは何の手がかりも得られませんでした。
System.UnauthorizedAccessException was caught
Message=Der Zugriff auf den Pfad "C:\Windows\System32\drivers\etc\hosts" wurde verweigert.
Source=mscorlib
StackTrace:
bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
bei System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
bei System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
bei System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
bei System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
bei System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding)
bei System.IO.File.WriteAllLines(String path, String[] contents)
bei App.HostsFile.Save() in HostsFile.cs:Zeile 125.
bei App.Actions.SaveHosts.Execute(Context ctxt) in Actions\SaveHosts.cs:Zeile 16.
InnerException:
(there is none)
マニフェスト ファイルを作成していません。デフォルトのマニフェスト オプションでコンパイルしています。それで、問題は何ですか?そして、私は何ができますか?
ありがとうございました。