powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / notepad пропал...
22 сообщений из 22, страница 1 из 1
notepad пропал...
    #37356774
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего-то я не понимаю.
Делаю: Win+R notepad <CR> - работает
Делаю: Win+R cmd <CR> notepad <CR> - "нет такой программы"

Физически notepad.exe лежит как обычно в c:\windows. Самого C:\Windows в PATH нету.
Спрашивается, почему `Win+R notepad <CR>` работает? Из FAR оно кстати тоже работает...

WinXP SP3 если это важно...
...
Рейтинг: 0 / 0
notepad пропал...
    #37356779
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlСпрашивается, почему `Win+R notepad <CR>` работает?Потому что C:\Windows является текущим каталогом?
...
Рейтинг: 0 / 0
notepad пропал...
    #37356794
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftWhite OwlСпрашивается, почему `Win+R notepad <CR>` работает?Потому что C:\Windows является текущим каталогом?Нет. Из FAR оно тоже работает, а там каталоги бывают самые разные...
Впечатление такое что есть некий дополнительный PATH который используется виндовым Эксплорером и теми программами которые используют ShellExecute().
...
Рейтинг: 0 / 0
notepad пропал...
    #37356986
Константин Цветков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня работают оба варианта.
После cmd введите set от этого и ищите ответ на вопрос: кто поломал ваш компьютер.
...
Рейтинг: 0 / 0
notepad пропал...
    #37356998
Khod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что выдают ваши переменные Патх?
...
Рейтинг: 0 / 0
notepad пропал...
    #37357022
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Win+R iexplore тоже работает! Хотя этой-то заразы точно в путях нету!
...
Рейтинг: 0 / 0
notepad пропал...
    #37358310
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KhodА что выдают ваши переменные Патх?Читай самый первый пост этого топика, в первой строке второго абзаца...

Уточняю вопрос: Как ShellExecute() отыскивает запускаемый файл, если его нету в PATH?
...
Рейтинг: 0 / 0
notepad пропал...
    #37358334
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlСамого C:\Windows в PATH нету.А там есть %SystemRoot% ?
...
Рейтинг: 0 / 0
notepad пропал...
    #37358361
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftWhite OwlСамого C:\Windows в PATH нету.А там есть %SystemRoot% ?нету.
%SystemRoot%==С:\Windows, неужели я б его не увидел?

Еще раз повторяю для всех недоверчивых и тормозящих: В моем PATH (ни в глобальном PATH, ни в юзерском PATH) нету упоминаний о C:\Windows, ни константной, ни переменной. Никак. НЕТУ. Поэтому чистый cmd.exe не может найти и запустить notepad.
Тем не менее, все программы которые используют ShellExecute() (это сам Эксплорер, FAR и даже мой собственный микро-тест) МОГУТ запустить notepad. ShellExecute() его каким-то образом находит.

Как ShellExecute() отыскивает запускаемый файл, если его нету в PATH?
...
Рейтинг: 0 / 0
notepad пропал...
    #37358628
новiчёк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlЧего-то я не понимаю.
Делаю: Win+R notepad <CR> - работает
Делаю: Win+R cmd <CR> notepad <CR> - "нет такой программы"

Физически notepad.exe лежит как обычно в c:\windows. Самого C:\Windows в PATH нету.
Спрашивается, почему `Win+R notepad <CR>` работает? Из FAR оно кстати тоже работает...

WinXP SP3 если это важно...
А с чего вы взяли, что запускается из C:\WINDOWS?
notepad.exe есть в C:\WINDOWS\system32.
...
Рейтинг: 0 / 0
notepad пропал...
    #37358638
Микросекунда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl пишет:

WO> Еще раз повторяю для всех недоверчивых и тормозящих: В моем PATH (ни в
WO> глобальном PATH, ни в юзерском PATH) нету упоминаний о C:\Windows, ни
WO> константной, ни переменной. Никак. НЕТУ. Поэтому чистый cmd.exe не
WO> может найти и запустить notepad. Тем не менее, все программы которые
WO> используют ShellExecute() (это сам Эксплорер, FAR и даже мой
WO> собственный микро-тест) МОГУТ запустить notepad. ShellExecute() его
WO> каким-то образом находит.

WO> Как ShellExecute() отыскивает запускаемый файл, если его нету в PATH?

Совершенно тупой вопрос: а ты комп перезагружал после изменения PATH ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
notepad пропал...
    #37358749
Khod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlЕще раз повторяю для всех недоверчивых и тормозящих: В моем PATH (ни в глобальном PATH, ни в юзерском PATH) нету упоминаний о C:\Windows, ни константной, ни переменной

Насчёт тормозящих вы зря...
Так пропишите и не парьтесь продвинутый пользователь .
...
Рейтинг: 0 / 0
notepad пропал...
    #37358757
Микросекунда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Khod пишет:

K> Так пропишите и не парьтесь

Товарищу вобщем-то не жмет, насколько я понял :)
Товарищ просто любопытствует, как отыскивается notepad, когда системе никак не указано, где он лежит
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
notepad пропал...
    #37359882
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МикросекундаСовершенно тупой вопрос: а ты комп перезагружал после изменения PATH ?
Это повлияет только на окружение унаследованное Эксплорером. А окружение моих программ контролирую я сам. Так что я на все 100% уверен что моя программа используя PATH notepad найти не сможет. Однако находит, значит кроме PATH есть еще что-то, но я не могу найти в документации что именно.

Почему вот это работает?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
#include <windows.h>
#include <stdio.h>

int main(int argc, char **argv) {
	char buf[ 2048 ];
	GetEnvironmentVariable("PATH", buf, sizeof(buf));
	printf(buf);
	printf("\n");
	ShellExecute(NULL, NULL, "notepad", NULL, NULL, SW_SHOWNORMAL);
}
...
Рейтинг: 0 / 0
notepad пропал...
    #37359920
padno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owlmiksoftпропущено...
А там есть %SystemRoot% ?нету.
%SystemRoot%==С:\Windows, неужели я б его не увидел?

Еще раз повторяю для всех недоверчивых и тормозящих: В моем PATH (ни в глобальном PATH, ни в юзерском PATH) нету упоминаний о C:\Windows, ни константной, ни переменной. Никак. НЕТУ.



Логично возникает вопрос, а почему нет %SystemRoot%;%SystemRoot%\system32 ?
Насколько я знаю, это никогда руками специально не прописывается, а автоматом.
Нафига тогда убирать?


А какая ОС конкретно? Вероятно в этой версии пути к %SystemRoot%;%SystemRoot%\system32 автоматом используются.
Ответ нужно искать в доке к ОС на microsoft.com
...
Рейтинг: 0 / 0
notepad пропал...
    #37359966
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

White Owl Как ShellExecute() отыскивает запускаемый файл, если его нету в PATH? В реестре, скорее всего, находит...
Например:
Код: plaintext
1.
2.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"SystemRoot"="C:\\WINDOWS"
"PathName"="C:\\WINDOWS"
PS. Странный вопрос, было бы удивительно если бы не нашел...
...
Рейтинг: 0 / 0
notepad пропал...
    #37360511
Микросекунда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg пишет:

r> В реестре, скорее всего, находит...
r> Например:
r> [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
r> "SystemRoot"="C:\\WINDOWS"
r> "PathName"="C:\\WINDOWS"

Насколько я понял, это просто значения системных переменных SystemRoot и PathName, но ТС утверждает, что в PATH их нет. Так что вопрос действительно становится интересен :)

Вот, еще вариант с "Image File Execution Options": http://osix.net/modules/article/?id=781

Но я у себя в этом разделе не нашел notepad.exe
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
notepad пропал...
    #37360515
Микросекунда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, волноваться есть повод: где-то в виде прописана информация, откуда брать нотепад. А где - непонятно. А если там прописать что-то другое и вместо нопепада запустится вирус.ехе ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
notepad пропал...
    #37360538
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МикросекундаНасколько я понял, это просто значения системных переменных SystemRoot и PathName, но ТС утверждает, что в PATH их нет. Так что вопрос действительно становится интересен :)Вот млин, не нравиться реестр? Смотрим в API (GetSystemDirectory, GetWindowsDirectory) Как же легко было бы порушить систему, если бы все было бы завязано на PATH (это не анахронизм еще?)
...
Рейтинг: 0 / 0
notepad пропал...
    #37360690
Микросекунда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg пишет:

r> Смотрим в API (GetSystemDirectory, GetWindowsDirectory)

Смотрю http://msdn.microsoft.com/en-us/library/ms682425(v=vs.85).aspx

Действительно, одним из пунктов поиска указан каталог виндоус :)

msdnThe directory from which the application loaded.
The current directory for the parent process.
The 32-bit Windows system directory. Use the GetSystemDirectory function to get the path of this directory.
The 16-bit Windows system directory. There is no function that obtains the path of this directory, but it is searched. The name of this directory is System.
The Windows directory . Use the GetWindowsDirectory function to get the path of this directory.
The directories that are listed in the PATH environment variable. Note that this function does not search the per-application path specified by the App Paths registry key. To include this per-application path in the search sequence, use the ShellExecute function .

Т.е. по идее, CreateProcess должна находить notepad, лежащий в WindowsDirectory. Но при удалении из PATH всяческих SystemRoot и пр. и попытке запуска notepad из cmd, вылазит ошибка, что мол, нету такого.
При этом из ФАРа запускается успешно.

В msdn в статье про ShellExecute вообще не сказано про пути.

Вобщем, я так понял, что cmd "умничает" и сам сначала пытается найти notepad.exe, при этом в каталог виндоус не заглядывает.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
notepad пропал...
    #37361867
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МикросекундаСмотрю http://msdn.microsoft.com/en-us/library/ms682425(v=vs.85).aspx
Действительно, одним из пунктов поиска указан каталог виндоус :)Причем раньше чем в PATH... Хм...


МикросекундаТ.е. по идее, CreateProcess должна находить notepad, лежащий в WindowsDirectory. Но при удалении из PATH всяческих SystemRoot и пр. и попытке запуска notepad из cmd, вылазит ошибка, что мол, нету такого.
При этом из ФАРа запускается успешно.Мне начинает казаться, что cmd делает SearchPath(%PATH%) и только если находит - делает CreateProcess. А ShellExecute делает CreateProcess сразу, без предварительной проверки на существование файла.
...
Рейтинг: 0 / 0
notepad пропал...
    #37373842
РОМАН55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня тоже пропад, но я установил другой блокнот и всё
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / notepad пропал...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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