{"id":68533,"date":"2005-11-14T13:54:00","date_gmt":"2005-11-14T13:54:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2005\/11\/14\/how-can-i-tell-if-activex-is-enabled-in-internet-explorer\/"},"modified":"2005-11-14T13:54:00","modified_gmt":"2005-11-14T13:54:00","slug":"how-can-i-tell-if-activex-is-enabled-in-internet-explorer","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/how-can-i-tell-if-activex-is-enabled-in-internet-explorer\/","title":{"rendered":"How Can I Tell if ActiveX is Enabled in Internet Explorer?"},"content":{"rendered":"<p><IMG class=\"nearGraphic\" title=\"Hey, Scripting Guy! Question\" border=\"0\" alt=\"Hey, Scripting Guy! Question\" align=\"left\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/q-for-powertip.jpg\" width=\"34\" height=\"34\"> \n<P>Hey, Scripting Guy! How can I tell if ActiveX is enabled in Internet Explorer?<BR><BR>&#8212; JV<\/P><IMG border=\"0\" alt=\"Spacer\" src=\"https:\/\/devblogs.microsoft.com\/scripting\/wp-content\/uploads\/sites\/29\/2019\/05\/spacer.gif\" width=\"5\" height=\"5\"><IMG class=\"nearGraphic\" title=\"Hey, Scripting Guy! Answer\" border=\"0\" alt=\"Hey, Scripting Guy! Answer\" align=\"left\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/a-for-powertip.jpg\" width=\"34\" height=\"34\"><A href=\"http:\/\/go.microsoft.com\/fwlink\/?linkid=68779&amp;clcid=0x409\"><IMG class=\"farGraphic\" title=\"Script Center\" border=\"0\" alt=\"Script Center\" align=\"right\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/ad.jpg\" width=\"120\" height=\"288\"><\/A> \n<P>Hey, JV. You just <I>had<\/I> to ask this question, didn\u2019t you? Actually, this isn\u2019t a particularly hard question to answer, it\u2019s just a little complicated. But that has to do more with the way Internet Explorer is configured than it does with writing a script to retrieve this information.<\/P>\n<P>To begin with, Internet Explorer does not have a management object model; instead, the only way we can programmatically retrieve Internet Explorer settings and property values is by writing a script that grabs this information from the registry. That\u2019s pretty easy; we often use registry-reading scripts in this column. The tricky part comes in figuring out which registry values need to be read, and knowing how to interpret the data that comes back.<\/P>\n<TABLE id=\"EAD\" class=\"dataTable\" cellSpacing=\"0\" cellPadding=\"0\">\n<THEAD><\/THEAD>\n<TBODY>\n<TR class=\"record\" vAlign=\"top\">\n<TD>\n<P class=\"lastInCell\"><B>Note<\/B>. Another tricky part lies in knowing which ActiveX setting you\u2019re interested in; for better or worse, Internet Explorer has several settings related to ActiveX controls. For today\u2019s column, we\u2019re assuming you want to read the value for this setting: <B>Run ActiveX controls and plug-ins<\/B>.<\/P><\/TD><\/TR><\/TBODY><\/TABLE>\n<DIV class=\"dataTableBottomMargin\"><\/DIV>\n<P>Let\u2019s start by figuring out which registry values need to be modified. As it turns out, there is no global setting for Internet Explorer security settings; instead, these settings are managed by Internet Explorer zones. There are four such security zones; the zone names and their values are shown in the following table:<\/P>\n<TABLE id=\"EPD\" class=\"dataTable\" cellSpacing=\"0\" cellPadding=\"0\">\n<THEAD><\/THEAD>\n<TBODY>\n<TR class=\"record\" vAlign=\"top\">\n<TD>\n<P class=\"lastInCell\"><B>Zone Name<\/B><\/P><\/TD>\n<TD>\n<P class=\"lastInCell\"><B>Zone Value<\/B><\/P><\/TD><\/TR>\n<TR class=\"evenRecord\" vAlign=\"top\">\n<TD>\n<P class=\"lastInCell\">Intranet sites<\/P><\/TD>\n<TD>\n<P class=\"lastInCell\">1<\/P><\/TD><\/TR>\n<TR class=\"record\" vAlign=\"top\">\n<TD>\n<P class=\"lastInCell\">Trusted sites<\/P><\/TD>\n<TD>\n<P class=\"lastInCell\">2<\/P><\/TD><\/TR>\n<TR class=\"evenRecord\" vAlign=\"top\">\n<TD>\n<P class=\"lastInCell\">Internet sites<\/P><\/TD>\n<TD>\n<P class=\"lastInCell\">3<\/P><\/TD><\/TR>\n<TR class=\"record\" vAlign=\"top\">\n<TD>\n<P class=\"lastInCell\">Restricted sites<\/P><\/TD>\n<TD>\n<P class=\"lastInCell\">4<\/P><\/TD><\/TR><\/TBODY><\/TABLE>\n<DIV class=\"dataTableBottomMargin\"><\/DIV>\n<P>Settings for Internet Explorer security zones can be found in the <B>HKEY_CURRENT_USER\\ Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\<\/B> portion of the registry; to access a particular zone you need to access the subkey corresponding to that zone. To determine the appropriate subkey, just tack the zone value to the preceding registry path. For example, to get at settings for the Internet sites zone (value 3) you need to access this registry subkey:<\/P>\n<P>HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\<B>3<\/B><\/P>\n<P>You can see the <B>3<\/B> tacked on at the end. Want to access settings for the Intranet sites zone (value 1)? Okey-doke:<\/P>\n<P>HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\<B>1<\/B><\/P>\n<P>Once you\u2019ve located the correct registry subkey you then need to know which registry value to read. Unfortunately (at least for script writers) these registry values have somewhat-cryptic names; for example, the one we\u2019re interested in is named <B>1200<\/B>. (Why? We have no idea.) If you\u2019re gung-ho on using scripts to read\/manage Internet Explorer settings then you might want to take a look at the <A href=\"http:\/\/null\/downloads\/info.aspx?na=22&amp;p=3&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=&amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3dd41b036c-e2e1-4960-99bb-9757f7e9e31b%26DisplayLang%3den\" target=\"_blank\"><B>Managing Internet Explorer Enhanced Security Configuration whitepaper<\/B><\/A>. Only a portion of the document deals with scripting, but that portion <I>does<\/I> map these cryptic registry values to the corresponding properties in the user interface. And, of course, many of these settings can be found in the <A href=\"http:\/\/null\/technet\/scriptcenter\/tools\/twkmatic.mspx\"><B>Tweakomatic<\/B><\/A>. (The Tweakomatic, unlike the whitepaper, will actually write the scripts for you.)<\/P>\n<P>So are we ready to finally write a script and actually <I>do<\/I> something here? Almost. The other thing you need to know is that the configuration information is stored in the registry as a DWORD (numeric) value. Does it help if you know that the ActiveX controls setting is configured as a 3 rather than 65536? Probably not. But this table might help:<\/P>\n<TABLE id=\"E5F\" class=\"dataTable\" cellSpacing=\"0\" cellPadding=\"0\">\n<THEAD><\/THEAD>\n<TBODY>\n<TR class=\"record\" vAlign=\"top\">\n<TD>\n<P class=\"lastInCell\"><B>Registry Value<\/B><\/P><\/TD>\n<TD>\n<P class=\"lastInCell\"><B>User Interface Value<\/B><\/P><\/TD><\/TR>\n<TR class=\"evenRecord\" vAlign=\"top\">\n<TD>\n<P class=\"lastInCell\">0<\/P><\/TD>\n<TD>\n<P class=\"lastInCell\">Enabled<\/P><\/TD><\/TR>\n<TR class=\"record\" vAlign=\"top\">\n<TD>\n<P class=\"lastInCell\">1<\/P><\/TD>\n<TD>\n<P class=\"lastInCell\">Prompt<\/P><\/TD><\/TR>\n<TR class=\"evenRecord\" vAlign=\"top\">\n<TD>\n<P class=\"lastInCell\">3<\/P><\/TD>\n<TD>\n<P class=\"lastInCell\">Disabled<\/P><\/TD><\/TR>\n<TR class=\"record\" vAlign=\"top\">\n<TD>\n<P class=\"lastInCell\">65536<\/P><\/TD>\n<TD>\n<P class=\"lastInCell\">Administrator Approved<\/P><\/TD><\/TR><\/TBODY><\/TABLE>\n<DIV class=\"dataTableBottomMargin\"><\/DIV>\n<P>And, no, that last value is not a misprint; it really <I>is<\/I> 65536. Go figure.<\/P>\n<P>OK, <I>now<\/I> we\u2019re ready to write a script. Here\u2019s a sample script that retrieves setting information for the Intranet sites zone (zone value 1):<\/P><PRE class=\"codeSample\">HKEY_CURRENT_USER = &amp;H80000001<\/p>\n<p>strComputer = &#8220;.&#8221;\nSet objReg = GetObject(&#8220;winmgmts:\\\\&#8221; &amp; strComputer &amp; &#8220;\\root\\default:StdRegProv&#8221;)<\/p>\n<p>strKeyPath = &#8220;Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\1&#8221;\nValueName = &#8220;1200&#8221;<\/p>\n<p>objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue<\/p>\n<p>Wscript.Echo &#8220;Run ActiveX Controls and Plug-ins&#8221;<\/p>\n<p>If IsNull(dwValue) Then\n    Wscript.Echo &#8220;Intranet sites:  The value is either Null or could not be found in the registry.&#8221;\nElseIf dwValue = 0 Then\n    Wscript.Echo &#8220;Intranet sites: Enabled&#8221;\nElseIf dwValue = 1 Then\n    Wscript.Echo &#8220;Intranet sites: Prompt&#8221;\nElseIf dwValue = 3 Then\n    Wscript.Echo &#8220;Intranet sites: Disabled&#8221;\nElseIf dwValue = 65536 Then\n    Wscript.Echo &#8220;Intranet sites: Administrator Approved&#8221;\nEnd If\n<\/PRE>\n<P>We begin by defining a constant named HKEY_CURRENT_USER and setting the value to &amp;H80000001; this tells the script which registry hive we want to work with. We then connect to the WMI service; note that the <B>StdRegProv<\/B> (Standard Registry provider) class is located in the <B>root\\default<\/B> namespace. (Many script writers assume that the class is in root\\cimv2, like most WMI classes. Nope.)<\/P>\n<P>Next we assign values to a pair of variables:<\/P><PRE class=\"codeSample\">strKeyPath = &#8220;Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\1&#8221;\nValueName = &#8220;1200&#8221;\n<\/PRE>\n<P>As you can see, the variable strKeyPath contains the registry path within HKEY_CURRENT_USER (don\u2019t include HKEY_CURRENT_USER in the path or the script will fail). The variable ValueName, meanwhile, is set to 1200, which happens to be the registry value we want to read.<\/P>\n<P>We then call the <B>GetDWORDValue<\/B> method, which enables us to read a DWORD value in the registry:<\/P><PRE class=\"codeSample\">objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue\n<\/PRE>\n<P>Note that we need to pass GetDWORDValue several parameters:<\/P>\n<TABLE border=\"0\" cellSpacing=\"0\" cellPadding=\"0\">\n<TBODY>\n<TR>\n<TD class=\"listBullet\" vAlign=\"top\">\u2022<\/TD>\n<TD class=\"listItem\">\n<P><B>HKEY_CURRENT_USER<\/B>, the constant that tells the script which registry hive to use.<\/P><\/TD><\/TR>\n<TR>\n<TD class=\"listBullet\" vAlign=\"top\">\u2022<\/TD>\n<TD class=\"listItem\">\n<P><B>strKeyPath<\/B>, the variable containing the registry path.<\/P><\/TD><\/TR>\n<TR>\n<TD class=\"listBullet\" vAlign=\"top\">\u2022<\/TD>\n<TD class=\"listItem\">\n<P><B>ValueName<\/B>, the variable representing the registry value we want to read.<\/P><\/TD><\/TR>\n<TR>\n<TD class=\"listBullet\" vAlign=\"top\">\u2022<\/TD>\n<TD class=\"listItem\">\n<P><B>dwValue<\/B>, an \u201cout parameter\u201d that will end up holding the value read from the registry. If you\u2019re thinking, \u201cWait, we didn\u2019t assign a value to dwValue,\u201d you\u2019re right. And that\u2019s by design: we <I>don\u2019t<\/I> assign values to an out parameter. Instead, GetDWORDValue will read whatever happens to be stored in the registry value in question (1200) and then the <I>method<\/I> will assign that value to dwValue.<\/P><\/TD><\/TR><\/TBODY><\/TABLE>\n<P>Yeah, that <I>is<\/I> kind of neat, isn\u2019t it?<\/P>\n<P>At this point we could simply echo back the value retrieved from the registry. As we noted, however, that will be a value such as 1 or 3 or 65536. Therefore, we set up a simple little <B>If Then ElseIf<\/B> block to examine the returned value and echo back a more meaningful message:<\/P><PRE class=\"codeSample\">If IsNull(dwValue) Then\n    Wscript.Echo &#8220;Intranet sites:  The value is either Null or could not be found in the registry.&#8221;\nElseIf dwValue = 0 Then\n    Wscript.Echo &#8220;Intranet sites: Enabled&#8221;\nElseIf dwValue = 1 Then\n    Wscript.Echo &#8220;Intranet sites: Prompt&#8221;\nElseIf dwValue = 3 Then\n    Wscript.Echo &#8220;Intranet sites: Disabled&#8221;\nElseIf dwValue = 65536 Then\n    Wscript.Echo &#8220;Intranet sites: Administrator Approved&#8221;\nEnd If\n<\/PRE>\n<P>You\u2019re right: once you understand where (and how) the values are stored in the registry, this isn\u2019t hard at all.<\/P>\n<P>Just to save you some typing (and\/or copying and pasting), here\u2019s a script that returns information for all four security zones:<\/P><PRE class=\"codeSample\">HKEY_CURRENT_USER = &amp;H80000001<\/p>\n<p>strComputer = &#8220;.&#8221;\nSet objReg = GetObject(&#8220;winmgmts:\\\\&#8221; &amp; strComputer &amp; &#8220;\\root\\default:StdRegProv&#8221;)<\/p>\n<p>strKeyPath = &#8220;Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\1&#8221;\nValueName = &#8220;1200&#8221;\nobjReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue<\/p>\n<p>Wscript.Echo &#8220;Run ActiveX Controls and Plugins&#8221;<\/p>\n<p>If IsNull(dwValue) Then\n    Wscript.Echo &#8220;Intranet sites:  The value is either Null or could not be found in the registry.&#8221;\nElseIf dwValue = 0 Then\n    Wscript.Echo &#8220;Intranet sites: Enabled&#8221;\nElseIf dwValue = 1 Then\n    Wscript.Echo &#8220;Intranet sites: Prompt&#8221;\nElseIf dwValue = 3 Then\n    Wscript.Echo &#8220;Intranet sites: Disabled&#8221;\nElseIf dwValue = 65536 Then\n    Wscript.Echo &#8220;Intranet sites: Administrator Approved&#8221;\nEnd If<\/p>\n<p>strKeyPath = &#8220;Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\2&#8221;\nValueName = &#8220;1200&#8221;<\/p>\n<p>objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue<\/p>\n<p>If IsNull(dwValue) Then\n    Wscript.Echo &#8220;Trusted sites:  The value is either Null or could not be found in the registry.&#8221;\nElseIf dwValue = 0 Then\n    Wscript.Echo &#8220;Trusted sites: Enabled&#8221;\nElseIf dwValue = 1 Then\n    Wscript.Echo &#8220;Trusted sites: Prompt&#8221;\nElseIf dwValue = 3 Then\n    Wscript.Echo &#8220;Trusted sites: Disabled&#8221;\nElseIf dwValue = 65536 Then\n    Wscript.Echo &#8220;Trusted sites: Administrator Approved&#8221;\nEnd If<\/p>\n<p>strKeyPath = &#8220;Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3&#8221;\nValueName = &#8220;1200&#8221;<\/p>\n<p>objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue<\/p>\n<p>If IsNull(dwValue) Then\n    Wscript.Echo &#8220;Internet sites:  The value is either Null or could not be found in the registry.&#8221;\nElseIf dwValue = 0 Then\n    Wscript.Echo &#8220;Internet sites: Enabled&#8221;\nElseIf dwValue = 1 Then\n    Wscript.Echo &#8220;Internet sites: Prompt&#8221;\nElseIf dwValue = 3 Then\n    Wscript.Echo &#8220;Internet sites: Disabled&#8221;\nElseIf dwValue = 65536 Then\n    Wscript.Echo &#8220;Internet sites: Administrator Approved&#8221;\nEnd If<\/p>\n<p>strKeyPath = &#8220;Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\4&#8221;\nValueName = &#8220;1200&#8221;<\/p>\n<p>objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue<\/p>\n<p>If IsNull(dwValue) Then\n    Wscript.Echo &#8220;Restricted sites:  The value is either Null or could not be found in the registry.&#8221;\nElseIf dwValue = 0 Then\n    Wscript.Echo &#8220;Restricted sites: Enabled&#8221;\nElseIf dwValue = 1 Then\n    Wscript.Echo &#8220;Restricted sites: Prompt&#8221;\nElseIf dwValue = 3 Then\n    Wscript.Echo &#8220;Restricted sites: Disabled&#8221;\nElseIf dwValue = 65536 Then\n    Wscript.Echo &#8220;Restricted sites: Administrator Approved&#8221;\nEnd If\n<\/PRE>\n<P>Run the script and you should get back output similar to this:<\/P><PRE class=\"codeSample\">Run ActiveX Controls and Plugins\nIntranet sites: Enabled\nTrusted sites: Enabled\nInternet sites: Enabled\nRestricted sites: Disabled\n<\/PRE>\n<P>Is there more we could do here? Maybe; after all, we can also configure this registry value. But that\u2019s a chore for another day.<\/P>\n<DIV><A href=\"http:\/\/null\/#top\"><IMG border=\"0\" alt=\"Top of page\" src=\"http:\/\/null\/technet\/mnplibrary\/templates\/MNP2.Common\/images\/arrow_px_up.gif\" width=\"7\" height=\"9\"><\/A><A class=\"topOfPage\" href=\"http:\/\/null\/#top\">Top of page<\/A><\/DIV><A name=\"EMBAC\"><\/A>\n<H2>Related Resources <\/H2>\n<TABLE border=\"0\" cellSpacing=\"0\" cellPadding=\"0\">\n<TBODY>\n<TR>\n<TD class=\"listBullet\" vAlign=\"top\">\u2022<\/TD>\n<TD class=\"listItem\">\n<P><A href=\"http:\/\/www.pcpitstop.com\/testax.asp\"><B>Test your ActiveX Installation<\/B><\/A><\/P><\/TD><\/TR>\n<TR>\n<TD class=\"listBullet\" vAlign=\"top\">\u2022<\/TD>\n<TD class=\"listItem\">\n<P><A href=\"http:\/\/askville.amazon.com\/Internet-Explorer-wont-install-ActiveX-controls\/AnswerViewer.do?requestId=1370176\"><B>More on Allowing Internet Explorer to enable ActiveX<\/B><\/A><\/P><\/TD><\/TR>\n<TR>\n<TD class=\"listBullet\" vAlign=\"top\">\u2022<\/TD>\n<TD class=\"listItem\">\n<P><A href=\"http:\/\/www.softpedia.com\/get\/Tweak\/Browser-Tweak\/ActiveX-Compatibility-Manager.shtml\"><B>Disable\/Enable ActiveX components on Internet Explorer<\/B><\/A><\/P><\/TD><\/TR>\n<TR>\n<TD class=\"listBullet\" vAlign=\"top\">\u2022<\/TD>\n<TD class=\"listItem\">\n<P><A href=\"http:\/\/blogs.msdn.com\/ie\/archive\/2008\/05\/07\/ie8-security-part-ii-activex-improvements.aspx\"><B>IE8 Security Part II: ActiveX Improvements<\/B><\/A><\/P><\/TD><\/TR>\n<TR>\n<TD class=\"listBullet\" vAlign=\"top\">\u2022<\/TD>\n<TD class=\"listItem\">\n<P><A href=\"http:\/\/www.articlesbase.com\/computers-articles\/active-x-controlsfix-yours-today-552845.html\"><B>Active X Controls-Fix Yours Today<\/B><\/A><\/P><\/TD><\/TR><\/TBODY><\/TABLE><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hey, Scripting Guy! How can I tell if ActiveX is enabled in Internet Explorer?&#8212; JV Hey, JV. You just had to ask this question, didn\u2019t you? Actually, this isn\u2019t a particularly hard question to answer, it\u2019s just a little complicated. But that has to do more with the way Internet Explorer is configured than it [&hellip;]<\/p>\n","protected":false},"author":595,"featured_media":87096,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[17,3,167,5],"class_list":["post-68533","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-internet-explorer","tag-scripting-guy","tag-using-the-internet","tag-vbscript"],"acf":[],"blog_post_summary":"<p>Hey, Scripting Guy! How can I tell if ActiveX is enabled in Internet Explorer?&#8212; JV Hey, JV. You just had to ask this question, didn\u2019t you? Actually, this isn\u2019t a particularly hard question to answer, it\u2019s just a little complicated. But that has to do more with the way Internet Explorer is configured than it [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/68533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/users\/595"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/comments?post=68533"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/68533\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media\/87096"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media?parent=68533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=68533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=68533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}