Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_lunar_
1230 / 1156 / 80
Регистрация: 03.05.2011
Сообщений: 2,788
Записей в блоге: 3
Завершенные тесты: 1
#1

Доступ к процессам на Windows 6.x - C++

03.11.2013, 20:15. Просмотров 319. Ответов 0
Метки нет (Все метки)

есть простой код получения handle процесса
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <Windows.h>
 
int main()
{
    HWND hWnd = FindWindow(NULL, "limbo");
    DWORD pID;
    GetWindowThreadProcessId(hWnd, &pID);
    HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);
    printf("pID %d\nHandle %d", pID, hProc);
    getchar();
    return 0;
}
который естественно не сработал
почитав форум, погуглив и покопавшись на MSDN понял, что начиная с Windows Vista (версия ОС 6.х) процессы имеют защиту. И не PROCESS_ALL_ACCESS и не на порядок ниже (как рекомендует MSDN) PROCESS_VM_READ не работают, при отладке handle выводит
Код
unused <Чтение памяти невозможно>
и всё бы ничего, если бы ни одно НО!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
class Program
{
    public static int pID;
 
    [DllImport("kernel32.dll")]
    public static extern IntPtr OpenProcess(int dwDesiredAccess,
        bool bInheritHandle, int dwProcessId);
    public static void GetProcess(string Name)
    {
        Process[] proc = Process.GetProcesses();
        foreach (Process process in proc)
            if (process.ProcessName == Name)
            {
                pID = process.Id;
                return;
            }
        return;
    }
    static void Main()
    {
        GetProcess("limbo");
        IntPtr handle = OpenProcess(0x001F0FFF, false, pID);
        Console.WriteLine("pID {0}\nHandle {1}", pID, handle);
        Console.ReadKey();
    }
}
на шарпе (НА ШАРПЕ!!!) я спокойно получаю handle нужного мне процесса той же функцией OpenProcess с теми же правами полного доступа. Как это объяснить?
для разработки приложения мне необходимо использовать C++ (C# не вариант). Есть ли какой-то способ получения handle процесса на плюсах без "танцев"?, типа режима debug, который тоже не сработал.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2013, 20:15     Доступ к процессам на Windows 6.x
Посмотрите здесь:

Подключение к процессам - C++
Работа с Экселем.Для создания процесса использую pApp.CreateInstance(&quot;Excel.Application&quot;); WorkBook =...

Путь к процессам - C++
Нашел вот такой код#include &lt;windows.h&gt; #include &lt;Psapi.h&gt; int main(){ int pid = 3432; // PID of notepad.exe char...

Переслать вектор N процессам, используя различные виды связи между процессами (MPI_Alltoall) - C++
Переслать вектор, размерности M, N процессам, используя различные виды связи между процессами. Элементы вектора задаются произвольно....

доступ к процессам - Linux
Есть сервер на котором установлен ряд программ, которые используются пользователями. Стоят задачи: 1) определить какие пользователи...

Как получить доступ к критическим процессам? - .NET
Как на VB.NET получить полный доступ к критическим процессам

Администрирование windows: политика безопасности WINDOWS запрещает доступ к этим ресурсам - Администрирование Windows
у меня проблема: при попытке открыть расшаренную папку компьютер выдает сообщение типа:&quot;политика безопасности WINDOWS запрещает доступ к...

Сетевой доступ между Windows 7 и Windows XP - Windows 7
Коллеги программисты, выручайте! В общем ситуация такая...У меня на 1 компе стоит Windows XP, в котором расшарена сетевая папка для обмена,...

По процессам - Bash
Привет! Подскажите в след вопросах: 1. Вывести описание двух процессов имеющих максимальное значение параметра загрузки процессора и...

Вопрос по процессам - Visual C++
Нужно отследить указанный процесс - т.е. старт/килл, изменение состояния и т.д. Нашёл решение через CreateToolhelp32Snapshot, но не...

Задача по переходным процессам - Электротехника
Добрый вечер помогите решить задачку в общем виде найти нужно i1 E=50V R1=2 R2= 13 R3=1 R4=4 Ом , L=1мГн, C= 1500мкФ заранее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru