Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Открытие файлов / 10 сообщений из 10, страница 1 из 1
15.12.2004, 14:06
    #32828503
Mashutka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файлов
Скажите, как можно получить список всех открытых файлов на локальном компьютере?
...
Рейтинг: 0 / 0
15.12.2004, 14:39
    #32828613
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файлов
в какеом смысле открытых?
...
Рейтинг: 0 / 0
15.12.2004, 15:00
    #32828660
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файлов
Можно перебрать все процессы и посмотреть какие модули ими загружены, но это ещё не все открытые файлы, конечно.


Код: plaintext
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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
using System;
using System.Diagnostics;

namespace Processes
{
	class Class1
	{
		[STAThread]
		static void Main(string[] args)
		{
            Process[] prs;
            try 
            {
                prs = Process.GetProcesses();
                foreach (Process p in prs)
                {
                    // Процесс {имя_процесса} c {уровень приоритета} приоритетом имеет хэндл {хэндл} и занимает {число_байт} в памяти
                    Console.WriteLine
                        ("Process {1} with {2} priority has handle {0} and use {3} bytes of memory", 
                        p.Handle, p.ProcessName, p.PriorityClass, p.WorkingSet);

                    
                    // здесь отображаются все модули, загруженные процессом WINWORD
                    if (p.ProcessName=="WINWORD")
                    {
                        foreach (ProcessModule mc in p.Modules)
                        {
                            Console.WriteLine("* {0} - {1}",mc.ModuleName,mc.FileName);
                        
                        }
                        Console.ReadLine();
                    }
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
		}
	}
}
...
Рейтинг: 0 / 0
15.12.2004, 15:35
    #32828767
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файлов
процесс != открытый файл
...
Рейтинг: 0 / 0
15.12.2004, 15:45
    #32828792
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файлов
вот так будет, думаю, правильней
Код: plaintext
1.
2.
3.
4.
try
 if not p.MainWindowHandle.Equals(Intptr.zero)then console.WriteLine(p.MainWindowtitle) 'если у процесса есть Handle окна, значит, у него есть визуальная оболочка, но и это еще не факт, что это окрытый файл!
catch
end try
...
Рейтинг: 0 / 0
15.12.2004, 17:39
    #32829094
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файлов
Лиман Артёмпроцесс != открытый файл

это так, но сам процесс открывает файлы, вопрос как их все перечислить, а не только открытые библиотеки.
...
Рейтинг: 0 / 0
15.12.2004, 23:20
    #32829390
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файлов
получить список всех открытых файлов в системе NT можно с использованием низкоуровнего API - NtQueryObject, NtOpenDirectoryObject и пр ( из ntdll.dll). дело достаточно трудоемкое и муторное.

примеры реализации можно посмотреть у Марка Руссиновича на сайте www.sysinternals.com
это несколько утилит:
Process Explorer (procexp.exe) - GUI
Handle (handle.exe) - Command line

PS: последнюю можно использовать, если перехватить и распаристь ее вывод
...
Рейтинг: 0 / 0
15.12.2004, 23:37
    #32829402
Один
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файлов
Лиман Артёмвот так будет, думаю, правильней
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
try
 if not p.MainWindowHandle.Equals(Intptr.zero)then 
 console.WriteLine(p.MainWindowtitle) 
'если у процесса есть Handle окна, значит, 
'у него есть визуальная оболочка, но и это еще не факт, что это окрытый файл!
catch
end try
С Handle окна и виз. оболочкой не все так просто
http://www.sql.ru/forum/actualthread.aspx?tid=145528
...
Рейтинг: 0 / 0
16.12.2004, 10:07
    #32829653
Mashutka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файлов
Имеется в виду получение списка файлов, которые в данный момент просматриваются на пользователем, типа текстовых, документов, музыка, картинки и т.п.
...
Рейтинг: 0 / 0
16.12.2004, 10:39
    #32829754
Roman S. Golubin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие файлов
И как ты себе это представляешь?
Допустим, программа вычитала файл и показывает его пользователю... она же тебе не скажет, откуда она его вычитала! :-)))
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Открытие файлов / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]