精华内容
下载资源
问答
  • c# 隐藏进程代码,win10 win7 任务管理器隐藏进程,
  • 在win7下,通过hook advapi.dll的EnumServicesStatusEx API,在返回链表中,将指定服务脱链。...各位大佬,有研究过win10隐藏服务的不? 给点建设性的意见。(API Monitor分析了一周,实在无头绪)
  • 任务管理器实际上是用了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;
                }
            }
        }
    }
    

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

    展开全文
  • 网上的c#远程进程代码都不能用,c++的也基本上没用。有啥问题还是自己解决好,所以自己写了一份代码。其中用了自己写的FastWin32(用的老版的,新版的移除了Win32控件操作)
  • Win10任务管理器功能很多,查看系统状态、管理启动项、监测 GPU 行为……,几乎日常工作中所需的所有功能都能用它一站搞定。其实除了这些功能以外,任务管理器还有一些特殊小技巧,接下来就让我们一起来看一看吧...

    Win10 的任务管理器功能很多,查看系统状态、管理启动项、监测 GPU 行为……,几乎日常工作中所需的所有功能都能用它一站搞定。其实除了这些功能以外,任务管理器还有一些特殊小技巧,接下来就让我们一起来看一看吧。

    1. 迷你监测面板

    &quot; 性能 &quot; 标签左侧右击然后选择 &quot; 隐藏图形 &quot;,接下来双击左侧栏,就能够将任务管理器缩小为一个面板,这时面板中只会显示 &quot;CPU 占用 &quot;、&quot; 内存占用 &quot;、&quot; 磁盘占用 &quot;、&quot; 网络占用 &quot;、&quot;GPU 占用 &quot; 五大版块,配合置顶功能,瞬间就能生成一个迷你的系统监视器了。

    右击选择 &quot; 隐藏图形 &quot;

    监测小面板

    2. 曲线监测图

    除了左侧监控栏外,右侧的性能标签也是可以双击的。双击之后,任务管理器同样会显示出该项目的曲线图。而且在这个视图下右键菜单依旧有效,如果需要你也可以通过右键,快速切换 CPU、内存、磁盘、网络、GPU 等。

    曲线监测图

    3. 参数快速复制

    很多小伙伴并不知道,任务管理器里的数值其实是可以复制的。在 &quot; 性能 &quot; 标签下,将鼠标悬停于某个参数之上,右键选择 &quot; 复制 &quot;,这时系统就会将当前指标的参数值自动复制到剪贴板,接下来通过 Ctrl+V 粘贴到所需的区域,就能快速得到当前的系统参数了。

    快速复制参数

    Ctrl+V 随时就能将复制下来的参数保存下来

    4. 禁止高耗时模块开机

    &quot; 启动 &quot; 是 Win10 任务管理器新增加的版块,但它的作用可不仅仅是告诉你开机都启动了哪些程序。这里一个重要指标是后面的 &quot; 启动影响 &quot;,如果某个模块开机时间较长,就会被自动标记为 &quot; 高 &quot;。有了这个参考,我们就能快速找到那些拖累电脑开机速度的模块,一键禁止它!

    禁止高耗时模块开机

    5. 分组显示进程

    &quot; 进程 &quot; 标签很多人都用过,但这里其实是有个小玄机的。正常情况下我们都是按照 CPU 占用率、内存占用率对进程排序,此时呈现在眼前的是一个大列表。但其实你也可以点击最左侧的 &quot; 名称 &quot; 标签,这时系统就会按照 &quot; 应用 &quot; 与 &quot; 后台进程 &quot; 将进程分开显示。

    点击 &quot; 名称 &quot; 可将进程分组显示

    6. 可疑进程在线搜索

    以往在系统中发现一个可疑进程,通常是在搜索引擎输入进程的名称以搜索,其实 Win10 任务管理器也有一个人性化的改进,即直接通过进程列表右击选择 &quot; 在线搜索 &quot;,直接借助网络迅速判断进程是否有问题。

    直接搜索可疑进程

    7. 百分比 / 资源值切换

    通常我们见到的进程标签,都是按照项目展示,比如 CPU 默认会显示百分数、内存默认会显示资源值、磁盘占用默认会显示速率等等。但其实如果你将鼠标放置在上面点击右键,就能随意控制每个模块的显示方式,比如百分比还是数值。

    随意控制百分比 / 资源值

    展开全文
  • DOTA2界面Win10任务栏无法隐藏

    千次阅读 2017-09-20 20:33:16
    DOTA2界面Win10任务栏无法隐藏 解决方法:打开任务管理器(Ctrl+Alt+Del),详细信息中重启Explorer.exe 1.右键结束任务 2.点击文件——&gt;运行新任务

    DOTA2界面Win10任务栏无法隐藏
    解决方法:打开任务管理器(Ctrl+Alt+Del),详细信息中重启Explorer.exe
    1.右键结束任务
    这里写图片描述
    2.点击文件——>运行新任务
    这里写图片描述

    展开全文
  • Win10系统是现在大家都在使用的电脑操作系统,最近有用户反映自己的win10任务栏全屏的时候不消失,也不会自动隐藏了,这无疑会给我的视觉带来影响,如果是...2、右键任务栏,选择“任务管理器”。在进程中找到“Window

    Win10系统是现在大家都在使用的电脑操作系统,最近有用户反映自己的win10任务栏全屏的时候不消失,也不会自动隐藏了,这无疑会给我的视觉带来影响,如果是玩游戏,还会影响到我们的操作。那么,这样的问题该怎么解决呢?下面小编就为大家带来解决方法介绍,一起来看看吧!

    任务栏全屏不消失不会自动隐藏

    Win10任务栏全屏不消失解决方法:

    1、首先,碰到这种情况,大部分人都仅仅只是任务栏进程上的小毛病。我们只需要重启下“Windows资源管理器”就行了。

    2、右键任务栏,选择“任务管理器”。在进程中找到“Windows资源管理器”,右键它选择“重新启动”即可。当然,如果要直接点,大家可以重启系统,也能达到重启资源管理器的效果。

    3、如果重启后,还是无法解决。我们可以再尝试其他方法。

    4、右键开始菜单,选择“搜索”,搜“启用或关闭windows功能”,找到后打开。这是控制面板里的Windows功能,大家也可以在一步步进到控制面板里打开,用搜索就是打开方便些。

    5、在“启用或关闭windows功能”界面往下拉,找到“旧版组件”选项,点+号打开,里面有个“DirectPlay”,给它们打上勾,点确定保存即可。

    6、最后,我们再尝试重启下系统,可以看看任务栏全屏不消失的问题是否已经解决。

    7、如果以上方法仍都无法解决,系统迷再给大家补充一个临时解决方案。

    8、右键任务栏,选择“任务栏设置”,我们可以看到有个“在桌面模式下自动隐藏任务栏”选项,系统默认是关闭的,你可以把它打开,以后任务栏不管是否全屏,都会自动隐藏了。

    展开全文
  • 1、对任务栏鼠标右键点击,选择“任务管理器” 2、在进程选项下找到Windows进程中的Windows资源管理器 3、对Windows资源管理器鼠标右键,选择重新启动 转载于:...
  • 支持WIN7隐藏任务栏图标。 使用说明: 把zh_cn.lng_rad分别拷贝到服务端的C:\WINDOWS\system32\rserver30,客户端的C:\Program Files\Radmin Viewer 3目录里。然后在设置为中文就行了。选项"Options..."语言"Language...
  • win10修改和隐藏系统输入法指示

    千次阅读 2016-09-13 16:32:44
    安装搜狗后打开输入法管理器,设置搜狗为默认输入法,删除其他输入法 任务栏-----右键------属性-------通知栏区域------自定义------启用或关闭系统图标----关闭输入法指示器 或者 设置---系统---通知和操作---启用或...
  • win10开机网络图标消失,可以联网重启资源管理器可以出来下次开机又不出现图标 方法一 关于Windows10系统图标无法...切换到“启动”,点击“打开任务管理器”,禁用所有启动项。 重启电脑。收到“系统配置实用程序”
  • win10任务栏图标空白的解决方案 一、错误原因 在 Windows 10 系统中,为了加速图标的显示,当第一次对图标进行显示时,系统会对文件或程序的图标进行缓存。之后,当我们再次显示该图标时,系统会直接从缓存中读取...
  • win32 进程隐藏.rar

    2020-02-06 21:31:06
    基于vs2017 + win10 64位系统 通过dll 勾住任务管理器消息 让所需要的进程不在任务管理器里显示
  • 提供多项任务栏修改选项。 Taskbar Tweaker可以用来调整windows7、...4、鼠标对任务栏空白区域进行操作时,能够实现唤出“任务管理器”、立刻变成“静音”、隐藏任务栏等功能。 5、能够调整小窗口预览中程序的顺序。
  • win10快捷键

    2021-02-24 16:16:08
    shif+ctrl+esc:任务管理器 ALT alt+tab:切屏 WIN win+e:此电脑 win+r:运行窗口 win:开始 win+v:剪切板 win+b:选中隐藏窗口 win+d或m:可用键盘打开桌面软件(可切到桌面) win+u:显示设置 win+i:window设置...
  • 常用win10快捷键

    2021-04-01 20:50:51
    功能 ...打开任务管理器 Ctrl+shift+esc 显示和隐藏桌面上的日期和时间 win+Alt+D 打开文件资源管理器 win+E 打开设置 win+I 最小化所有窗口 win+M 将最小化的窗口还原 win+shilft+M ...
  • 常用的win10快捷键

    2019-05-04 20:40:00
    a.带图标建的快捷键 打开设置:win+i 显示... 最大化窗口至左侧/右侧:win+左右方向键 最大化或者最小化: win+上下方向键 切换输入法和语言键盘: win+空格 打开任务管理器:esc+shift+ctrl 删除选定项:shift+del ...
  • 折腾win10记录

    2019-09-21 17:14:45
    win10 资源管理器非常卡顿缓慢 1.Win+r输入:msconfig 打开系统配置 2.点击”服务”标签卡,勾选”隐藏所有的微软服务”,然后点击全部禁用(若您启用了指纹识别功能,请不要关闭相关服务) 3.点击”启动”标签卡...
  • win10 徽标键常用快捷键 Win键+Tab:激活任务视图 Win键+A:激活操作中心 Win键+S:打开搜素 Win键+D:显示和隐藏桌面 Win键+X:打开高级用户功能 Win键+E:打开文件管理器 Win键+I:打开Windows 10设置 Win键+R:...
  • Win10系统使用过程中,有用户反应任务管理器中本地服务占CPU使用率特别高,该怎么办呢?下面win10之家给大家分享下处理方法。 方法一: 1、按下【Windows+r】呼出运行,输入:msconfig 点击确定打开【系统...
  • win10 开始屏幕部分图标不显示解决

    千次阅读 2019-04-01 10:23:51
    1、运行(win+R)中输入:%localappdata% 2、删除IconCache.db文件(隐藏文件) 3、任务管理器中重新启动Windows资源管理器
  • win10常用快捷键

    2018-09-07 17:00:41
    Tab任务视图:Win + Tab(松开键盘界面不会消失) 锁定电脑:Windows徽标键 + L显示和隐藏桌面:Windows 徽标键 + D打开或关闭“开始”菜单:Windows 徽标键打开“操作中心”:Windows 徽标键 + A打开“文件资源管理器...
  • 用户在开机后,发现win10系统桌面的图标有的变成了白色的方框,如图所示,我们应该如何解决呢? 1.点开此电脑,随便点开一个文件夹 2.点击“查看”菜单,查看“隐藏的项目”是否勾选,如未勾选,点击“隐藏的项目”...
  • 首先打开一个文件夹点击【查看】菜单,然后勾选【隐藏的项目】;使用【Win】+【R】打开【运行】输入%localappdata%;...在任务栏右键的打开【任务管理器】;找到【Windows资源管理器】右键选择【重新启动】。 ...
  • services.msc 找到服务 找到superfetch 禁用 msconfig 服务 隐藏所有微软服务 全部禁用 启动 打开任务管理器 选中禁用任务 点击禁用 重启电脑
  • WIN10 系统的 IRQL NOT LESS OR EQUAL 蓝屏问题 请参考以下步骤 1.Win+r,输入:msconfig 2.点击”服务”标签卡,选择”隐藏所有的微软服务”,然后点击全部禁用(若您启用了指纹识别功能,请不要关闭相关服务) 3....
  • win10右键点击文件夹没响应,解决

    万次阅读 2016-05-03 10:40:27
    win10 系统右键单击文件时出现无响应的问题,解决方法:1.同时按Win键+R,输入msconfig,回车2.在“系统配置”对话框中的“服务”选项卡上,点按或单击选中“隐藏所有 Microsoft 服务”复选框,然后点按或单击...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 154
精华内容 61
关键字:

win10隐藏任务管理器