精华内容
下载资源
问答
  • Win7任务管理器找不到进程怎么办

    千次阅读 2019-05-19 09:17:19
    原文地址:... ➢ 任务管理器找不到进程 系统:win7 如图: ➢ 解决方法 点击/双击win7任务管理器边缘的白色区域(中间的框框以外的部分) 如图: ➢ 完整版效果 如图: Categories小技巧 ...

    原文地址: https://dsx2016.com/?p=481

    ➢ 任务管理器找不到进程

    系统: win7

    如图:

    ➢ 解决方法

    点击/双击win7任务管理器边缘的白色区域(中间的框框以外的部分)

    如图:

    ➢ 完整版效果

    如图:

    Categories小技巧

    展开全文
  • 任务管理器实际上是用了SysListView32控件,所以发点消息就可以解决(但是发点消息也没那么容易) ListView_GetItemText宏只是对当前进程有效,对远程进程是无效的,但是label之类的控件gettext对远程进程是有效的...

    网上的都不能用啊…全是未完成代码或者兼容性极差的代码。自己写呗。
    任务管理器实际上是用了SysListView32控件,所以发点消息就可以解决(但是发点消息也没那么容易)
    ListView_GetItemText宏只是对当前进程有效,对远程进程是无效的,但是label之类的控件gettext对远程进程是有效的,具体的可以看《Windows via C/C++》中文第5版第579面(只是记得有这个特性,但不记得书中多少面提到了。特地翻书找到了这一面,不容易)。

    成品:http://download.csdn.net/download/wwh1004/10244689

    比较关键的代码在下面

    /// <summary>
    /// 读取字符串,如果读取到非托管进程中,并且读取为LPSTR LPWSTTR BSTR等字符串类型,请自行转换为byte[]并使用<see cref="ReadBytes(uint, Pointer, byte[])"/><see cref="ReadBytes(uint, IntPtr, byte[])"/>
    /// </summary>
    /// <param name="processHandle">进程句柄</param>
    /// <param name="addr">地址</param>
    /// <param name="value"></param>
    /// <param name="bufferSize">缓存大小</param>
    /// <param name="doubleZero">是否以2个\0结尾(比如LPWSTR以2个字节\0结尾,而LPSTR以1个字节\0结尾)</param>
    /// <param name="encoding">编码</param>
    /// <returns></returns>
    internal static unsafe bool ReadStringInternal(IntPtr processHandle, IntPtr addr, out string value, int bufferSize, bool doubleZero, Encoding encoding)
    {
        if (encoding == null)
            throw new ArgumentNullException(nameof(encoding) + "不能为null");
        if (bufferSize <= 0)
            throw new ArgumentOutOfRangeException(nameof(bufferSize) + "小于等于0");
    
        byte[] buffer;
        uint numberOfBytesRead;
        List<byte> bufferList;
        bool lastByteIsZero;
    
        buffer = null;
        numberOfBytesRead = 0;
        bufferList = new List<byte>(bufferSize);
        lastByteIsZero = false;
        for (int i = 0; i < int.MaxValue; i++)
        {
            buffer = new byte[bufferSize];
            ReadProcessMemory(processHandle, addr + bufferSize * i, buffer, (uint)bufferSize, &numberOfBytesRead);
            //读取到缓存
            if ((int)numberOfBytesRead == bufferSize)
            {
                //读取完整
                for (int j = 0; j < bufferSize; j++)
                {
                    if (buffer[j] == 0)
                    {
                        //出现\0
                        if (doubleZero)
                        {
                            //如果双\0结尾
                            if (lastByteIsZero)
                                //上一个字节为\0
                                goto addLastRange;
                            if (j + 1 != bufferSize)
                            {
                                //不是缓存区最后一个字节
                                if (buffer[j + 1] == 0)
                                    //下一个字节也为\0
                                    goto addLastRange;
                            }
                            else
                                //缓存读完,标记上一个字节为\0
                                lastByteIsZero = true;
                        }
                        else
                            //不是2个\0结尾,直接跳出
                            goto addLastRange;
                    }
                    else
                    {
                        if (lastByteIsZero)
                            //上一个字节为\0,但当前字节不是
                            lastByteIsZero = false;
                    }
                }
            }
            else if (numberOfBytesRead == 0)
            {
                //读取失败
                value = null;
                return false;
            }
            else
            {
                //读取不完整
                for (int j = 0; j < (int)numberOfBytesRead; j++)
                {
                    if (buffer[j] == 0)
                    {
                        //出现\0
                        if (doubleZero)
                        {
                            //如果双\0结尾
                            if (lastByteIsZero)
                                //上一个字节为\0
                                goto addLastRange;
                            if (j + 1 != (int)numberOfBytesRead && buffer[j + 1] == 0)
                                //不是缓存区最后一个字节且下一个字节也为\0
                                goto addLastRange;
                        }
                        else
                            //不是2个\0结尾,直接跳出
                            goto addLastRange;
                    }
                    else
                    {
                        if (lastByteIsZero)
                            //上一个字节为\0,但当前字节不是
                            lastByteIsZero = false;
                    }
                }
            }
            bufferList.AddRange(buffer);
        };
        addLastRange:
        numberOfBytesRead -= doubleZero ? 2u : 1u;
        for (int i = 0; i < (int)numberOfBytesRead; i++)
            bufferList.Add(buffer[i]);
        if (encoding.CodePage == Encoding.Unicode.CodePage)
            buffer = bufferList.ToArray();
        else
            buffer = Encoding.Convert(encoding, Encoding.Unicode, bufferList.ToArray());
        fixed (void* p = &buffer[0])
            value = new string((char*)p);
        return true;
    }
    
    /// <summary>
    /// 在远程进程中读取结构
    /// </summary>
    /// <typeparam name="TStruct"></typeparam>
    /// <param name="hWnd">控件句柄</param>
    /// <param name="structure">读取出的结构体</param>
    /// <param name="callbackBeforeRead">读取前回调方法</param>
    /// <param name="callbackAfterRead">读取后回调方法</param>
    /// <returns></returns>
    public static unsafe bool ReadStructRemote<TStruct>(IntPtr hWnd, out TStruct structure, Func<IntPtr, IntPtr, bool> callbackBeforeRead, Func<IntPtr, IntPtr, bool> callbackAfterRead) where TStruct : IWin32ControlStruct
    {
        uint processId;
        IntPtr hProcess;
        bool is64;
        IntPtr remoteAddr;
    
        structure = default(TStruct);
        processId = Process.GetProcessIdByHWnd(hWnd);
        //获取控件所在进程ID
        hProcess = OpenProcessRWQuery(processId);
        //打开进程
        if (hProcess == IntPtr.Zero)
            return false;
        if (!Process.Is64ProcessInternal(hProcess, out is64))
            return false;
        if (is64 && !Environment.Is64BitProcess)
            throw new NotSupportedException("目标进程为64位但当前进程为32位");
        try
        {
            remoteAddr = VirtualAllocEx(hProcess, IntPtr.Zero, structure.Size, MEM_COMMIT, PAGE_READWRITE);
            //在控件所在进程分配内存,用于储存structure
            try
            {
                if (callbackBeforeRead != null)
                    if (!callbackBeforeRead(hProcess, remoteAddr))
                        return false;
                if (!ReadProcessMemory(hProcess, remoteAddr, structure.ToPointer(), structure.Size, null))
                    //从远程进程取回到当前进程失败
                    return false;
                if (callbackAfterRead != null)
                    if (!callbackAfterRead(hProcess, remoteAddr))
                        return false;
                return true;
            }
            finally
            {
                VirtualFreeEx(hProcess, remoteAddr, 0, MEM_RELEASE);
                //释放之前分配的内存
            }
        }
        finally
        {
            CloseHandle(hProcess);
            //关闭句柄
        }
    }
    
    /// <summary>
    /// 获取列表视图控件中Item的文本
    /// </summary>
    /// <param name="i">The index of the list-view item.</param>
    /// <param name="iSubItem">The index of the subitem. To retrieve the item text, set iSubItem to zero.</param>
    /// <returns></returns>
    public unsafe string GetItemText(int i, int iSubItem)
    {
        LVITEM item;
        IntPtr pStr;
        string text;
    
        text = null;
        pStr = IntPtr.Zero;
        item = new LVITEM
        {
            iSubItem = iSubItem,
            cchTextMax = 0x1000
        };
        Util.WriteStructRemote(Handle, ref item, (IntPtr hProcess, IntPtr addr) =>
        {
            pStr = VirtualAllocEx(hProcess, IntPtr.Zero, 0x1000, MEM_COMMIT, PAGE_READWRITE);
            //分配内存用于写入字符串
            if (pStr == IntPtr.Zero)
                return false;
            item.pszText = (char*)pStr;
            //设置缓存区地址
            return true;
        }, (IntPtr hProcess, IntPtr addr) =>
        {
            try
            {
                if (ListView_GetItemText(Handle, i, addr, 0x1000) == 0)
                    return false;
                return MemoryIO.ReadStringInternal(hProcess, (IntPtr)item.pszText, out text, 0x1000, true);
            }
            finally
            {
                VirtualFreeEx(hProcess, pStr, 0, MEM_RELEASE);
            }
        });
        return text;
    }

    别的实现起来就挺简单了

    using System;
    using System.Threading;
    using FastWin32.Control;
    using FastWin32.Diagnostics;
    
    namespace 隐藏进程Demo
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                RemoveItemLoop("chrome.exe", "conhost.exe", "RuntimeBroker.exe", "svchost.exe", "隐藏进程Demo.exe");
            }
    
            /// <summary>
            /// 移除循环
            /// </summary>
            /// <param name="name">进程名</param>
            private static void RemoveItemLoop(params string[] names)
            {
                if (names == null || names.Length == 0)
                    throw new ArgumentNullException();
    
                while (true)
                {
                    foreach (string name in names)
                        RemoveItem(name);
                    Thread.Sleep(100);
                }
            }
    
            /// <summary>
            /// 从任务管理器中移除进程
            /// </summary>
            /// <param name="name">进程名</param>
            /// <returns></returns>
            private static bool RemoveItem(string name)
            {
                IntPtr hWnd;
                SysListView32 listView;
                int count;
                string text;
    
                hWnd = GetListViewHandle();
                if (hWnd == IntPtr.Zero)
                    return false;
                listView = new SysListView32(hWnd);
                count = listView.GetItemCount();
                if (count == 0)
                    return false;
                name = name.ToUpperInvariant();
                for (int i = count - 1; i >= 0; i--)
                {
                    text = listView.GetItemText(i, 0);
                    if (text == null)
                        continue;
                    if (text.ToUpperInvariant() == name)
                        listView.DeleteItem(i);
                }
                return true;
            }
    
            /// <summary>
            /// 获取任务管理器列表控件句柄
            /// </summary>
            /// <returns></returns>
            private static IntPtr GetListViewHandle()
            {
                IntPtr hWnd;
    
                if (Environment.OSVersion.Version.Major == 6 && Environment.OSVersion.Version.Minor == 1)
                {
                    //Win7
                    hWnd = Window.FindWindow(null, "Windows 任务管理器");
                    if (hWnd == IntPtr.Zero)
                        return IntPtr.Zero;
                    hWnd = Window.FindWindow(hWnd, IntPtr.Zero, null, "Processes");
                    if (hWnd == IntPtr.Zero)
                        return IntPtr.Zero;
                    return Window.FindWindow(hWnd, IntPtr.Zero, "SysListView32", "进程");
                }
                else
                {
                    //Win8.1 Win10 别的系统未适配
                    hWnd = Window.FindWindow(null, "任务管理器");
                    if (hWnd == IntPtr.Zero)
                        return IntPtr.Zero;
                    hWnd = Window.FindWindow(hWnd, IntPtr.Zero, null, "TaskManagerMain");
                    if (hWnd == IntPtr.Zero)
                        return IntPtr.Zero;
                    hWnd = Window.FindWindow(hWnd, IntPtr.Zero, "DirectUIHWND", null);
                    if (hWnd == IntPtr.Zero)
                        return IntPtr.Zero;
                    Window.EnumChildWindows(hWnd, (IntPtr hChildWnd) =>
                    {
                        hWnd = Window.FindWindow(hChildWnd, IntPtr.Zero, "SysListView32", null);
                        if (hWnd == IntPtr.Zero)
                            return true;
                        else
                            return false;
                    });
                    return hWnd;
                }
            }
        }
    }
    

    去年写的放寒假才发出来,原因是作业太多,学习好累啊…

    展开全文
  • win10任务管理器中查看进程句柄

    千次阅读 2020-01-01 13:45:29
    与之前的在菜单栏-查看里面设置 选择列 不同,win10的“选择列”要在 “详细信息”这里,在列表头 那里 右键弹出菜单栏,里面有“选择列”,然后单击“选择列”,就可以在弹出的对话框中选中 “句柄” ,然后“详细...

    与之前的在菜单栏-查看里面设置 选择列 不同,win10的“选择列”要在 “详细信息”这里,在列表头 那里 右键弹出菜单栏,里面有“选择列”,然后单击“选择列”,就可以在弹出的对话框中选中 “句柄” ,然后“详细信息”中就有显示句柄了:

    展开全文
  •        OS : Windows 10 Version 1909      ...任务管理器 - 详细信息   选中进程,右键 - 创建转储文件   成功   手动输入路径,进入文件夹 C:\Users\Student\Ap...
    •        OS : Windows 10 Version 1909
    •        blog : blog.csdn.net/shiwanwu
    •  typesetting : Markdown

    任务管理器 - 详细信息

    在这里插入图片描述

    选中进程,右键 - 创建转储文件

    在这里插入图片描述

    成功

    在这里插入图片描述

    手动输入路径,进入文件夹

    C:\Users\Student\AppData\Local\Temp

    在这里插入图片描述

    more knowledge

    • 有的进程在创建转储文件时,提示拒绝访问。有待学习。

    在这里插入图片描述

    在这里插入图片描述

    resource

    • [ doc ] docs.microsoft.com/zh-cn/windows
    • [ msdn ] msdn.microsoft.com/zh-cn
    • [ 平台 ] www.csdn.net


    感恩曾经帮助过 师万物 的人。
    在日常生活中会用到Windows系统,建议学习简单的使用与配置。
    学有余力的话,可以了解Windows、Mac OS和基于Linux的各个发行版本的优劣势,找到适合自身发展的桌面操作系统。
    欢迎关注微信公众号:悟为生心

    在这里插入图片描述

    展开全文
  • Win7系统中,我们一般通过任务管理器来查看和结束进程,但最近有用户反映在打开任务管理器想要结束某个进程时发现列表中的进程信息在不断跳动变化,导致无法选中进程。这是怎么回事呢?其实是因为系统中的进程内存...
  • perl Win32::Process 进程管理

    千次阅读 2015-02-10 14:29:52
    Win32::Process - Create and manipulate processes. SYNOPSIS use Win32::Process;use Win32; sub ErrorReport{ print Win32::FormatMessage( Win32::GetLastError() );} Win32::Process::Create
  • win7进程权限管理

    千次阅读 2011-05-09 15:46:00
    但是很多情况下,是不需要这个权限的, win7又是每次必问的,所以这样会相当的烦啊,下面是摘抄手动提权的文章,摘自windows核心编程,可以在需要的时候创建出管理员权限的进程去做某些事情. 手动提升进程...
  •        OS : Windows 10 Version 1909      ...任务管理器 - 详细信息   在列名栏处,右键 - 选择列   可查看的列   more knowledge 想学习操作系统的话,需...
  • 当手误不小心把任务管理器中的Windows资源管理器进程结束任务后,电脑出现黑屏时,想要重新恢复,该怎么做? 步骤一: 按Ctrl+Shift+Esc来启动任务管理器; 步骤二: 点击任务管理器界面中的“文件”,点击“运行新...
  • 更新win10以后,用着很爽,但用久之后有时开机内存能占用70%以上,作为资深程序员,开启多个软件后就飙到百分之八九十,当然不能容忍,在网上找的解决方案有:结束任务、关服务、重置系统,开虚拟内存等,但都未能...
  • 我装Win8后,就在那个任务管理器发现一个奇怪的东西“操作系统上下文”,实话不懂这个啥意思,不过貌似挺有趣的,就逆了一下,发现是NtQueryInformationProcess然后从PEB里面拿的,于是又Google了一下,发现国外已经...
  • 原创 一个简单的windows HOOK - 隐藏进程管理器中特定的进程
  • windows 任务管理器,查看进程id,进程标识符pid。 任务管理器默认只显示了几列常用的属性,如果要看进程id等属性,需要我们设置让它显示出来。 操作方法如下: 进入任务管理器后,点击查看,再点击选择列。 勾选 ...
  • 这个问题遇到过很多次了 解决方案各有不同 印象中一次是修改网卡配置里的各种减负选项就好了 还有一次是把连接属性里的virtualbox安装的那个驱动取消就可以了
  • 新买的笔记本:联想...查找:后来开着任务管理器,放着看到底什么原因造成的,发现【服务主机:DCOM服务器进程启动器】总是在领跑CPU占用率,最终导致系统卡死!(还带着Task Scheduler进程也占比较高) 解决:直...
  • 一个简单的windows HOOK - 隐藏进程管理器中特定的进程 (适用平台:windows 2000 sp4,windows XP sp2) 屏蔽任务管理器中的进程名称有很多种方法,可以在ring0级做文章:修改内核进程链表,拦截内核API等。...
  • Windows进程管理

    千次阅读 2018-05-30 22:59:16
    (1)学会使用 VC 编写基本的 Win32 Consol Application(控制台应用程序)。 (2)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解 Windows 进程的“一生”...
  • 下面是我翻墙得到的结果 I had this issue in windows 10 and fixed it just a few hours ago. Here is what I did. Hope it helps. Run cmd as an admin and enter the following commands. ...ne
  • Procexp.exe —— 强大的进程管理器

    万次阅读 2016-07-13 01:40:19
    Process Explorer 是一款增强型的任务管理器,你可以使用它方便地管理你的程序进程,能强行关闭任何程序。 除此之外,它还详尽地显示计算机信息:CPU、内存使用情况,DLL、句柄信息,很酷的曲线图...  2,下载地址...
  • 我需要在win7 64位系统下将一个64位的dll注入到任务管理器,我安装了一个CBT钩子, 我打开任务管理器发现注入是没有问题的。但是当我点击任务管理器的<显示所有用户进程>的按钮后,发现任务管理器重新启动了,启动后...
  • win10打开任务管理器的快捷键

    千次阅读 2019-06-20 22:22:35
    方法一:Ctrl+Shift+Esc 这种方法十分简便,直接就可以调出来任务管理器。 方法二:Ctrl+Alt+Del 这个方法首先会出现如下界面,点击里面的任务管理器就可以了。 ...
  • win10下驱动进程保护

    千次阅读 热门讨论 2020-01-31 00:48:52
    网上可以查到很多WIN7下的驱动后台进程保护代码,而那些代码在WIN10下并不适用,故写此篇来文章来总结...1.利用进程管理器关闭 2.打开CMD,调用taskkill指令关闭 3.调用taskkill加上-t参数,进行强行进程关闭 ...
  • 问题描述: 这几天电脑运行大内存的应用,会...首先想到的是查看任务管理器里的进程,结果并没有内存占用很大的进程...除了自己运行的idea,排在第二的内存占用进程是 服务主机 super fetch 问题解决: 方法一...
  • Windows 系统上的任务管理器进化到 Windows 10 的 1809 版本后,又新增了几项可以查看的进程属性。 本文介绍可以使用任务管理器查看的各种进程属性。 本文内容如何查看进程的各种属性名称、PID、状态路径名称、...
  • Linux 进程管理

    千次阅读 2018-09-06 22:08:06
    介绍一些 Linux 所提供的工具来进行进程的查看与控制,掌握这些工具让我们能在某些进程出现异常的时候及时查看相关的指标,从而解决问题。 一、进程查看 top:实时的查看进程的状态 ps:静态查看当前的进程信息 ...
  • Window进程管理

    千次阅读 2013-10-22 16:07:32
    可能大家对任务管理器里最熟悉的功能要数进程管理了,常常我们在怀疑中了病毒/木马的时候都会看看任务管理器里有没有什么特别的进程在运行,所以进程查看器应该是一个非常重要的功能。我们除了需要获得进程的名称外...
  • 1.同时按住键盘上Ctrl+Alt+Del三个键,选择任务管理器。 2.点击左上角“文件”,点击“运行新任务”,在对话框中输入explorer,选择确定后即可解决问题。 3.如果解决黑屏问题后遇到电脑卡死状态,再次同时按住键盘上...
  • win10关闭AppXSvc进程

    2020-12-28 17:26:37
    win10系统更新后,有时会莫名其妙自动启动AppXSvc进程,占用50%以上的cpu和内存,导致系统卡顿,无法打开资源管理器,甚至卡死。 原因:   win10应用商店自动启动了AppXSvc进程,会不停检查更新,占用大量...
  • 右键单击左下角开始菜单,选择命令提示符(管理员) 运行以下代码: reg delete hkcu\Software\Microsoft\Windows\Current...这个是解除任务管理器禁用 reg delete hkcu\Software\Microsoft\Windows\CurrentVersio...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 100,268
精华内容 40,107
关键字:

win进程管理器