如何让delphi任务管理器失效,让程序无法关闭??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让delphi任务管理器失效,让程序无法关闭??相关的知识,希望对你有一定的参考价值。

屏蔽任务管理器, 程序设置禁止alt+F4关闭,,在窗体的 CloseQuery事件写代码:CanClose:=False; 基本上 除了重启电脑 和使用三方可以结束进程的程序 都无法关闭了!

关于 delphi如何实现屏蔽任务管理器 和设置 禁止alt+F4关闭,网上有很多例子,这些也都很简单,相信你一看就会明白的!
参考技术A 无法关闭可以在主程序的OnCloseQuery里面设定

让管理器失效,最好的方法就是改注册表
麻烦点的就是写驱动拦截调用

如何让另一台电脑的任务管理器运行程序

【中文标题】如何让另一台电脑的任务管理器运行程序【英文标题】:How to get running programs of task manager of another computer 【发布时间】:2014-07-15 05:53:40 【问题描述】:

有没有办法从另一台计算机获取正在运行的任务管理器应用程序(而不是进程)?是否有机会使用其他电脑的 IP 地址或电脑名称?

这是我的代码,但它所做的只是显示我正在运行的应用程序并每秒更新一次以查看我是否打开或关闭了任何程序。

更新:我使用了模仿器,但我仍然收到相同的错误“无法连接到机器”。至于冒名顶替者,我刚刚下载了这个Impersonator

private void Form1_Load(object sender, EventArgs e)
    
        timer1.Enabled = true;
    

 private void running_process()
    
        DataTable dt = new DataTable();
        dt.Columns.Add("ProcessName");
        dt.Columns.Add("ProcessId");
        using (new Impersonator("adminuser", "", "adminpass"))
        
            Process[] processes = Process.GetProcessesByName(".", "PCNAME");
           //Process.GetProcesses("192.168.20.120")
            foreach (Process p in processes)
            
                try
                
                    if (p.MainWindowTitle.Length > 0)
                    
                        dt.Rows.Add();
                        dt.Rows[dt.Rows.Count - 1][0] = p.MainWindowTitle;
                        dt.Rows[dt.Rows.Count - 1][2] = p.Id.ToString();
                    
                
                catch  
            
        

        listBox1.DataSource = dt;
        listBox1.DisplayMember = "ProcessName";
        listBox1.ValueMember = "ProcessId";
    
    private void timer1_Tick(object sender, EventArgs e)
    
        running_process();
    

【问题讨论】:

【参考方案1】:

您可以使用Process.GetProcesses("remotecomputername")。或者……

您可以使用名为pslist 的工具列出远程计算机上运行的进程。本文介绍了如何:Determine processes running on a remote server with PsList。但为了做到这一点,您需要在远程服务器上拥有管理员级别的权限。 (我认为这不是问题。因为我看不出没有管理员权限你怎么能做到这一点)。

您不必在计算机中安装该工具。您可以从Sysinternals Live 运行它。

 \\live.sysinternals.com\tools\pslist \\remotecomputername

然后你必须Execute command line in C#, get STD OUT results。那么对输出进行标记并获取您需要的信息应该是一项微不足道的任务。

【讨论】:

我在我们的服务器上没有管理员帐户,如果我有的话,除了使用第三方程序之外还有其他方法吗? 我不知道如何使用 C# 代码来做到这一点。但是,尽管 pslist 是第 3 方程序,它的托管行为很像 Web 服务。因此,如果要求至关重要,我不介意使用它。 但是链接的图片显示了我需要的进程是正在运行的应用程序(任务管理器的应用程序选项卡)检查我的代码你会明白我的意思。【参考方案2】:

进程 [] ipByName = Process.GetProcessesByName("notepad", "169.0.0.0");

请参考链接http://msdn.microsoft.com/en-us/library/1f3ys1f9(v=vs.110).aspx

【讨论】:

以上是关于如何让delphi任务管理器失效,让程序无法关闭??的主要内容,如果未能解决你的问题,请参考以下文章

Delphi的几个难题?

如何让Delphi程序启动自动“以管理员身份运行

delphi2007如何让程序不在任务栏中隐藏和显示?

如何在winXP中的任务管理器中隐藏程序?

delphi程序关闭,进程依然存在

如何从 Windows 任务管理器(应用程序选项卡)获取应用程序 + 从 Delphi 获取它们在 HDD 上的位置