Форум: "Начинающим";
Текущий архив: 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.044 c