C# 注册表中的UrlAcl信息

C# 注册表中的UrlAcl信息,c#,.net,windows,C#,.net,Windows,有人知道在注册表中如何存储UrlAcl数据的规范吗?我知道我可以在HKLM\System\CurrentControlSet\services\HTTP\Parameters\UrlAclInfo中找到这些值。每个值名都是正在注册的实际URL,但是,其余的实际数据是二进制的。我需要能够获得注册urlacl的用户名。有人知道我在哪里可以找到如何解析二进制数据以获得我需要的信息吗 谢谢 另一种方法是让您的程序运行netsh http show urlacl,重定向输出,然后解析它。有关示例,请参见

有人知道在注册表中如何存储UrlAcl数据的规范吗?我知道我可以在HKLM\System\CurrentControlSet\services\HTTP\Parameters\UrlAclInfo中找到这些值。每个值名都是正在注册的实际URL,但是,其余的实际数据是二进制的。我需要能够获得注册urlacl的用户名。有人知道我在哪里可以找到如何解析二进制数据以获得我需要的信息吗


谢谢

另一种方法是让您的程序运行
netsh http show urlacl
,重定向输出,然后解析它。有关示例,请参见

理想情况下,您可以从Windows API访问信息。我知道有一段时间这个API是“未发布的”,我不知道现在是否有文档记录

更新:也许这就是你想要的?HttpApi函数有几个C#wrapper。搜索[httpapi C#]。我不知道他们中是否有人会做你想做的事,但他们看起来很有希望


根据文档,HttpApi可用于带有SP2、Windows Server 2003和所有更高版本的Windows XP。

不幸的是,我也需要支持Windows XP和Server 2003,否则我可能会走这条路。而且我不能依赖安装了支持UTIL的用户为这些系统使用httpconfig。不过,谢谢你的意见@JimMischel我认为这是正确的API。具有一个扩展,用于在应用程序安装期间创建URL ACL。虽然它不是生产代码(相关部分是C++),但它可能有一些方便的使用指针。谢谢你们的帮助,伙计们!我最终使用了HttpSetServiceConfiguration和HttpDeleteServiceConfiguration。我仍然发现枚举注册表中的键是找出在我的情况下正在使用哪些端口的最简单方法。但是HttpApi函数在注册/注销端口方面发挥着巨大的作用。谢谢你的指点!在解析netsh输出的过程中需要注意的一点是,netsh是本地化的,因此在您的PC上解析良好的东西可能会在具有不同语言设置的PC上失败。我同意Jim Mischel关于使用API的建议。大多数注册表数据不是公开指定的,也不打算由创建它的代码以外的任何东西来解释。即使您认为自己已经成功地对其进行了反向工程,也只需要一个您的测试以前从未见过的紧急情况,就可以让整个过程戛然而止:)