Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在IIS中从ASP.NET应用程序写入注册表?_C#_Asp.net_Iis_Windows Server 2008 R2 - Fatal编程技术网

C# 如何在IIS中从ASP.NET应用程序写入注册表?

C# 如何在IIS中从ASP.NET应用程序写入注册表?,c#,asp.net,iis,windows-server-2008-r2,C#,Asp.net,Iis,Windows Server 2008 R2,我尝试从asp.net应用程序在Registry.LocalMachine中写入。我使用以下代码,它在我的开发机器上工作: string value = "some value"; RegistryKey clefDeRegistre = Registry.LocalMachine; RegistryKey clefTapi = clefDeRegistre.OpenSubKey(@"SOFTWARE\SomeEditor\MySubKey", true); if (clefTapi != nu

我尝试从asp.net应用程序在Registry.LocalMachine中写入。我使用以下代码,它在我的开发机器上工作:

string value = "some value";
RegistryKey clefDeRegistre = Registry.LocalMachine;
RegistryKey clefTapi = clefDeRegistre.OpenSubKey(@"SOFTWARE\SomeEditor\MySubKey", true);
if (clefTapi != null)
    {
        clefTapi.SetValue("Options", value);
    }
但是,当我在我的服务器(WindowsServer2008R2)上尝试时,它不起作用

使用默认的应用程序池设置,我在尝试写入注册表时收到一个安全异常。因此,我将应用程序池标识更改为LocalSystem

现在我没有收到任何异常,但是密钥没有被修改


这看起来像是一个问题,但我不明白如何禁用它。

如果应用程序池处于32位模式,则密钥转到SOFTWARE\wow6432节点分支。

为什么?ASP.NET Web应用程序在安全权限降低的情况下运行是有原因的。为什么要更改HKLM配置单元?我必须更新其他正在运行的应用程序的设置。这是一个我无法修改的旧应用程序,修改此设置的唯一方法是使用此注册表键,但为什么要使用ASP.NET应用程序?为什么不是控制台程序或后台Windows服务?这会更合适,并且会大大减少攻击面。因为它将从网页上使用。我完全了解安全问题,如果可能的话,我可以使用一个对这个特定注册表项具有写入权限的有限用户。但首先我必须设法在注册表中写入。好的,我的应用程序池没有理由处于32位模式,我把它改为64位,现在它可以了。