'How to export a registry key in C#

I am trying to write a C# code, which will block exe files from running. I found a question about the same topic: example question. In the question suggested method is using these registry lines as below:

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe]
"Debugger"="calc.exe"

However, this code doesn't look like any C# code I have ever seen. The answer talks about "adding a registry key" and "exported registry key". However, when I search those terminologies on the internet, I could not find any clear explanation about the topic for a beginner Windows developer like me.

For example this question add registry key question wrote a C# function with two inputs.

void exportRegistry(string strKey, string filepath)

I tried to use this function inside my main Winform constructor as below, but nothing happened - I could still open notepad.exe with no problem (which is the main aim of the code)

this.exportRegistry("\"Debugger\" = \"calc.exe\"", "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\notepad.exe]");

What am I doing wrong? I really thought I have enough coding skill for this problem, but I am stuck.



Solution 1:[1]

After I searched for some time, I found a way to achieve it. I can know stop programs running by changing the registery for windows. This code stops notepad.exe from running. It does it by adding several registery keys with the C# code. The logic behind it given in this link Explanation. It might not be the best way but it does stop programs running.

            RegistryKey key = Registry.CurrentUser.OpenSubKey("Software", true);

            key.CreateSubKey("Microsoft");
            key = key.OpenSubKey("Microsoft", true);

            key.CreateSubKey("Windows");
            key = key.OpenSubKey("Windows", true);

            key.CreateSubKey("CurrentVersion");
            key = key.OpenSubKey("CurrentVersion", true);

            key.CreateSubKey("Policies");
            key = key.OpenSubKey("Policies", true);

            RegistryKey explorerKey = key.CreateSubKey("explorer");
            key = key.OpenSubKey("explorer", true);

            explorerKey.SetValue("DisallowRun", 0x00000001, RegistryValueKind.DWord);

            RegistryKey disallowRun = key.CreateSubKey("DisallowRun");
            key = key.OpenSubKey("DisallowRun", true);

            disallowRun.SetValue("1", "notepad.exe", RegistryValueKind.String);

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Human Robot Interaction