首页 > 编程语言 >C#判断操作系统位数 - 开源研究系列文章

C#判断操作系统位数 - 开源研究系列文章

时间:2024-03-18 19:56:46浏览次数:10  
标签:return 操作系统 C# 32 应用程序 开源 位数 using

       今天将开发的那个校时管理器应用程序复制到公司的电脑上进行使用,结果运行的时候报错了,想着应该是操作系统位数不支持导致的,于是写了此文进行判断。(对于有源码的读者请自己编译程序为32位的进行使用)

       该代码非常简单,就是判断一下句柄的位数:

  1、源码;

/***

    检测操作系统位数的操作类

    Austin Liu 刘恒辉
    Project Manager and Software Designer

    E-Mail: [email protected]
    Blog:   http://lzhdim.cnblogs.com
    Date:   2024-01-15 15:18:00

    使用方法:
        if (CheckSystemBitHelper.SystemBit() == 32)
        {
            MessageBox.Show("该应用不支持32位操作系统!", Application.ProductName + "-提示", MessageBoxButtons.OK);
            return;
        }

***/

namespace Lzhdim.Helper
{
    using System;

    /// <summary>
    /// 操作系统Bit位数获取操作类
    /// </summary>
    public static class CheckSystemBitHelper
    {
        /// <summary>
        /// 检查操作系统位数
        /// </summary>
        /// <returns>64 64位;32 32位;0 未知;</returns>
        public static int SystemBit()
        {
            //通过类型长度进行判断
            switch (IntPtr.Size)
            {
                case 8:
                    return 64;

                case 4:
                    return 32;

                default:
                    return 0;
            }
        }
    }
}

  2、使用:

/***

    应用程序入口类库

    Austin Liu 刘恒辉
    Project Manager and Software Designer

    E-Mail: [email protected]
    Blog:   http://lzhdim.cnblogs.com
    Date:   2024-01-15 15:18:00

    说明:
        1、做应用程序唯一运行判断;
        2、对应用程序的消息进行判断处理;
        3、启动应用程序操作;

***/

namespace Lzhdim.LzhdimSoft
{
    using System;
    using System.Windows.Forms;

    using Lzhdim.WindowMessage;
    using Lzhdim.Helper;

    using Lzhdim.LzhdimSoft.UI;

    /// <summary>
    /// 应用程序类
    /// </summary>
    internal static class Program
    {
        /// <summary>
        /// 应用程序的主入口点
        /// </summary>
        [STAThread]
        private static void Main(string[] args)
        {
            if (CheckSystemBitHelper.SystemBit() == 32)
            {
                MessageBox.Show("该应用不支持32位操作系统!", Application.ProductName + "-提示", MessageBoxButtons.OK);
                return;
            }

            if (AppInstance.IsUniqueRunning())
            {
                //如果应用程序已经启动,给其传应用消息进行处理
                WndMsgHelper.SendMessage2Thread(AppInstance.GetAppProcess().Threads[0].Id, (uint)WindowMessage.WM_ShowMainForm);
                return;
            }

            App.Start(args);
        }
    }
}

 

  上面介绍了检测操作系统位数的代码,不过现在Windows 11已经是完全64位的操作系统了,所以其它的应用直接编译为64位就行,至于32位的估计还是老电脑才存在这个问题了。

标签:return,操作系统,C#,32,应用程序,开源,位数,using
From: https://www.cnblogs.com/lzhdim/p/18081259

相关文章

  • promise与async/await连用全部请求结束时获取请求结果
    async/await获取请求结束时机,拿到结果(非promise类型的结果)constgetModalData=useCallback(async()=>{constresult=awaitsendRequest(currentCabinet)setData(result)},[currentCabinet])定义promise:因为此处的请求方法结果返回的时promise......
  • JavaScript学习笔记1: JS引入方法
    JavaScriptJS的引入方法内部脚本在script标签间插入js语句,可以在任意位置放置任意数量的script,为了改善显示速度,一般把js脚本放在body的底部<!--内部脚本--><script>//警告框alert('HelloJS');</script>外部脚本外部定义的js脚本,在js脚本中......
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的犬种识别系统(附完整代码资源+UI界面+PyTorch代码)
    摘要:本文介绍了一种基于深度学习的犬种识别系统系统的代码,采用最先进的YOLOv8算法并对比YOLOv7、YOLOv6、YOLOv5等算法的结果,能够准确识别图像、视频、实时视频流以及批量文件中的犬种。文章详细解释了YOLOv8算法的原理,并提供了相应的Python实现代码、训练数据集,以及基于PySide6的......
  • JavaScript学习笔记2: js书写语法及变量
    JS书写语法以及变量变量声明变量<style>vara=20;a="张三";//js是一门弱类型语言,变量可以存放不同类型的值</style>几种不同的变量声明方式varvar定义的是全局变量在代码块中声明的变量,在代码块外也可以访问可以重复定义<style>{v......
  • abc345e 做题小计
    F比E简单,套路题。考场不会E。自闭。Luogu链接题意已经讲得很清楚了。在题解中,认为\(m\)等价于原题的\(k\)。思考第一步看题应该会想到贪心。先去掉重复,然后会剩下一些相邻互不相同的,然后从小到大排序删除即可。没错,考场上就是这样想的,直接吃了依托大的罚时这样......
  • 华为OD机试真题-找数字-2024年OD统一考试(C卷)
    题目描述:小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数n(1<=n<=1e9),小扇需要找到一个比n大的数字m,使得m和n对应的二进制中1的个数要相同(如4对应二进制100,8对应二进制1000,1的个数都为1),现在求m的最小值。输入描述:输入:第一行输入一个正整数n(1<=n<=1e9)。输出......
  • CF1941 BCDEF 题解
    B如果要将\(a_1\)删成0,只能对\(a_2\)进行操作:\(a_1\gets0,a_2\getsa_1-2\timesa_1,a_3\getsa_3-a_1\)。\(a_1=0\)后,要将\(a_2\)删成0,只能对\(a_3\)进行相同的操作;要将\(a_3\)删成0,只能对\(a_4\)进行相同的操作……依此类推。可以看出,这是唯一可行的删除方法......
  • 用C语言实现二分查找
    //二分查找,前提必须是有序#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intmain(){ intarr[]={1,2,3,4,5,6,7,8,9,10}; intsz=sizeof(arr)/sizeof(arr[0]);//求数组长度 intk=7;//要查找的数 intleft=0; intright=sz-1; intmid=0; i......
  • 学习笔记——C语言基本概念&运算符——(2)
    目录一、运算符1.1赋值运算符1.2算数运算符 1.3关系运算符1.5位运算符1.6 自增自减运算符1.7  复合运算符1.8逗号运算符1.9 三目运算符1.10 sizeof运算符附录:运算符优先性表一、运算符1>.按照操作数目分类:单目运算符,双目运算符,三目运算符。2>......
  • C语言随记————简单算法
    1.问题:如何在C语言中实现一个简单的线性查找算法? 答案:线性查找算法可以通过遍历数组的每个元素,逐一比较来查找目标值。以下是一个简单的实现示例:intlinearSearch(intarr[],intn,intx){for(inti=0;i<n;i++){if(arr[i]==x)re......