C#中实现在32位、64位系统下自动切换不同的SQLite dll文件

 更新时间:2014年09月06日 08:49:33   投稿:junjie  
这篇文章主要介绍了C#中实现在32位、64位系统下自动切换不同的SQLite dll文件,本文使用C#代码实现DLL文件的切换,需要的朋友可以参考下

直接上代码:

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Management;
using System.IO;
namespace SqliteAuto
{
  static class Program
  {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main()
    {
  
  
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      string dll32 = System.Windows.Forms.Application.StartupPath + "\\lib\\SQLite32.DLL";
      string dll64 = System.Windows.Forms.Application.StartupPath + "\\lib\\SQLite64.DLL";
      string dllpath = System.Windows.Forms.Application.StartupPath + "\\System.Data.SQLite.dll";
      if (Detect32or64() == "32")
      {
        // do 32bit things.
        try
        {
          using (FileStream fs = File.Create(dllpath)) { }
          File.Copy(dll32, dllpath, true);
        }
  
        catch
        {
          Console.WriteLine("ERR");
        }
  
      }
      else if (Detect32or64() == "64")
      {
        //do 64bit things
        try
        {
          using (FileStream fs = File.Create(dllpath)) { }
          File.Copy(dll64, dllpath, true);
        }
  
        catch
        {
          Console.WriteLine("ERR");
        }
      }
      Application.Run(new Form1());
    }
  
    private static string Detect32or64()
    {
      try
      {
        string addressWidth = String.Empty;
        ConnectionOptions mConnOption = new ConnectionOptions();
        ManagementScope mMs = new ManagementScope("\\\\localhost", mConnOption);
        ObjectQuery mQuery = new ObjectQuery("select AddressWidth from Win32_Processor");
        ManagementObjectSearcher mSearcher = new ManagementObjectSearcher(mMs, mQuery);
        ManagementObjectCollection mObjectCollection = mSearcher.Get();
        foreach (ManagementObject mObject in mObjectCollection)
        {
          addressWidth = mObject["AddressWidth"].ToString();
        }
        return addressWidth;
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.ToString());
        return String.Empty;
      }
    }
  }
}

相关文章

  • C# 中的EventHandler实例详解

    C# 中的EventHandler实例详解

    本文通过案例实例介绍了c#中的eventhandler,需要的的朋友参考下吧
    2017-04-04
  • 一篇文章弄懂C#中的async和await

    一篇文章弄懂C#中的async和await

    这篇文章主要给大家介绍了如何通过一篇文章弄懂C#中async和await的相关资料,async和await相信大家应该不陌生,让异步处理变得更友好,本文通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-07-07
  • Unity 按钮事件封装操作(EventTriggerListener)

    Unity 按钮事件封装操作(EventTriggerListener)

    这篇文章主要介绍了Unity 按钮事件封装操作(EventTriggerListener),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • C#实现用于生成条形码的类

    C#实现用于生成条形码的类

    这篇文章主要介绍了C#实现用于生成条形码的类,涉及C#生成条形码的原理与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • C#使用CefSharp控件实现爬虫

    C#使用CefSharp控件实现爬虫

    这篇文章介绍了C#使用CefSharp控件实现爬虫的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Unity3D控件Easytouch控制主角移动

    Unity3D控件Easytouch控制主角移动

    这篇文章主要为大家详细介绍了Unity3D控件Easytouch控制主角移动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • C#实现一个Word保护性模板文件

    C#实现一个Word保护性模板文件

    这篇文章主要为大家详细介绍了C#如何实现一个Word保护性模板文件,文中的示例代码讲解详细,具有一定的借鉴价值,需要的小伙伴可以参考一下
    2024-01-01
  • C#实现QQ窗口抖动效果

    C#实现QQ窗口抖动效果

    这篇文章主要为大家详细介绍了C#实现QQ窗口抖动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • c# 抓取Web网页数据分析

    c# 抓取Web网页数据分析

    通过程序自动的读取其它网站网页显示的信息,类似于爬虫程序。比方说我们有一个系统,要提取BaiDu网站上歌曲搜索排名。分析系统在根据得到的数据进行数据分析。为业务提供参考数据。
    2008-11-11
  • 浅谈C#索引器

    浅谈C#索引器

    这篇文章主要简单介绍C#索引器,索引器使你可从语法上方便地创建类、结构或接口,以便客户端应用程序可以像访问数组一样访问它们。编译器将生成一个 Item 属性和适当的访问器方法,在主要目标是封装内部集合或数组的类型中,常常要实现索引器,下面我们一起来看看具体内容吧
    2021-11-11

最新评论