我有一个批处理文件,使用这个习惯用法(很多次)将注册表值读入环境变量:
FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKLM\SOFTWARE\Path\To\Key" /v ValueName') DO SET MyVariable=%%B
Run Code Online (Sandbox Code Playgroud)
(后面有一个制表符delims=)
这在数千个客户的计算机上运行良好.但是在一个客户的计算机上(运行Windows Server 2003,启用了命令扩展),
它失败了,因为它'REG QUERY "HKLM\SOFTWARE\Path\To\Key" /v ValueName'未被识别为内部或外部命令,可操作程序或批处理文件.reg query单独运行" "命令工作正常.Reg.exe存在于C:\Windows\System32.
通过将代码更改为,我能够解决问题
REG QUERY "HKLM\SOFTWARE\Path\To\Key" /v ValueName > temp.txt
FOR /F "tokens=2* delims= " %%A IN (temp.txt) DO SET MyVariable=%%B
Run Code Online (Sandbox Code Playgroud)
这让客户启动并运行,但我想了解问题发生的原因,以便将来可以避免.
稍微偏离主要主题 - 将注册表值(字符串或DWORD)添加到环境变量中的更直接方法也很有用.
如果在Windows中启用"使用FIPS兼容算法进行加密,散列和签名"安全策略选项,则尝试在.NET Framework中使用许多加密类将导致InvalidOperationException.默认情况下,ASP.NET使用AES加密ViewState blob,因此失败.您可以通过向web.config添加这样的键来解决此问题:
<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>
Run Code Online (Sandbox Code Playgroud)
这涵盖了ASP.NET的基本用法.我的问题是:我有一个庞大,复杂的ASP.NET Web应用程序,它大量使用ScriptManagers(ASP.NET AJAX的基础),需要由必须启用此FIPS策略设置的政府客户部署.任何带有ScriptManager的ASP.NET页面都会抛出此异常:
[InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.]
System.Security.Cryptography.SHA1Managed..ctor() +3607454
System.Security.Policy.Hash.get_SHA1() +45
System.Web.Handlers.ScriptResourceHandler.GetAssemblyInfoInternal(Assembly assembly) +85
System.Web.Handlers.ScriptResourceHandler.GetAssemblyInfo(Assembly assembly) +99
System.Web.Handlers.RuntimeScriptResourceHandler.GetScriptResourceUrlImpl(List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +525
System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl(List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +910
System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl(Assembly assembly, String resourceName, CultureInfo culture, Boolean zip, Boolean notifyScriptLoaded) +193
System.Web.UI.ScriptReference.GetUrlFromName(ScriptManager scriptManager, IControl scriptManagerControl, Boolean zip) +306
System.Web.UI.ScriptManager.RegisterUniqueScripts(List`1 uniqueScripts) +169
System.Web.UI.ScriptManager.RegisterScripts() +407
System.Web.UI.ScriptManager.OnPagePreRenderComplete(Object sender, EventArgs e) +200
System.Web.UI.Page.OnPreRenderComplete(EventArgs e) +11041982 …Run Code Online (Sandbox Code Playgroud) 当我在Internet Explorer中查看XML文件时,它会进行语法突出显示并提供可单击的展开/折叠控件.但是对于我打开的每个文件,我都会得到一个黄色警告栏,需要三次点击才能解除.这些是本地文件,因此不需要安全警告.可以禁用吗?
IE黄色安全警告栏,用于查看本地xml文件http://carrieandtim.com/drop/iexmlwarning.png