zoukankan      html  css  js  c++  java
  • Eziriz.Net.Reactor使用注意事项

    1) 保护参数配置

    image

    2) 注册表访问

    using System.Security.Permissions;
    
    [RegistryPermissionAttribute(SecurityAction.PermitOnly, All = @"HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet4.0EnginesJet 4.0")]
    private static void UpdateOS32RegisterItem()
    {
     	using (RegistryKey currentKey = Registry.LocalMachine.OpenSubKey(@"SOFTWAREMicrosoftJet4.0EnginesJet 4.0", true))
    	{
    		currentKey.SetValue("MaxLocksPerFile", 0xF4240, RegistryValueKind.DWord);
    		currentKey.Close();
    	}
    }
    

    该种写法混淆后会出现如下的错误:

    image

    解决方法:

    添加 应用程序清单文件,在其中加入

    <?xml version="1.0" encoding="utf-8"?>
    <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <!-- UAC 清单选项
                如果希望更改 Windows 用户帐户控制级别,请用以下节点之一替换 
                requestedExecutionLevel 节点。
    
            <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
            <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
            <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
    
                如果您希望利用文件和注册表虚拟化提供
                向后兼容性,请删除 requestedExecutionLevel 节点。
            -->
            <requestedExecutionLevel level="asInvoker" uiAccess="false" />
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
          </requestedPrivileges>
        </security>
      </trustInfo>
    </asmv1:assembly>
    

    修改代码,如下:

    private static void UpdateOS32RegisterItem()
     {
    	System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
    	System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal( identity );
    	if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
    	{
    		using (RegistryKey currentKey = Registry.LocalMachine.OpenSubKey(@"SOFTWAREMicrosoftJet4.0EnginesJet 4.0", true))
    		{
    			currentKey.SetValue("MaxLocksPerFile", 0xF4240, RegistryValueKind.DWord);
    			currentKey.Close();
    		}
    	}
     }
    
  • 相关阅读:
    【Oracle】安装
    【Java】String,StringBuffer与StringBuilder的区别??
    【Java】基本数据类型长度
    静态构造函数
    【算法】递归算法
    【JavaScript】JavaScript教程之------------------JavaScript实现
    【Android】listview优化
    【JAVA EE企业级开发四步走完全攻略】
    Eclipse下Tomcat插件的安装
    Android工具
  • 原文地址:https://www.cnblogs.com/janehlp/p/5379203.html
Copyright © 2011-2022 走看看