2016-10-27 5 views
1

私は数多くの方法で試してきましたが、「管理者としてアプリケーションを開きますか? 'ホストファイルに新しいエントリを追加する警告を回避/処理するコードを提案する人もいます。それとも他の任意のウイルスhostsファイルをハイジャックし、悪質なサイトへのすべてのブラウザ要求をリダイレクトすることができ - 事前に 感謝..管理者権限でC#を使用して手動で管理することなくホストファイルを変更する方法

public bool ModifyHostsFile(string sEntryIPAddr, string sEntryURL) 
    { 
     try 
     { 
      WindowsPrincipal principal = new WindowsPrincipal(WindowsIdentity.GetCurrent()); 
      bool administrativeMode = principal.IsInRole(WindowsBuiltInRole.Administrator); 

      if (!administrativeMode) 
      { 
       //ProcessStartInfo startInfo = new ProcessStartInfo(); 
       //startInfo.Verb = "runas"; 
       //startInfo.FileName = Application.ExecutablePath; 
       //Process.Start(startInfo); 
       //bool bStatus = GrantAccess(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), @"drivers\etc\hosts")); 
       using (StreamWriter w = File.AppendText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), @"drivers\etc\hosts"))) 
       { 
        w.WriteLine(sEntryIPAddr + " " + sEntryURL); 
       } 
       Application.Exit(); 
      } 
      return true; 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
      return false; 
     } 
    } 

    private bool GrantAccess(string fullPath) 
    { 
     DirectoryInfo dInfo = new DirectoryInfo(fullPath); 
     DirectorySecurity dSecurity = dInfo.GetAccessControl(); 
     dSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow)); 
     dInfo.SetAccessControl(dSecurity); 
     return true; 
    } 
+0

UACを無効にする方法はありますが、誰もがそれを望むとは思わない... – Prix

答えて

2

はありません、あなたは間違いなくファイルを変更する管理者のアクセスを必要とします。

+0

はい、そのような権利をプログラマチックに/バイパスする/手動の介入なしに処理する方法はありますか?私には何が必要なのですか?あなたに何か考えてもらえれば教えてください。 –

+0

UACポップアップの全ポイントは、 。それを回避する手段があれば、アプリケーションの設定を変更することを止めるものは何もありません。 – navigator

0

私は、私が持っているいくつかの質問をするコメントをする担当者を持っていないが、代わりに私は仮定に基づいて答えます。管理者権限で

なぜUACのポップアップがアプリケーションを実行するには

あなたの目標

あなたは管理者の権利を求めて取得するポップアップが単にあなたのシステムの重要なファイルはどのようにそれを防ぐために

を変更することにより、あなたの知識がなくても管理者権限を服用してからアプリケーションを防ぐためです

私は非常にこのステップが、

代替コントロールパネルからUAC(ユーザーアカウント制御)を無効にすることです頭に浮かぶ最初のオプションを取っていないお勧めします

代替を実行することができプログラムはスケジュールされたタスクとして実行され、最高の特権で実行されます。その後、スケジュールされたタスクを実行してプログラムを実行し、UACポップアップなしで管理者アクセス権を持つことができます。 これはコマンドラインまたはGUIを介して行うことができますが、スケジュールタスクの作成にはまだ管理者権限が必要です

関連する問題