Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];

Вниз

Рабочая папка процесса.   Найти похожие ветки 

 
@!!ex ©   (2008-07-30 17:24) [0]

Нужно узнать рабочую папку процесса.
Как это можно сделать?


 
Ega23 ©   (2008-07-30 17:25) [1]

ExtractFileDir(ParamStr(0))


 
@!!ex ©   (2008-07-30 17:26) [2]

> [1] Ega23 ©   (30.07.08 17:25)

Ну вопервых это вернет не рабочую папку, а папку где лежит ехешник.
А во вторых я не говорил что своего процесса.


 
Milk   (2008-07-30 17:30) [3]


> @!!ex ©   (30.07.08 17:26) [2]

В таком тоне ты лучше бы вообще ничего не говорил:)
Задавай нормальные вопросы


 
@!!ex ©   (2008-07-30 17:31) [4]

> [3] Milk   (30.07.08 17:30)

Ок. Я всегда рад исправится и задавать вопросы правильно...
Как я должен был задать вопрос?


 
Игорь Шевченко ©   (2008-07-30 17:32) [5]

GetCurrentDir


 
Игорь Шевченко ©   (2008-07-30 17:32) [6]


> А во вторых я не говорил что своего процесса.


PEB анализируй


 
@!!ex ©   (2008-07-30 17:40) [7]

> [6] Игорь Шевченко ©   (30.07.08 17:32)
> PEB

А что такое PEB?


 
Ega23 ©   (2008-07-30 17:46) [8]


> А что такое PEB?




typedef struct _PEB {

BOOLEAN InheritedAddressSpace; BOOLEAN ReadImageFileExecOptions; BOOLEAN BeingDebugged; BOOLEAN Spare; HANDLE Mutant; PVOID ImageBaseAddress; PPEB_LDR_DATA LoaderData; PRTL_USER_PROCESS_PARAMETERS ProcessParameters; PVOID SubSystemData; PVOID ProcessHeap; PVOID FastPebLock; PPEBLOCKROUTINE FastPebLockRoutine; PPEBLOCKROUTINE FastPebUnlockRoutine; ULONG EnvironmentUpdateCount; PPVOID KernelCallbackTable; PVOID EventLogSection; PVOID EventLog; PPEB_FREE_BLOCK FreeList; ULONG TlsExpansionCounter; PVOID TlsBitmap; ULONG TlsBitmapBits[0x2]; PVOID ReadOnlySharedMemoryBase; PVOID ReadOnlySharedMemoryHeap; PPVOID ReadOnlyStaticServerData; PVOID AnsiCodePageData; PVOID OemCodePageData; PVOID UnicodeCaseTableData; ULONG NumberOfProcessors; ULONG NtGlobalFlag; BYTE Spare2[0x4]; LARGE_INTEGER CriticalSectionTimeout; ULONG HeapSegmentReserve; ULONG HeapSegmentCommit; ULONG HeapDeCommitTotalFreeThreshold; ULONG HeapDeCommitFreeBlockThreshold; ULONG NumberOfHeaps; ULONG MaximumNumberOfHeaps; PPVOID *ProcessHeaps; PVOID GdiSharedHandleTable; PVOID ProcessStarterHelper; PVOID GdiDCAttributeList; PVOID LoaderLock; ULONG OSMajorVersion; ULONG OSMinorVersion; ULONG OSBuildNumber; ULONG OSPlatformId; ULONG ImageSubSystem; ULONG ImageSubSystemMajorVersion; ULONG ImageSubSystemMinorVersion; ULONG GdiHandleBuffer[0x22]; ULONG PostProcessInitRoutine; ULONG TlsExpansionBitmap; BYTE TlsExpansionBitmapBits[0x80]; ULONG SessionId;

} PEB, *PPEB;

Structure PEB (Process Enviroment Block) contains all User-Mode parameters associated by system with current process.


 
Milk   (2008-07-30 17:46) [9]

Ни гугл, ни википедия не "сказали" мне что такое (понимать под) рабоч(ая)/(ей) папк(а)/(ой) процесса:(


 
Ega23 ©   (2008-07-30 17:47) [10]

Пардон за дикое форматирование: так в буфер скопировалось...


 
@!!ex ©   (2008-07-30 17:48) [11]

> [9] Milk   (30.07.08 17:46)

Ок. Как я должен был ее назвать? :))


 
@!!ex ©   (2008-07-30 17:48) [12]

> [10] Ega23 ©   (30.07.08 17:47)

Спасибо!


 
Milk   (2008-07-30 17:52) [13]

Я бы предположил, что процесс не создает своих (даже временных) папок, а использует временную папку Windows (это только мое предположение). Ну и присмотреться к
> Ega23 ©   (30.07.08 17:25) [1]
Не исключено:)


 
Игорь Шевченко ©   (2008-07-30 17:54) [14]

Вопрос к автору - а нафига ?


 
@!!ex ©   (2008-07-30 17:56) [15]

> [14] Игорь Шевченко ©   (30.07.08 17:54)

Есть программа, кладет в свою рабочую папку лог компиляции шейдера.
Есть IDE для разработки шейдеров. Нужно взять этот лог, загрузить его, и соответственно показать строки шейдера, в которых обнаружены ошибки. Вопрос в том, как узнать, где лежит лог?


 
Anatoly Podgoretsky ©   (2008-07-30 19:17) [16]

Рабочая папка процесса может многократно меняться по ходу работы программы, поэтому для чужого процесса это не узнать, если только не внедриться в его адресное пространство


 
Loginov Dmitry ©   (2008-07-30 21:22) [17]

> Есть программа, кладет в свою рабочую папку лог компиляции
> шейдера.


Похоже на bug (или недоработку) в программе.

Так за ней не угонишься, будет она то и дело менять свой текущий каталог.


 
@!!ex ©   (2008-07-30 21:31) [18]

> [17] Loginov Dmitry ©   (30.07.08 21:22)

Сделал, чтобы выкладывала лог рядом с exe...


 
Anatoly Podgoretsky ©   (2008-07-30 21:40) [19]

> @!!ex  (30.07.2008 21:31:18)  [18]

> лог рядом с exe...

Это уже не рабочая папка, а папка установки программы.
Кстати бы не мешало дать толкование термину "Рабочая папка процесса", могут оказаться очень разные вещи у разных людей.


 
@!!ex ©   (2008-07-30 21:44) [20]

> [19] Anatoly Podgoretsky ©   (30.07.08 21:40)

Не. Это я СЕЙЧАС сделал рядом с exe.
А изначально было в рабочей папке.


 
Игорь Шевченко ©   (2008-07-31 09:53) [21]


> Есть программа, кладет в свою рабочую папку лог компиляции
> шейдера.
> Есть IDE для разработки шейдеров. Нужно взять этот лог,
> загрузить его, и соответственно показать строки шейдера,
>  в которых обнаружены ошибки. Вопрос в том, как узнать,
> где лежит лог?


А договориться нельзя ?
Сдается мне, ты гланды не там вырезаешь


 
Leonid Troyanovsky ©   (2008-07-31 10:09) [22]


> @!!ex ©   (30.07.08 21:44) [20]

> Не. Это я СЕЙЧАС сделал рядом с exe.
> А изначально было в рабочей папке.

Вот и посмотри где хранятся оные настройки.

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2008-07-31 10:23) [23]

@!!ex ©   (30.07.08 21:44) [20]
Начни ка с ответа на [19] - что такое рабочая папка.


 
@!!ex ©   (2008-07-31 10:28) [24]

> [23] Anatoly Podgoretsky ©   (31.07.08 10:23)

Рабочая папка - это папка, колторая считаетя для приложения корневой.
Тоесть если создается файл с путем "test\test.txt" то реальный путь файла будет: "<рабочая папка>\test\test.txt"


 
palva ©   (2008-07-31 10:37) [25]

Термин "рабочая папка" я встречал только при создании ярлыка. Там эта папка при старте приложения становилась текущей. А дальше уж приложение может эту папку изменить.


 
Anatoly Podgoretsky ©   (2008-07-31 12:36) [26]

> @!!ex  (31.07.2008 10:28:24)  [24]

В таком случае два пути, поскольку ключевое слово "считаетя"

Первый спросить у того, кто знает, какая папка рабочая
Второй дизассемблировать программу.

Насколько я понят твое узкое толкование,

а. у тебя всего одна рабочая папка
б. и она никогда не меняется, что редкость

Только в этом случае приведеный тобой пример будет работать, что тоже маловероятно.
А ты даже не рассмотрел другие варианты, даже для этого узкого толкования

test\test.txt
С:test\test.txt
D:test\test.txt


 
Anatoly Podgoretsky ©   (2008-07-31 12:37) [27]

> palva  (31.07.2008 10:37:25)  [25]

Термин может встречаться и в других вариантах, как приведено в ответе "считаетя", их может быть много, это текущая в данный момент папка, это папка заданая в ярлыке и т.д.


 
KilkennyCat ©   (2008-07-31 12:43) [28]


> @!!ex ©   (31.07.08 10:28) [24]

> Рабочая папка - это папка, колторая считаетя для приложения
> корневой.


Остальные папки надо удалить. долой бездельников.


 
palva ©   (2008-07-31 12:52) [29]

Интересно, что у каждого диска своя текущая директория.
То есть d:test.txt c:test.txt ищет файл не в корне, а в соответствующей папке.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.046 c
15-1216062490
kaif
2008-07-14 23:08
2008.09.14
Тест на логику обыденного мышления для форумчан


3-1205489996
Павел Калугин
2008-03-14 13:19
2008.09.14
Грабли с MySql


11-1193407250
Jon
2007-10-26 18:00
2008.09.14
DirChange filenames


2-1217430165
datorn
2008-07-30 19:02
2008.09.14
TStream


2-1217714068
KilkennyCat
2008-08-03 01:54
2008.09.14
Где рисуется бордер компонента?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский