Посл.ответ |
Сообщение |
Ранг: 15.3 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 10 июня 2006 19:48 · Личное сообщение · #1
Мне нужно найти какой то файл например в папке виндовза и запустить его. Но я не знаю какой винд (вин2000 -> WINNT, Winxp -> Windows и т.д.) и в каком диске установлен. Как решить праблему?
| Сообщение посчитали полезным: |
|
Ранг: 158.4 (ветеран), 123thx Активность: 0.14↗0.49 Статус: Участник
|
Создано: 10 июня 2006 19:55 · Личное сообщение · #2
%windir%\filename.exe
| Сообщение посчитали полезным: |
Ранг: 15.3 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 10 июня 2006 19:58 · Личное сообщение · #3
А этот трюк с делфи проходит?
| Сообщение посчитали полезным: |
Ранг: 158.4 (ветеран), 123thx Активность: 0.14↗0.49 Статус: Участник
|
Создано: 10 июня 2006 20:06 · Личное сообщение · #4
этот трюк проходит в винде. называется переменная окружения. язык не причем
| Сообщение посчитали полезным: |
Ранг: 450.1 (мудрец) Активность: 0.26↘0 Статус: Участник
|
Создано: 10 июня 2006 20:19 · Личное сообщение · #5
GetWindowsDirectory
| Сообщение посчитали полезным: |
 Ранг: 122.3 (ветеран) Активность: 0.05↘0 Статус: Участник
|
Создано: 10 июня 2006 21:47 · Личное сообщение · #6
а можно и вообще "filename.exe"
виндовая папка ведь всегда в переменной окружения PATH прописана. (разве нет?)
| Сообщение посчитали полезным: |
Ранг: 15.3 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 10 июня 2006 22:02 · Личное сообщение · #7
2 intty
Ну да, но вряд ли сработает.
2 Asterix
Спасибо, а можно поконкретнее?
| Сообщение посчитали полезным: |
 Ранг: 283.6 (наставник), 56thx Активность: 0.13↘0 Статус: Участник Author of GeTaOEP
|
Создано: 11 июня 2006 00:39 · Личное сообщение · #8
n90p
GetWindowsDirectory http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getwindowsdirectory.asp -- куда уж конкретнее  .
----- the Power of Reversing team | Сообщение посчитали полезным: |
Ранг: 228.7 (наставник), 2thx Активность: 0.12↘0 Статус: Участник malware research
|
Создано: 12 июня 2006 10:35 · Поправил: Error_Log · Личное сообщение · #9
Есть еще одна функция:
GetSystemDirectory
The GetSystemDirectory function retrieves the path of the system directory. The system directory contains system such files such as dynamic-link libraries, drivers, and font files.
This function is provided primarily for compatibility. Applications should store code in the Program Files folder and persistent data in the Application Data folder in the user's profile. For more information, see ShGetFolderPath.
UINT GetSystemDirectory(
LPTSTR lpBuffer,
UINT uSize
);
Parameters
lpBuffer
[out] Pointer to the buffer to receive the null-terminated string containing the path. This path does not end with a backslash unless the system directory is the root directory. For example, if the system directory is named Windows\System on drive C, the path of the system directory retrieved by this function is C:\Windows\System.
uSize
[in] Maximum size of the buffer, in TCHARs. This value should be set to MAX_PATH.
В винХР вернет что-то типа C:\WINDOWS\system32
----- Research is my purpose | Сообщение посчитали полезным: |
Ранг: 42.4 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 16 июня 2006 08:31 · Личное сообщение · #10
В Билдере точно было что-то подобное, а вообще глянь доку по реестру. Положение этой папки там если и не в одном и том же месте , то вариантов 2-3, не больше.
try {..} catch рулит
А если совсем не париться,то батник, где, как писали выше:
%windir%\filename.exe
| Сообщение посчитали полезным: |
Ранг: 7.0 (гость) Активность: 0=0 Статус: Участник
|
Создано: 13 июля 2006 22:22 · Личное сообщение · #11
В builder:
char sWinDir[255];
GetWindowsDirectory(sWinDir,sizeof(sWinDir));
... AnsiString(sWinDir)+"\filename.exe" //"..." - необходимая операция
примерно так
| Сообщение посчитали полезным: |
Ранг: 7.8 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 20 июля 2006 23:22 · Личное сообщение · #12
Млин, над чем ты мудишься..
В паблике объяви переменные: директория(строка), директория(pchar), результат(кардинал).
директория(pchar) := stralloc(max_path);
результат := GetWindowsDirectory(директория(pchar), max_path);
if результат > 0 then
директория(строка) := strpas(директория(pchar));
| Сообщение посчитали полезным: |
Ранг: 7.8 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 20 июля 2006 23:36 · Личное сообщение · #13
еще вот, забыл
если файла там нет, попробуй поискать.
пользуй shellexecute (чтобы найти файл - ключ search, открыть - open)
ну а если тебе и api не поможет  , тебе уже ничто не поможет
| Сообщение посчитали полезным: |
Ранг: 516.1 (!), 39thx Активность: 0.28↘0 Статус: Участник
|
Создано: 21 июля 2006 10:16 · Личное сообщение · #14
GetWindowsDirectory + FindFirstFile, FindNextFile, FindClose + ShellExecute
| Сообщение посчитали полезным: |
 Ранг: 307.9 (мудрец), 196thx Активность: 0.18↘0 Статус: Участник
|
Создано: 21 июля 2006 14:26 · Личное сообщение · #15
Точно не помню, но на делфях, вроде, есть такая функция которая принимает на вход только ИмяФайла и вохвращает полный путь. А вот назавние забыл =(
----- Don_t hate the cracker - hate the code. | Сообщение посчитали полезным: |
Ранг: 9.9 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 30 августа 2006 08:29 · Личное сообщение · #16
у мня например при указании только имени файла работало  (если файл в папке винды был)
| Сообщение посчитали полезным: |
Ранг: 38.0 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 01 сентября 2006 04:11 · Поправил: ne0n · Личное сообщение · #17
Блин, вот готовый код, ничего сложного.
uses
ShellApi;
var
windir: array [0..255] of char;
begin
GetWindowsDirectory(windir, 255);
ShellExecute(Handle, 'open',
Pchar(windir+'filename.exe'), nil, nil, SW_SHOWNORMAL);
end;
а уж про FindFirst,FindNext,FindClose найти не проблема.
| Сообщение посчитали полезным: |
Ранг: 15.3 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 19 февраля 2007 01:41 · Личное сообщение · #18
Thanx to all
| Сообщение посчитали полезным: |