Здравствуйте, Sakura-chan, Вы писали:
SC>1) Почему не работают некоторые "старые" (для ХР) программы под Вистой и что именно надо менять в них программисту, что бы они работали. Желательно с точки зрения WinAPI и С++.
По опыту:
1) Административные права требуются, ситуация отсутствия нормально не отрабатывается
2) Используется низкоуровневое API для работы с микшером
3) Некоторые моменты при воспроизведении видео не полностью совместимы.
SC>2) Какие новые проблемы для разработчика будут, если её поставить на комп разработчика. Например, по типу, что может какая-то версия висты не даст отлаживать или ещё что-то — мало ли что там могли намудрить.
Версия студии нужна минимум VS2005 + SP1 + Vista update. Ну и запускать нужно из под админа, если отлаживаемая программа требует админских прав.
SC>3) Есть ли стоящие внимания новшества в WinAPI.
Хм. Зависит от потребностей. К примеру, из user32, сильно изменилось API стандартных диалогов, появился стандартный контрол — дерево каталогов.
... << RSDN@Home 1.2.0 alpha rev. 725 on Windows Vista 6.0.6000.0>>
Здравствуйте, Sakura-chan, Вы писали:
SC>>>1) Почему не работают некоторые "старые" (для ХР) программы под Вистой и что именно надо менять в них программисту, что бы они работали. Желательно с точки зрения WinAPI и С++. RO>>Потому что там, наконец, взялись за безопасность. Например, программам, запущенным от юзера, не дозволяется (что и логично) лезть в Program Files, что, тем не менее, многие пытаются делать.
SC>Т.е. в другую чем своя папка? Или нельзя ссылаться на свою папку тоже через "Program Files" (ну или через то что винда даст).
Нет.
Админ, имеющий повсеместное право на запись, установил программу в Program Files\Someprogram (подобно /usr в оффтопике). Юзер запускает ее, меняет какие-то настройки, а программа пытается сохранить их куда-то в Program Files\Someprogram\Settings. Естественно, юзеру туда нельзя. Программа должна писать в Documents and Settings\юзер\Application Data\Someprogram. Аналогично, не следует трогать HKLM в реестре.
Здравствуйте, Roman Odaisky, Вы писали:
DR>>Из консоли: runas/user:<user> <command> DR>>Из GUI: зажимаешь шифт, кликаешь правой кнопкой, выбираешь Run as... в меню.
RO>Это аналог su. Аналога sudo в MS Windows нет.
Где есть что почитать на темы или ваши коментарии:
1) Почему не работают некоторые "старые" (для ХР) программы под Вистой и что именно надо менять в них программисту, что бы они работали. Желательно с точки зрения WinAPI и С++.
2) Какие новые проблемы для разработчика будут, если её поставить на комп разработчика. Например, по типу, что может какая-то версия висты не даст отлаживать или ещё что-то — мало ли что там могли намудрить.
3) Есть ли стоящие внимания новшества в WinAPI.
PS: Не уверен, что это сюда вопрос, но вроде больше некуда.
16.01.08 11:23: Перенесено модератором из 'Прочее' — Хитрик Денис
Здравствуйте, Sakura-chan, Вы писали:
SC>Уже давно поставил, тока КУбунту ^^ Я как раз к тому и клоню (слегка знаю линукс), что там проще. Можно и прогу открыть с правами админа, не выходя из юзера. Я типа критикую винду слегка
Из консоли: runas/user:<user> <command>
Из GUI: зажимаешь шифт, кликаешь правой кнопкой, выбираешь Run as... в меню.
Здравствуйте, Sakura-chan, Вы писали:
SC>Понятно. Но это вовсе не естественно. В смысле — не логично. Юзер юзером, а программа программой. По логике вещей, папка программы — это её папка. Для неё она предназначена.
Программа не человек. Никакой собственности ей не положено. Всё создаваемое программой являются результатом деятельности пользователя, его данными. Пользователь может работать с программой на разных компьютерах, может удалять и возвращать её, программа может использоваться несколькими пользователями, одновременно на одной машине. Всё это делает невозможной запись в Program Files.
Здравствуйте, Don Reba, Вы писали:
DR>Программа не человек. Никакой собственности ей не положено. Всё создаваемое программой являются результатом деятельности пользователя, его данными. Пользователь может работать с программой на разных компьютерах, может удалять и возвращать её, программа может использоваться несколькими пользователями, одновременно на одной машине. Всё это делает невозможной запись в Program Files.
Хм, попробую не согласиться с философской частью
Я бы сказал, что программа осуществляет свою деятельность. Но — по командам пользователя. Пользователь не сам создаёт эти данные и часто даже не подозревает, что за данные хранятся физически на диске и как они получились. Так же, как нельзя сказать, что директор фирмы (например M$) в результате своей деятельности создал, скажем, Windows. Он дал команду, может быть очень детальную, но он лично не создавал. Создавали сотрудники.
У программы могут быть свои собственные данные. Которые не предназначены для пользователя, не нужные ему лично и он прямо не просил программу их создавать. Например, какая-то статистика работы, какие-то настройки под конкретный комп, какие-то логи. Это вполне можно считать собственой информацией программы. Не в том смысле, что программа живая и имеет права на файлы, а в том, что эти файлы предназначены только для неё и ей созданы.
А вообще, нужно рассматривать всю папку программы как саму программу — это же её части, по сути. Может быть всё одним файлом, а может — набором файлов и папок. Аналог частей тела человека. Нельзя же сказать, что человеке не должен иметь своего мозга в процессе работы на директора, даже если результат работы принадлежит директору. То есть, программа должна иметь доступ к самой себе. По моему, это логично.
Хотя, конечно, можно (или нужно?) все внутренние данные программы хранить в "All Users", но зто несколько нелогично. All Users позразумевает, что это общая информация всех пользователей. Но это не информация пользователей вовсе — это внутренние данные программы. Они ни кому из пользователей не принадлежат и не нужны лично.
Здравствуйте, Roman Odaisky, Вы писали:
ПС>>Можно явно запрашивать указатель на WinAPI-шную функцию с помощью GetProcAddress. Тогда программа будет работать и в старых версиях Windows. RO>Э-э... А что, собственно, делать, если она их там не найдет?
Если WinAPI-шная функция отсутствует, то можно:
1. Выполнить fallback-код, например:
typedef COLORREF (WINAPI * PSetDCBrushColorProc)(HDC hDC, COLORREF Color);
static PSetDCBrushColorProc s_pSetDCBrushColor = NULL;
// вызывается в начале работы программыvoid Init()
{
assert(s_pSetDCBrushColor == NULL);
HINSTANCE hLib = GetModuleHandle(L"gdi32.dll");
assert(hLib != NULL);
s_pSetDCBrushColor = reinterpret_cast<PSetDCBrushColorProc>(GetProcAddress(hLib, "SetDCBrushColor"));
}
#ifndef DC_BRUSH
#define DC_BRUSH 18
#endif
void PaintRect(HDC hDC, const RECT& Rect, COLORREF Color)
{
assert((Rect.left <= Rect.right) && (Rect.top <= Rect.bottom));
if (s_pSetDCBrushColor != NULL)
{
// начиная с Windows 98 и Windows 2000
(*s_pSetDCBrushColor)(hDC, Color);
HBRUSH b = static_cast<HBRUSH>(GetStockObject(DC_BRUSH));
FillRect(hDC, &Rect, b);
}
else
{
// старая Windows, fallback-код
HBRUSH hBrush = CreateSolidBrush(Color); // можно cache-ироватьif (hBrush == NULL)
{
throw runtime_error("Cannot create brush.");
}
FillRect(hDC, &Rect, hBrush);
DeleteObject(hBrush);
}
}
Так делает метод CMirrorFile::Close в MFC 6.0, он явно запрашивает функцию ReplaceFile из kernel32.dll.
2. Ничего не делать. Например, отсутствует функция HeapCompact. Значит не судьба ужать heap.
3. Заблокировать пункт меню или кнопку. Или не блокировать, а при нажатии показать сообщение «у вас старая Windows, возможность недоступна».
Здравствуйте, Sakura-chan, Вы писали:
SC>1) Почему не работают некоторые "старые" (для ХР) программы под Вистой и что именно надо менять в них программисту, что бы они работали. Желательно с точки зрения WinAPI и С++.
Потому что там, наконец, взялись за безопасность. Например, программам, запущенным от юзера, не дозволяется (что и логично) лезть в Program Files, что, тем не менее, многие пытаются делать.
SC>2) Какие новые проблемы для разработчика будут, если её поставить на комп разработчика. Например, по типу, что может какая-то версия висты не даст отлаживать или ещё что-то — мало ли что там могли намудрить.
А нахрена она разработчику? Это тестерам надо разные версии всех поддерживаемых ОС.
SC>3) Есть ли стоящие внимания новшества в WinAPI.
Так даже если есть, всё равно ими нельзя пользоваться из соображений обратной совместимости.
Я бы сказал, какая ОС лучше всего для программиста, но в этом форуме это как-то оффтопик ;-)
Здравствуйте, Roman Odaisky, Вы писали:
SC>>1) Почему не работают некоторые "старые" (для ХР) программы под Вистой и что именно надо менять в них программисту, что бы они работали. Желательно с точки зрения WinAPI и С++. RO>Потому что там, наконец, взялись за безопасность. Например, программам, запущенным от юзера, не дозволяется (что и логично) лезть в Program Files, что, тем не менее, многие пытаются делать.
Т.е. в другую чем своя папка? Или нельзя ссылаться на свою папку тоже через "Program Files" (ну или через то что винда даст).
RO>А нахрена она разработчику? Это тестерам надо разные версии всех поддерживаемых ОС.
Ну хотя бы потому, что скоро XP прекратят выпускать. Я слышал, что через месяц (конец февраля). Все новые компы будут с вистой. Рано или поздно ХР будет исчезать же. Ноутбуки уже только с вистой, например, кроме старых партий совсем.
SC>>3) Есть ли стоящие внимания новшества в WinAPI. RO>Так даже если есть, всё равно ими нельзя пользоваться из соображений обратной совместимости.
Дык опять же Пользуются же новшествами ХР, не смотря на совместимость с 2000 и 98. Чаще всего опционально.
Просто любопытно, что интересного там есть.
RO>Я бы сказал, какая ОС лучше всего для программиста, но в этом форуме это как-то оффтопик
И из под оффтпичной ОС отлаживать проги под винду? Я б не решился
Здравствуйте, Roman Odaisky, Вы писали:
RO> программа пытается сохранить их куда-то в Program Files\Someprogram\Settings. Естественно, юзеру туда нельзя. Программа должна писать в Documents and Settings\юзер\Application Data\Someprogram. Аналогично, не следует трогать HKLM в реестре.
Понятно. Но это вовсе не естественно. В смысле — не логично. Юзер юзером, а программа программой. По логике вещей, папка программы — это её папка. Для неё она предназначена.
А для общих настроек предлагается "All Users", так?
Всё-таки разделение диска на личные папки не очень умно. В оффтопике всё иначе, а тут очень криво всё. Надо тогда файловая система что б от этот вся плясала. Я же могу и в D:\GAMES\ поствить прогу. И выйдет она вообще вне правил и логики.
Здравствуйте, Sakura-chan, Вы писали:
RO>> программа пытается сохранить их куда-то в Program Files\Someprogram\Settings. Естественно, юзеру туда нельзя. Программа должна писать в Documents and Settings\юзер\Application Data\Someprogram. Аналогично, не следует трогать HKLM в реестре.
SC>Понятно. Но это вовсе не естественно. В смысле — не логично. Юзер юзером, а программа программой. По логике вещей, папка программы — это её папка. Для неё она предназначена.
Вполне логично. В Program Files юзеру писать нельзя. Из соображений безопасности. Админ поставил программу, а потом пришел Вася, влез в ее настройки и внедрил туда какую-то злонамеренную функциональность. Программа ведь исполняется от имени юзера и может делать всё то, но не более, что позволено самому юзеру.
SC>Всё-таки разделение диска на личные папки не очень умно. В оффтопике всё иначе, а тут очень криво всё. Надо тогда файловая система что б от этот вся плясала. Я же могу и в D:\GAMES\ поствить прогу. И выйдет она вообще вне правил и логики.
А в последних версиях Винды как раз структура директорий становится похожей на FHS. /usr — Program Files, /home — Documents and Settings, /etc — реестр, /var — неясно (Documents and Settings\All Users\Application Data?). Ага, кажется, понял. Ты о том, куда программе девать данные вроде какого-нибудь внутреннего кеша?
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, Sakura-chan, Вы писали:
RO>>> программа пытается сохранить их куда-то в Program Files\Someprogram\Settings. Естественно, юзеру туда нельзя. Программа должна писать в Documents and Settings\юзер\Application Data\Someprogram. Аналогично, не следует трогать HKLM в реестре.
SC>>Понятно. Но это вовсе не естественно. В смысле — не логично. Юзер юзером, а программа программой. По логике вещей, папка программы — это её папка. Для неё она предназначена.
RO>Вполне логично. В Program Files юзеру писать нельзя. Из соображений безопасности. Админ поставил программу, а потом пришел Вася, влез в ее настройки и внедрил туда какую-то злонамеренную функциональность. Программа ведь исполняется от имени юзера и может делать всё то, но не более, что позволено самому юзеру.
И что? Все то же самое может случиться с любой папкой. Вся суть pf только в том, что там якобы лежат trusted apps
Здравствуйте, Roman Odaisky, Вы писали:
RO> Админ поставил программу, а потом пришел Вася, влез в ее настройки и внедрил туда какую-то злонамеренную функциональность. Программа ведь исполняется от имени юзера и может делать всё то, но не более, что позволено самому юзеру.
Я имею в виду, что в идеале должна быть ситуация, когда программа имеет доступ к только своей папке. Но юзер — не имеет. Т.е. для программы было бы если исключение из прав юзера. Хотя с другой стороны, конечно, если программа позволяет юзеру ковырять её саму через её же интерфейс, то это дыра будет... я не подумал с этой стороны
RO> А в последних версиях Винды как раз структура директорий становится похожей на FHS. /usr — Program Files, /home — Documents and Settings, /etc — реестр, /var — неясно (Documents and Settings\All Users\Application Data?).
Да, но никто не мешает мне поставить прогу в D:\GAMES, как я уже сказал. И получится исключение из всех правил. Потому что они распространяются только на Program Files. Разве что если закрыть юзерам всё кроме их личной папки...
RO> Ага, кажется, понял. Ты о том, куда программе девать данные вроде какого-нибудь внутреннего кеша?
Угу. Или логи, статистику, общие настройки. Как я уже писал в соседнем ответе, подойдёт All Users, вроде, но не логично снова — логи это не файлы пользователей, это личные файлы программы.
Здравствуйте, Sakura-chan, Вы писали:
RO>>Потому что там, наконец, взялись за безопасность. Например, программам, запущенным от юзера, не дозволяется (что и логично) лезть в Program Files, что, тем не менее, многие пытаются делать.
SC>Т.е. в другую чем своя папка? Или нельзя ссылаться на свою папку тоже через "Program Files" (ну или через то что винда даст).
Вообще-то это еще со времен NT была нормальная практика — просто многие юзеры сидят под админами и "ложили они на всякие дурные правила вражеского мелкософта" — а вот программ, которые этим занимаются... хех... Half-Life 2 и Steam.
Вообще уже давно в Windows есть специальные папки для всего по полочкам — есть документ соответствующий с _рекомндациями_ куда что следует класть.
RO>>А нахрена она разработчику? Это тестерам надо разные версии всех поддерживаемых ОС.
SC>Ну хотя бы потому, что скоро XP прекратят выпускать. Я слышал, что через месяц (конец февраля). Все новые компы будут с вистой. Рано или поздно ХР будет исчезать же. Ноутбуки уже только с вистой, например, кроме старых партий совсем.
+1. Но у нас — страна (обе) непуганных пиратов — просьба не поднимать флейм "хорошо/плохо".
ЗЫ: кстати, кто в курсе: когда объявлены предполагаемые окончания продаж XP?
SC>>>3) Есть ли стоящие внимания новшества в WinAPI. RO>>Так даже если есть, всё равно ими нельзя пользоваться из соображений обратной совместимости.
SC>Дык опять же Пользуются же новшествами ХР, не смотря на совместимость с 2000 и 98. Чаще всего опционально.
+1. За то, что все еще есть Win98, я бы, как разработчик "мультиплатформенных виндовых программ", пользователей бы расстреливал! Ну хорошо: частные пусть поживут еще — но корпоративные!!!
SC>Просто любопытно, что интересного там есть.
+1!
ЗЫ: у меня на ноуте — живая Виста! И памяти гиг всего одной планкой — на следующей неделе бегу покупать еще одну — вместо запланированных уже двух — дуракам, как говорится, везет! (это я так, о своем... )
RO>>Я бы сказал, какая ОС лучше всего для программиста, но в этом форуме это как-то оффтопик
SC>И из под оффтпичной ОС отлаживать проги под винду? Я б не решился
Учу: запускаешь виртуальную машину, ставишь туда винду, ставишь туда студию — и вперед и с песней!
Здравствуйте, The Lex, Вы писали:
TL>Вообще-то это еще со времен NT была нормальная практика — просто многие юзеры сидят под админами и "ложили они на всякие дурные правила вражеского мелкософта" — а вот программ, которые этим занимаются... хех... Half-Life 2 и Steam.
Не совсем всё так. Я, например, пытался сидеть под юзером в винде одно время. Проникся вопросом безопасности. Но очень скоро я отвык быстренько, когда часть программ заглючила что нету прав, для инсталяции или настройки системы надо переходить в админа и обратно (а я в то время ещё не знал про два сеанса, либо это была 2000 винда, забыл уже). Короче я быстро отучился от этого.
TL>+1. Но у нас — страна (обе) непуганных пиратов — просьба не поднимать флейм "хорошо/плохо".
Где как. В Питере все пирасткие точки уничтожили пол года назад. Они где-то может и есть, но с первого взгляда не найти. В Москве вот наоборот, всего полно. Странно даже, вроде у нас тут криминальная столица
TL>+1. За то, что все еще есть Win98, я бы, как разработчик "мультиплатформенных виндовых программ", пользователей бы расстреливал! Ну хорошо: частные пусть поживут еще — но корпоративные!!!
Много голов поляжет У нас есть программатор микросхем, который только под 98 работает и всё. И не выгодно покупать винду ХР, потом покупать новый программатор, к нему новое ПО... А уж про висту молучу даже.
TL>ЗЫ: у меня на ноуте — живая Виста!
У меня у рлдственников на рабочем ноуте виста. Причём у неё с ноутом какой-то симбиоз, туда ХР не поставить второй системой — она даже винта не видит -_- И в биосе настроек нету. Что-то где-то закрыто чем-то, явно. Первое же что виста натворила — сказала, что драйвер StarForce от лицензионного диска ей не нравится и всё. Знакомство с вистой началось с ругани, короче ^^ Мне любопытно даже, какой процент моих программ пойдёт под ней.
SC>>И из под оффтпичной ОС отлаживать проги под винду? Я б не решился TL>Учу: запускаешь виртуальную машину, ставишь туда винду, ставишь туда студию — и вперед и с песней!
Дык а смысл. Можно тогда в той же студии и отлажвиать. Зачем оффтопичная ОС — тормозить комп посредством виртуалки?
Здравствуйте, Roman Odaisky, Вы писали: SC>>3) Есть ли стоящие внимания новшества в WinAPI. RO>Так даже если есть, всё равно ими нельзя пользоваться из соображений обратной совместимости.
Можно явно запрашивать указатель на WinAPI-шную функцию с помощью GetProcAddress. Тогда программа будет работать и в старых версиях Windows.
Здравствуйте, Sakura-chan, Вы писали:
TL>>Вообще-то это еще со времен NT была нормальная практика — просто многие юзеры сидят под админами и "ложили они на всякие дурные правила вражеского мелкософта" — а вот программ, которые этим занимаются... хех... Half-Life 2 и Steam.
SC>Не совсем всё так. Я, например, пытался сидеть под юзером в винде одно время. Проникся вопросом безопасности. Но очень скоро я отвык быстренько, когда часть программ заглючила что нету прав, для инсталяции или настройки системы надо переходить в админа и обратно (а я в то время ещё не знал про два сеанса, либо это была 2000 винда, забыл уже). Короче я быстро отучился от этого.
Вот-вот. Между тем в больших корпорациях оказывается многие "простые пользователи" таки "сидят правильно" — и Program Files там вполне себе "только для чтения".
ЗЫ: я тоже не люблю — "не прочувствовал" — сидеть без админовских прав...
ЗЫ: но необходимости программам "писать только куда надо" это не отменяет!
TL>>+1. Но у нас — страна (обе) непуганных пиратов — просьба не поднимать флейм "хорошо/плохо".
SC>Где как. В Питере все пирасткие точки уничтожили пол года назад. Они где-то может и есть, но с первого взгляда не найти. В Москве вот наоборот, всего полно. Странно даже, вроде у нас тут криминальная столица
Дык я не про продажу — я про использование... Не знал?
TL>>+1. За то, что все еще есть Win98, я бы, как разработчик "мультиплатформенных виндовых программ", пользователей бы расстреливал! Ну хорошо: частные пусть поживут еще — но корпоративные!!!
SC>Много голов поляжет У нас есть программатор микросхем, который только под 98 работает и всё. И не выгодно покупать винду ХР, потом покупать новый программатор, к нему новое ПО... А уж про висту молучу даже.
Ты не понял... Одно дело — когда у вас "программатор микросхем, который только под 98 работает и всё" — тут надо с обратной стороны подходить: "у нас вин 98 и под нее только программатор работает и все". А вот когда под нее действительно "и все остальное тоже работает" — вот тогда и наступает...
TL>>ЗЫ: у меня на ноуте — живая Виста!
SC>У меня у рлдственников на рабочем ноуте виста. Причём у неё с ноутом какой-то симбиоз, туда ХР не поставить второй системой — она даже винта не видит -_- И в биосе настроек нету. Что-то где-то закрыто чем-то, явно.
Дык это rtfm — я по ходу многого начитался пока себе выбирал — чаще всего на установку XP на современную модель есть подробные и FAQ и туториал — в каких-то крайних особо случаях можно найти аналогичные по железу ноуты и описание к ним — но вроде как поставить XP все еще можно на любой ноут — и даже драйвера есть.
SC>... Первое же что виста натворила — сказала, что драйвер StarForce от лицензионного диска ей не нравится и всё. Знакомство с вистой началось с ругани, короче ^^ Мне любопытно даже, какой процент моих программ пойдёт под ней.
х.з. я вчера воткнул туда свой BT-USB (рекламная пауза: D-Link!) — так он тут же обнаружился и запросил драйвера (следует признать, что я неявно надеялся что волшебным образом уже есть какие-то стандартные). Дык я пошел, поскреб по сусекам, нашел родной диск (рекламная пауза: D-Link!), вставил, нажал "поехали!" — и все таки встало и... а, ну да: теперь надо туда еще PC Suite ((рекламная пауза: Nokia!) поставить и проверить связь с мобилкой...
Лично я скорее с обратной ситуацией сталкивался, когда новое железо на старых чипсетах + ОС 2000 не хотело работать "по полной" — зато на XP — "аж бегом!" И я, например, в XP люблю ее "мультяшные окна" — и не люблю когда отключают обратно в "серое казарменное безмолвие" (к)
Будем посмотреть. (к)
Все мы там будем. (к)
SC>>>И из под оффтпичной ОС отлаживать проги под винду? Я б не решился TL>>Учу: запускаешь виртуальную машину, ставишь туда винду, ставишь туда студию — и вперед и с песней!
SC>Дык а смысл. Можно тогда в той же студии и отлажвиать. Зачем оффтопичная ОС — тормозить комп посредством виртуалки?
Ну дык зато "под ОС" — причем "ОС" — с Особо Больших буков.
ЗЫ: а, например, как эффективно работать "в обратном порядке" — т.е. писать под "большую ОС", но работать под виндой?
О, кстати: ни у кого хорошего задачника по Юниксу и vi нету? Ну чтобы там упражнения были на закрепление материала. Или ссылки на таковой задачник или сами задачи. Но чтобы (желательно) действительно сильные с тренировочно-педагогической точки зрения.
Здравствуйте, Пётр Седов, Вы писали:
SC>>>3) Есть ли стоящие внимания новшества в WinAPI. RO>>Так даже если есть, всё равно ими нельзя пользоваться из соображений обратной совместимости. ПС>Можно явно запрашивать указатель на WinAPI-шную функцию с помощью GetProcAddress. Тогда программа будет работать и в старых версиях Windows.
Э-э... А что, собственно, делать, если она их там не найдет?
Здравствуйте, Sakura-chan, Вы писали:
RO>> Админ поставил программу, а потом пришел Вася, влез в ее настройки и внедрил туда какую-то злонамеренную функциональность. Программа ведь исполняется от имени юзера и может делать всё то, но не более, что позволено самому юзеру.
SC>Я имею в виду, что в идеале должна быть ситуация, когда программа имеет доступ к только своей папке. Но юзер — не имеет. Т.е. для программы было бы если исключение из прав юзера. Хотя с другой стороны, конечно, если программа позволяет юзеру ковырять её саму через её же интерфейс, то это дыра будет... я не подумал с этой стороны :)
Как ни крути, приходится съезжать на священные войны. Всё это давно в оффтопике есть: четкие привилегии на разные директории и возможность программе исполняться с привилегиями, отличными от привилегий юзера. Поставь себе Убунту, поиграйся. Это, кстати, помогает писать более хорошие программы для MS Windows. Ну, и есть риск на Windows забить :-)
RO>> А в последних версиях Винды как раз структура директорий становится похожей на FHS. /usr — Program Files, /home — Documents and Settings, /etc — реестр, /var — неясно (Documents and Settings\All Users\Application Data?).
SC>Да, но никто не мешает мне поставить прогу в D:\GAMES, как я уже сказал. И получится исключение из всех правил. Потому что они распространяются только на Program Files. Разве что если закрыть юзерам всё кроме их личной папки...
По-хорошему, так и должно быть. В (нет, только не СВ!) некоторых других ОС так и есть: юзерам можно только в свою директорию, разве что еще во временную.
RO>> Ага, кажется, понял. Ты о том, куда программе девать данные вроде какого-нибудь внутреннего кеша?
SC>Угу. Или логи, статистику, общие настройки. Как я уже писал в соседнем ответе, подойдёт All Users, вроде, но не логично снова — логи это не файлы пользователей, это личные файлы программы.
К общим настройкам положено иметь доступ только админу. Логи/статистику/кеш следует передавать по определенному протоколу заранее запущенному процессу, который запишет данные уже со своими правами. Так сделан системный лог в большинстве ОС, например.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Как ни крути, приходится съезжать на священные войны. Всё это давно в оффтопике есть: четкие привилегии на разные директории и возможность программе исполняться с привилегиями, отличными от привилегий юзера. Поставь себе Убунту, поиграйся. Это, кстати, помогает писать более хорошие программы для MS Windows. Ну, и есть риск на Windows забить
Уже давно поставил, тока КУбунту ^^ Я как раз к тому и клоню (слегка знаю линукс), что там проще. Можно и прогу открыть с правами админа, не выходя из юзера. Я типа критикую винду слегка
RO>По-хорошему, так и должно быть. В (нет, только не СВ!) некоторых других ОС так и есть: юзерам можно только в свою директорию, разве что еще во временную.
Неа! Тогда придётся иметь только один логический диск. И один винт всего. Любой другой винт не может быть внутри C:\D&S\User и будет доступен тока админу. В винде физическая ФС, а в оффтопике — виртуальная.
RO> К общим настройкам положено иметь доступ только админу.
А всегда ли это правильно? Смотря что за прога — админ может стать человеком на побегушках по фирме
(что-то жёсткий оффтопик пошёл )
RO> Логи/статистику/кеш следует передавать по определенному протоколу заранее запущенному процессу, который запишет данные уже со своими правами.
Но это же через .. одно место Хотя мысль здравая, но жутко криво выглядит
RO> Так сделан системный лог в большинстве ОС, например.
В винде это Журналы Событий. Но что-то мне не очень нравится идея. Они ограничены, описания как-то регистрировать надо... Куда проще тупо писать текстовый файл. Можно что хочешь писать, создавать новые файлы по датам итд. Быстро и просто, ничего не надо. Про линукс не знаю — я из программирования там знаю тока функцию fork()
Здравствуйте, The Lex, Вы писали:
TL>ЗЫ: но необходимости программам "писать только куда надо" это не отменяет!
Кстати, а где эти самые рекомендации есть?
TL>Дык я не про продажу — я про использование... Не знал?
Я стараюсь перейти на бесплатное, вот
TL>Дык это rtfm
RTFM ноута содержит тока "какой кнопочкой включить ноутбук" для блондинок ^^
TL>Лично я скорее с обратной ситуацией сталкивался, когда новое железо на старых чипсетах + ОС 2000 не хотело работать "по полной" — зато на XP — "аж бегом!" И я, например, в XP люблю ее "мультяшные окна" — и не люблю когда отключают обратно в "серое казарменное безмолвие" (к)
Впервые увидев ХР я назвал это "клоунский интерфейс" ^^ Сейчас привык, но долго плевался.
SC>>Дык а смысл. Можно тогда в той же студии и отлажвиать. Зачем оффтопичная ОС — тормозить комп посредством виртуалки? TL> Ну дык зато "под ОС" — причем "ОС" — с Особо Больших буков.
<мечты>Вот бы под неё научиться писать тоже</мечты>
TL>ЗЫ: а, например, как эффективно работать "в обратном порядке" — т.е. писать под "большую ОС", но работать под виндой?
Пока что kubuntu у меня тока под qemu живёт. Разглядываю ^^
Здравствуйте, Don Reba, Вы писали:
DR>Из консоли: runas/user:<user> <command> DR>Из GUI: зажимаешь шифт, кликаешь правой кнопкой, выбираешь Run as... в меню.
Во-первых, Windows XP не прекратит своего существования 30 июня 2008 года. На эту дату назначено прекращение поставок OEM-версий XP изготовителям компьютерных устройств для предустановки на новые ПК и продажи через розничную сеть.
Что же касается прекращения поддержки Windows XP, то здесь компания Microsoft отмечает, что основная поддержка этой операционной системы прекратится в апреле 2009 года, а расширенная поддержка, связанная с исправлением ошибок безопасности ОС и других важных ошибок, закончится в 2014 году.
Direct OEM и Retail License будет доступна до 30 июня 2008г
System Builder License будет доступна до 31 января 2009г
Здравствуйте, Don Reba, Вы писали:
SC>>Уже давно поставил, тока КУбунту ^^ Я как раз к тому и клоню (слегка знаю линукс), что там проще. Можно и прогу открыть с правами админа, не выходя из юзера. Я типа критикую винду слегка :)
DR>Из консоли: runas/user:<user> <command> DR>Из GUI: зажимаешь шифт, кликаешь правой кнопкой, выбираешь Run as... в меню.
Но такой способ не всегда годится. Например, хочется сделать top-level окно непрямоугольной формы. Если user32.dll экспортирует функцию SetLayeredWindowAttributes, то лучше использовать её. Если она отсутствует, то придётся создать GDI-регион и назначить его окну вызовом функции SetWindowRgn.