当前位置: 首页 > 编程语言 > C#

如何阻止应用程序打开Share

时间:2023-04-10 23:41:12 C#

如何阻止应用程序打开使用WinForms可以轻松完成应用程序的UI。我想知道的是如何检测某个exe是否已经被激活,然后阻止它运行。我很确定我将不得不深入研究一些Win32的东西,但我没有这方面的经验,因此写这篇文章。有一个与此类似的现有应用程序,但我无法记住它的名字。它是用VB6编写的,也是开源的。任何帮助是极大的赞赏。谢谢。而不是试图在进程运行时终止进程,我如何首先阻止它运行?更改shell尝试启动应用程序时发生的情况很简单-添加一个新的注册表项到HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionImageFileExecutionOptions为了测试这个,我添加了一个名为notepad.exe的注册表项,其值是字符串值calc.exe的调试器。现在,每当我尝试运行记事本时,calc都会打开。以下是导出的注册表项。REGEDIT4[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionImageFileExecutionOptionsnotepad.exe]"Debugger"="calc.exe"进行此更改后我无法打开记事本,对于无代码解决方案来说还不错。如果您需要100%确定应用程序永远不会运行,您可以随时添加“终止”解决方案,正如其他人所详述的那样。只是StephenNat的另一个很好的答案的一小部分:如果你想让一个程序永远消失,不要只是弹出其他东西(Stephen的例子中的calc.exe)。指定键值:"Debugger"="ntsd-cq"这将调用"Executethenextspecifieddebuggercommand"命令行参数-c为程序调用NT的NT命令行调试器ntsd;调试器命令是q(意思是退出)。这将停止调试器,作为副作用,也会终止被调试程序——您要阻止运行的程序。干净、漂亮、简单。我观察到的唯一副作用是有时瞬态命令窗口会弹出调试器提示,只是暂时消失。Windows挂钩应该可以解决您的问题。我从来没有尝试过这个……但是你必须对Win32API做一些pinvokes才能使它工作。GoogleWin32hooks看看。好的,我刚刚找到了我要找的应用程序。它称为TemptationBlocker,可在此处找到。它会查找所有可执行文件,并允许您选择要阻止多少小时的内容。它并不完美,我希望它能自动启动,这样我就不必手动启动它,但除此之外它还不错,我记得一些Win32功能可以帮助解决这些问题。如果您使用的是.Net,那可能很难实现。我会使用一些跨进程同步对象(不知道哪些是跨进程的)并设置一些信号。在启动时,让您的应用程序检查信号是否已设置。如果是,请再次关闭应用程序。其中一个想法(但不是最好的)是监视正在运行的进程并在找到所需的正在运行的进程时终止,这可以使用普通托管C#代码来完成。无需等待可执行文件打开,以便再次关闭它,您还可以削弱可执行文件。只需更改exe标头中的一些字节并防止它从那里开始。只需以效果可逆的方式进行即可。privateboolKillProcess(stringname){foreach(ProcessclsProcessinProcess.GetProcesses()){if(clsProcess.ProcessName.ToLower().StartsWith(name.ToLower())){clsProcess.Kill();返回真;}}返回假;}是的,这是我到目前为止使用的方法。这会在应用程序打开后将其关闭,因此我可以使应用程序正常运行90%。我使用每10秒检查一次的计时器。我只是想知道是否值得花时间研究Windows挂钩(我对此一无所知)以促进即时应用程序阻止。那些知道Win32api的人,值得努力吗?内部静态类程序{privatestaticMutexm;[STAThread]privatestaticvoidMain(){布尔标志;m=newMutex(true,"ProgramName",输出标志);如果(!标志){MessageBox。Show("另一个实例已经在运行。");}else{//startprogram}}}我在一个程序中使用这个并且它工作正常,它应该能够被改变以满足你的需要。你可以写一个全局钩子。挂钩的内容并不重要,因为它是全局的,因此在单独的DLL中实现。在该库中,您可以正确处理附加到新模块的操作。如果您检测到重复进程-删除它们。以上就是C#学习教程:如何停止打开应用的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: