簡體   English   中英

寫入LOCAL_MACHINE的權限

[英]Permission For writing to LOCAL_MACHINE

我制作了一個應用程序,允許Windows用戶欺騙Mac地址。 它的工作原理是將“NetworkAdapter”:“00ff00ff00ff”鍵/值對添加到所選用戶的注冊表中。 問題是,每次應用程序嘗試對Windows注冊表進行更改時,Windows彈出一個警告對話框,例如:

在此輸入圖像描述

但是單擊“繼續”將成功添加注冊表值,並且應用程序正常運行。 我可以在代碼中做什么/或添加更改以使對話框消失或者我可以以更好的方式執行此操作? 該應用程序需要Admin Privileges這里是應用程序的git repo

這是方法:

public void SetMac(string macAddress)
{
    const string Name = @"SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002bE10318}";
    using (RegistryKey key0 = Registry.LocalMachine.OpenSubKey(Name, RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.FullControl))
    {

        string[] x = key0.GetSubKeyNames();
        foreach (string name in x)
        {
                var var1 = Registry.LocalMachine.OpenSubKey(Name,RegistryKeyPermissionCheck.ReadWriteSubTree,RegistryRights.FullControl);
                var v = var1.OpenSubKey(name, RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.FullControl);
                var z = v.GetValue("DriverDesc");
                if (comboBox1.Text == z.ToString() )
                {
                    v.SetValue("NetworkAddress",comboBox2.Text);
                    MessageBox.Show(z.ToString());
                }
                v.Close();
                var1.Close();
        }
        key0.Close();
    }
}

您需要在提升的權限下運行您的應用程序,請參閱不允許請求的注冊表訪問

這里的問題是用戶沒有打開目標密鑰進行寫入的權限。 正如abatishchev已經建議的那樣,您需要運行提升的應用程序,以便在執行代碼時用戶實際擁有Administrators組成員身份。

這看起來像CAS權限錯誤的原因是RegistryKey.OpenSubKey方法中的設計缺陷。 當由於用戶權限不足而無法打開目標密鑰時,它應該拋出UnauthorizedAccessException,但它實際上會拋出SecurityException。 問題最終似乎是由於缺乏CAS權限,而實際上是用戶,而不是代碼,缺乏編輯密鑰的權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM