精华内容
下载资源
问答
  • 直接删除文件夹GroupPolicy、GroupPolicyUsers。

    直接删除文件夹GroupPolicy、GroupPolicyUsers。

    展开全文
  •  在C#程序中,其解决方案有多重,可以参照Charles Chen 的C#程序只允许运行一个实例的解决方案一文。  参照其文章,我决定使用调用Windows Api的方法,大致如下:  namespace BarCodeSystem { publi

      很多时候,我们开发的程序,需要单例运行的的功能,即整个应用程序只允许同时运行最多一个实例,重复运行的时候,激活当前实力,显示其界面。
      在C#程序中,其解决方案有多重,可以参照Charles ChenC#程序只允许运行一个实例的解决方案一文。
      参照其文章,我决定使用调用Windows Api的方法,大致如下:
      

    namespace BarCodeSystem
    {
        public static class Program
        {
            /// <summary>
            /// Application Entry Point.
            /// </summary>
            [System.STAThreadAttribute()]
            [System.Diagnostics.DebuggerNonUserCodeAttribute()]
            [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
            public static void Main()
            {
                Process instance = RunningInstance();
                if (instance == null)
                {
                    BarCodeSystem.App app = new BarCodeSystem.App();
                    app.InitializeComponent();
                    app.Run();
                }
                else
                {
                    HandleRunningInstance(instance);
                }
            }
    
            /// <summary>
            /// 获取进程
            /// </summary>
            /// <returns></returns>
            public static Process RunningInstance()
            {
                Process current = Process.GetCurrentProcess();
                Process[] processes = Process.GetProcessesByName(current.ProcessName);
    
                foreach (Process process in processes)
                {
                    if (process.Id != current.Id)
                    {
                        if (process.MainModule.FileName == current.MainModule.FileName)
                        {
                            return process;
                        }
                    }
                }
                return null;
            }
    
            /// <summary>
            /// 处理进程
            /// </summary>
            /// <param name="instance"></param>
            public static void HandleRunningInstance(Process instance)
            {
                MyProcess mp = new MyProcess();
                IntPtr x = mp.GetMainWindowHandle(instance.Id);
                Application.EnableVisualStyles();
    
                //确保窗体不是最大化或者最小化
                ShowWindowAsync(x, WS_SHOWNORMAL);
    
                //将实例放置到前台
                SetForegroundWindow(instance.MainWindowHandle);
            }
    
            ///<summary>
            /// 该函数设置由不同线程产生的窗口的显示状态
            /// </summary>
            /// <param name="hWnd">窗口句柄</param>
            /// <param name="cmdShow">指定窗口如何显示。查看允许值列表,请查阅ShowWlndow函数的说明部分</param>
            /// <returns>如果函数原来可见,返回值为非零;如果函数原来被隐藏,返回值为零</returns>
            [DllImport("User32.dll")]
            private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
    
            /// <summary>
            ///  该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。
            ///  系统给创建前台窗口的线程分配的权限稍高于其他线程。 
            /// </summary>
            /// <param name="hWnd">将被激活并被调入前台的窗口句柄</param>
            /// <returns>如果窗口设入了前台,返回值为非零;如果窗口未被设入前台,返回值为零</returns>
            [DllImport("User32.dll")]
            private static extern bool SetForegroundWindow(IntPtr hWnd);
        }
    }

      这里,我自定义了Main函数,当然,也可以在项目中本来的Main函数中添加代码,达到相同的效果。
      关于WPF项目如何自定义Main函数,可以参考这篇文章

    展开全文
  • windows下只允许一个程序运行

    千次阅读 2018-12-28 14:38:44
    HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全属性的指针 ...运行两次exe,第二次就会输出“程序已经在运行中了!”,可以直接退出,等其他处理操作。那就随你们啦。
    HANDLE CreateMutex(
    LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全属性的指针
    BOOL bInitialOwner, // 初始化互斥对象的所有者
    LPCTSTR lpName // 指向互斥对象名的指针
    );
    

    创建一个互斥体(MUTEX)

    返回值
    Long,如执行成功,就返回互斥体对象的句柄;零表示出错。会设置GetLastError。如果返回的是一个有效句柄,但指定的名字已经存在,GetLastError也会设为ERROR_ALREADY_EXISTS,bInitialOwner的值将会被忽略。如果调用者限制了权限,GetLastError将会返回ERROR_ACCESS_DENIED,这个时候应该使用OpenMutex函数。
    参数表
    参数 类型及说明
    lpMutexAttributes SECURITY_ATTRIBUTES,指定一个SECURITY_ATTRIBUTES结构,或传递零值(将参数声明为ByVal As Long,并传递零值),表示使用不允许继承的默认描述符
    bInitialOwner BOOL,如创建进程希望立即拥有互斥体,则设为TRUE。一个互斥体同时只能由一个线程拥有
    lpName String,指定互斥体对象的名字。用vbNullString创建一个未命名的互斥体对象。如已经存在拥有这个名字的一个事件,则打开现有的已命名互斥体。这个名字可能不与现有的事件、信号机、可等待计时器或文件映射相符

    int isRunning()
    {
    	HANDLE m_hMutex = CreateMutex(NULL,TRUE,"mutexName");
    	DWORD dwRet = GetLastError();
    	if (m_hMutex)
    	{
    		if (ERROR_ALREADY_EXISTS == dwRet)
    		{
    			printf("程序已经在运行中了!\n");
    			CloseHandle(m_hMutex);
    			return 1;
    		}
    	}
    	return 0;
    }
    int main(void)
     {
    	isRunning();
    	system("pause");
    	return 0;
    }
    

    运行两次exe,第二次就会输出“程序已经在运行中了!”,可以直接退出,等其他处理操作。那就随你们啦。

    展开全文
  • 通过定义互斥变量来判断是否已运行实例. 把program.cs文件里的Main()函数改为如下代码:using System; using System.Windows.Forms; using System.Runtime.InteropServices; namespace NetTools { static class ...

    方法一:

    使用线程互斥变量. 通过定义互斥变量来判断是否已运行实例. 把program.cs文件里的Main()函数改为如下代码:

    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    namespace NetTools
    {
        static class Program
        {
            [DllImport("user32.dll")]
            private static extern bool FlashWindow(IntPtr hWnd, bool bInvert);
            [DllImport("user32.dll")]
            private static extern bool FlashWindowEx(int pfwi);
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                bool runone;
                System.Threading.Mutex run = new System.Threading.Mutex(true, "single_test", out runone);
                if (runone)
                {
                    run.ReleaseMutex();
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    FrmRemote frm = new FrmRemote();
                    int hdc = frm.Handle.ToInt32(); // write to ...
                    Application.Run(frm);
                    IntPtr a = new IntPtr(hdc);
                }
                else
                {
                    MessageBox.Show("已经运行了一个实例了。");
                    //IntPtr hdc = new IntPtr(1312810); // read from...
                    //bool flash = FlashWindow(hdc, true);
                }
            }
        }
    }

    说明:程序中通过语句 System.Threading.Mutex run = new System.Threading.Mutex(true, "single_test", out runone);来创建一个互斥体变量run,其中”single_test”为互斥体名,在此方法返回时,如果创建了局部互斥体或指定的命名系统互斥体,则布尔值runone为true;如果指定的命名系统互斥体已存在,则为 false。已命名的互斥体是系统范围的。

    方法二:

    采用判断进程的方式,我们在运行程序前,查找进程中是否有同名的进程,同时运行位置也相同程,如是没有运行该程序,如果有就就不运行.在C#中应用System.Diagnostics名字空间中的Process类来实现,主要代码如下:

    ```
    public static System.Diagnostics.Process RunningInstance() 
    { 
        System.Diagnostics.Process current = System.Diagnostics.Process.GetCurrentProcess(); 
        System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcesses(); 
    foreach (System.Diagnostics.Process process in processes) //查找相同名称的进程 
    { 
        if (process.Id != current.Id) //忽略当前进程 
        { //确认相同进程的程序运行位置是否一样. 
            if (System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", @"/") == current.MainModule.FileName) 
      { //Return the other process instance. 
       return process; 
      } 
    } 
    } //No other instance was found, return null. 
    return null; 
    2,把Main ()函数改为如下代码:
    
    static void Main() 
    { 
        if(RunningInstance()==null) 
        { 
            Application.EnableVisualStyles(); 
            Application.SetCompatibleTextRenderingDef`这里写代码片`ault(false); 
            Application.Run(new Form1()); 
        } 
        else 
        { 
            MessageBox.Show("已经运行了一个实例了。"); 
        } 
    } 

    方法三:

    全局原子法,创建程序前,先检查全局原子表中看是否存在特定原子A(创建时添加的),存在时停止创建,说明该程序已运行了一个实例;不存在则运行程序并想全局原子表中添加特定原子A;退出程序时要记得释放特定的原子A哦,不然要到关机才会释放。

    1.申明WinAPI函数接口
    
    [System.Runtime.InteropServices.DllImport("kernel32.dll")] 
    public static extern UInt32 GlobalAddAtom(String lpString); //添加原子 
    [System.Runtime.InteropServices.DllImport("kernel32.dll")] 
    public static extern UInt32 GlobalFindAtom(String lpString); //查找原子 
    [System.Runtime.InteropServices.DllImport("kernel32.dll")] 
    public static extern UInt32 GlobalDeleteAtom(UInt32 nAtom); //删除原子
    
    2.修改Main()函数如下:
    static void Main() 
    { 
    if (GlobalFindAtom("jiaao_test") == 77856768) //没找到原子"jiaao_test" 
    { 
    GlobalAddAtom("jiaao_test"); //添加原子"jiaao_test" 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new Form1()); 
    } 
    else 
    { 
    MessageBox.Show("已经运行了一个实例了。"); 
    } 
    } 
    
    3.在FormClosed事件中添加如下代码: 
    GlobalDeleteAtom(GlobalFindAtom("jiaao_test"));//删除原子"jiaao_test" 
    展开全文
  • windows server 2008 R2 设置登录账户了,但是登录之后会显示远程桌面的系统桌面,怎么设置不运行系统的桌面直接出现指定程序  打个比方,就是A电脑远程桌面连接B电脑,但是我不想运行B电脑的桌面,只运行B电脑...
  • ssh只允许指定的用户登陆

    千次阅读 2014-01-28 22:04:39
    方法1:在/etc/pam.d/sshd文件第一行加入 auth required pam_listfile...然后在/etc下建立sshusers文件,编辑这个文件,加入你允许使用ssh服务的用户名,不用重新启动sshd服务。 方法2:pam规则也可以写成deny的 auth r
  • 原地址 http://blog.csdn.net/tsxw24/article/details/10220735 [plain] view plaincopy $ g++ -Wl,-rpath,/usr/local/lib/ -oevh libevent_http.cpp...-Wl,-rpath, 用于指定程序运行时查
  • 在测试域控,想限制部分软件的运行,组策略-用户配置-管理模板-系统-只运行许可的windows应用程序-已启用-添加。于是添加了一个 putty.exe 和 TM.exe 来测试。 结果就是除了 putty.exe 和 TM.exe ,其他任何...
  • 我打好的jar包,放在服务器上之后,在windows里面用xshell打开一个连接,然后运行java -jar 。。。。执行这个jar文件,当我关闭这个链接的时候为什么程序停止了呢? 打开XShell连接并运行 java -jar XX....
  • VC++实现程序只运行一个实例

    千次阅读 2012-10-18 23:09:40
    原文地址:...   ... 方法一: 有时候在开发应用程序时,希望控制程序运行唯一的实例。例如,最常用的mp3播放软件Winamp,由于它需要独占计算机中的音频设备,因此该程序只允许自身运行唯一的一个例程
  • 组策略7-限制所有软件使用-允许运行个别软件 如何让已经默认禁止所有软件运行的情况下使得我们指定的软件可以允许呢? 需要编辑上一篇《组策略7-限制所有软件使用1》中的“默认所有软件禁止”策略中放开指定的...
  • linux程序只运行一个实例

    千次阅读 2017-01-13 11:38:16
    若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。 int flock(int fd, int operation); ...
  • VC程序运行其他程序的三种方法

    千次阅读 2016-06-08 10:38:25
    有三个函数可以使用: WinExec, ShellExecute,CreateProcess 1.WinExec(String lpCmdLine,Long nCmdShow); 参数说明: 参数 类型及说明 lpCmdLine ...Long,为窗口指定可视性方面的一个命令。请用下述
  • Matlab 终止正在运行程序

    千次阅读 2021-01-27 10:29:01
    终止Matlab正在运行程序,一般有三种方法。 快捷键 关闭Matlab程序 在脚本中添加代码 1、快捷键 Ctrl+C Ctrl+break Ctrl+Alt+break 如果是在服务bai器上跑的代码的话,按完快捷键之后有时候需要等一小会,程序才会...
  • GDB调试正在运行程序

    千次阅读 2017-09-28 09:27:21
     有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形)。...GDB可以对正在执行的程序进行调度,它允许开发人员中断程序 并查看其状态,之后还能让这个程序正常地继续执行。
  • 使用命令行编译、运行Java程序

    万次阅读 多人点赞 2018-07-08 19:12:21
    在不借助IDE的情况下,如何编译、运行Java程序。 使用javac 命令,可以通过敲击javac 看到各种命令参数。 必学参数 -d -cp,这俩下面会讲到 如果javac命令不能用,看一下环境变量是否没配对。 我们从简单到...
  • 先来看一下编译运行c程序的基本命令。 虽然刚装好的系统中已经有GCC了,但是这个GCC什么文件都不能编译, 因为缺少一些必须的头文件,所以要安装build-essential这个软件包。 输入命令: sudo apt-get install...
  • 程序只运行一个实例的四种方法

    万次阅读 2008-12-25 13:16:00
    源代码下载:http://d.download.csdn.net/down/907655/magictong 综述:让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定...
  • GDB调试(正在运行程序

    千次阅读 2017-08-07 15:48:10
    有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试...GDB可以对正在执行的程序进行调度,它允许开发人员中断程序 并查看其状态,之后还能让这个程序正常地继续执行。 一、多线程调试 多线程调试可能
  • 组策略禁用指定程序

    千次阅读 2009-04-29 01:32:00
    组策略是系统管理员经常使用的工具之一如果普通用户掌握了其中的一招便可受益匪浅就如我们马上要讨论的话题:如何用组策略禁用指定程序? Win+R组合键打开运行对话框,输入gpedit.msc回车,打开组策略编辑器Win键...
  • 本文为了解决双击mpp文件提示“无法在此电脑上运行程序”的问题。 首先找到Microsoft Project 2010 安装位置,我的默认位置是“C:\Program Files (x86)\Microsoft Office\Office14\WINPROJ.EXE”。如图: 准备...
  • 针对特定win10用户登录解决只能访问指定程序和文件,从而保证个人隐私的解决方案。 一、新建本地用户账户 1、在Windows10系统右键点击左下角的“开始按钮”–》设置 --》账户 --》将其他人添加到这台电脑 2.在左侧...
  • .NET概念:.NET程序编译和运行

    千次阅读 多人点赞 2012-02-29 15:46:19
    程序的编译和运行,总得来说大体是:首先写好的程序是源代码,然后编译器编译为本地机器语言,最后在本地操作系统运行。 下图为传统代码编译运行过程: .NET的编译和运行过程与之类似,首先编写好的源代码,然后...
  • 通过在程序运行时,预先加载一个速率限制 socket 库 的方法,trickle 命令允许你改变任意一个特定程序的流量。 trickle 命令有一个很好的特性是它仅在用户空间中运行,这意味着,你不必需要 root
  • 【题目】linux screen 命令详解---让程序在后台运行 概述 本文转载自https://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html,主要讲述了linux中screen命令的使用,可以用这个命令来实现程序的后台运行...
  • 零基础入门微信小程序开发

    万次阅读 多人点赞 2018-07-03 02:45:07
    本课程是一个系列入门教程,目标是从 0 开始带领读者上手实战,课程以微信小程序的核心概念作为主线,介绍配置文件、页面样式文件、JavaScript 的基本知识并以指南针为例对基本知识进行扩展,另外加上开发工具的安装...
  • Android 程序随开机自动运行

    万次阅读 多人点赞 2018-09-29 16:04:51
    因为业务需要,项目中需要实现 APP 跟随系统开机后自动运行,环境是:minSdkVersion 17、targetSdkVersion 28、Android Studio 3.1.2,本人手机 系统为 Android 5.1.1。 网络上有太多的文章介绍 Android 应用如何...
  • 单片机程序运行在哪里

    千次阅读 2018-10-12 19:02:29
    我们程序运行其实是由多种方式的,不过一般常见的有两种。 运行在ROM里的和运行在RAM里的。 一般比较小的系统,也就是说,单片机本身内部就有FLASH的。这种FLASH不同于通用的FLASH,他是支持随机地址访问...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 784,448
精华内容 313,779
关键字:

如何取消只允许运行指定程序