Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.14;
Скачать: CL | DM;

Вниз

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

 
@!!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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.023 c
3-1205917843
pavel_guzhanov
2008-03-19 12:10
2008.09.14
rf сделать в запросе два варианта записи в одно поле?


2-1217453505
Alex_Storm
2008-07-31 01:31
2008.09.14
Добавить строки в ListViev


2-1217997524
Viod
2008-08-06 08:38
2008.09.14
Обратиться к объекту по имени хранящемся в строке


15-1216708121
Dennis I. Komarov
2008-07-22 10:28
2008.09.14
Порекомендуйте снифф


9-1153323049
korvin88
2006-07-19 19:30
2008.09.14
блендинг текстур по маске