Re: Windows Vista программисту
От: dip_2000 Россия  
Дата: 17.01.08 07:58
Оценка: 5 (2)
Здравствуйте, Sakura-chan, Вы писали:

http://www.oszone.net/4364/Windows_Vista
http://www.oszone.net/display.php?id=4523&do=print
http://www.microsoft.com/technet/technetmag/issues/2007/04/VistaKernel/default.aspx?loc=ru
там много рекламной шелухи, но очень разносторонне, и дальше ясно будет куда копать.
Re: Windows Vista программисту
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.12.07 14:38
Оценка: 4 (2)
Здравствуйте, 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>>
AVK Blog
Re[3]: Windows Vista программисту
От: Roman Odaisky Украина  
Дата: 16.01.08 19:49
Оценка: 1 (1) +1
Здравствуйте, 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 в реестре.
До последнего не верил в пирамиду Лебедева.
Re[11]: Windows Vista программисту
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 18.01.08 23:27
Оценка: 1 (1) -1
Здравствуйте, Roman Odaisky, Вы писали:

DR>>Из консоли: runas/user:<user> <command>

DR>>Из GUI: зажимаешь шифт, кликаешь правой кнопкой, выбираешь Run as... в меню.

RO>Это аналог su. Аналога sudo в MS Windows нет.


И отлично. Чего холиворить на пустом месте?
Ce n'est que pour vous dire ce que je vous dis.
Windows Vista программисту
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 19.12.07 11:33
Оценка: 3 (1)
Где есть что почитать на темы или ваши коментарии:
1) Почему не работают некоторые "старые" (для ХР) программы под Вистой и что именно надо менять в них программисту, что бы они работали. Желательно с точки зрения WinAPI и С++.
2) Какие новые проблемы для разработчика будут, если её поставить на комп разработчика. Например, по типу, что может какая-то версия висты не даст отлаживать или ещё что-то — мало ли что там могли намудрить.
3) Есть ли стоящие внимания новшества в WinAPI.

PS: Не уверен, что это сюда вопрос, но вроде больше некуда.

16.01.08 11:23: Перенесено модератором из 'Прочее' — Хитрик Денис
Itsumo sobani, itsumo hitori.
Re[9]: Windows Vista программисту
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 18.01.08 13:23
Оценка: 1 (1)
Здравствуйте, Sakura-chan, Вы писали:

SC>Уже давно поставил, тока КУбунту ^^ Я как раз к тому и клоню (слегка знаю линукс), что там проще. Можно и прогу открыть с правами админа, не выходя из юзера. Я типа критикую винду слегка


Из консоли: runas/user:<user> <command>
Из GUI: зажимаешь шифт, кликаешь правой кнопкой, выбираешь Run as... в меню.
Ce n'est que pour vous dire ce que je vous dis.
Re[3]: Windows Vista программисту
От: SergH Россия  
Дата: 19.12.07 12:45
Оценка: +1
Здравствуйте, Sakura-chan, Вы писали:

SC>Но это не только по WinAPI вопрос, вроде.


но на две трети — по WinAPI
Делай что должно, и будь что будет
Re[5]: Windows Vista программисту
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 17.01.08 07:12
Оценка: +1
Здравствуйте, Sakura-chan, Вы писали:

SC>Понятно. Но это вовсе не естественно. В смысле — не логично. Юзер юзером, а программа программой. По логике вещей, папка программы — это её папка. Для неё она предназначена.


Программа не человек. Никакой собственности ей не положено. Всё создаваемое программой являются результатом деятельности пользователя, его данными. Пользователь может работать с программой на разных компьютерах, может удалять и возвращать её, программа может использоваться несколькими пользователями, одновременно на одной машине. Всё это делает невозможной запись в Program Files.
Ce n'est que pour vous dire ce que je vous dis.
Re[6]: Windows Vista программисту
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 17.01.08 08:15
Оценка: +1
Здравствуйте, Don Reba, Вы писали:

DR>Программа не человек. Никакой собственности ей не положено. Всё создаваемое программой являются результатом деятельности пользователя, его данными. Пользователь может работать с программой на разных компьютерах, может удалять и возвращать её, программа может использоваться несколькими пользователями, одновременно на одной машине. Всё это делает невозможной запись в Program Files.


Хм, попробую не согласиться с философской частью

Я бы сказал, что программа осуществляет свою деятельность. Но — по командам пользователя. Пользователь не сам создаёт эти данные и часто даже не подозревает, что за данные хранятся физически на диске и как они получились. Так же, как нельзя сказать, что директор фирмы (например M$) в результате своей деятельности создал, скажем, Windows. Он дал команду, может быть очень детальную, но он лично не создавал. Создавали сотрудники.

У программы могут быть свои собственные данные. Которые не предназначены для пользователя, не нужные ему лично и он прямо не просил программу их создавать. Например, какая-то статистика работы, какие-то настройки под конкретный комп, какие-то логи. Это вполне можно считать собственой информацией программы. Не в том смысле, что программа живая и имеет права на файлы, а в том, что эти файлы предназначены только для неё и ей созданы.

А вообще, нужно рассматривать всю папку программы как саму программу — это же её части, по сути. Может быть всё одним файлом, а может — набором файлов и папок. Аналог частей тела человека. Нельзя же сказать, что человеке не должен иметь своего мозга в процессе работы на директора, даже если результат работы принадлежит директору. То есть, программа должна иметь доступ к самой себе. По моему, это логично.

Хотя, конечно, можно (или нужно?) все внутренние данные программы хранить в "All Users", но зто несколько нелогично. All Users позразумевает, что это общая информация всех пользователей. Но это не информация пользователей вовсе — это внутренние данные программы. Они ни кому из пользователей не принадлежат и не нужны лично.
Itsumo sobani, itsumo hitori.
Re[4]: Windows Vista программисту
От: Пётр Седов Россия  
Дата: 17.01.08 23:24
Оценка: +1
Здравствуйте, 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, возможность недоступна».
Пётр Седов (ушёл с RSDN)
Re: Windows Vista программисту
От: SergH Россия  
Дата: 19.12.07 11:36
Оценка:
Здравствуйте, Sakura-chan, Вы писали:

SC>PS: Не уверен, что это сюда вопрос, но вроде больше некуда.


В форум по WinAPI?
Делай что должно, и будь что будет
Re[2]: Windows Vista программисту
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 19.12.07 12:27
Оценка:
Здравствуйте, SergH, Вы писали:

SC>>PS: Не уверен, что это сюда вопрос, но вроде больше некуда.

SH>В форум по WinAPI?

Но это не только по WinAPI вопрос, вроде.
Itsumo sobani, itsumo hitori.
Re: Windows Vista программисту
От: Roman Odaisky Украина  
Дата: 16.01.08 08:32
Оценка:
Здравствуйте, Sakura-chan, Вы писали:

SC>1) Почему не работают некоторые "старые" (для ХР) программы под Вистой и что именно надо менять в них программисту, что бы они работали. Желательно с точки зрения WinAPI и С++.


Потому что там, наконец, взялись за безопасность. Например, программам, запущенным от юзера, не дозволяется (что и логично) лезть в Program Files, что, тем не менее, многие пытаются делать.

SC>2) Какие новые проблемы для разработчика будут, если её поставить на комп разработчика. Например, по типу, что может какая-то версия висты не даст отлаживать или ещё что-то — мало ли что там могли намудрить.


А нахрена она разработчику? Это тестерам надо разные версии всех поддерживаемых ОС.

SC>3) Есть ли стоящие внимания новшества в WinAPI.


Так даже если есть, всё равно ими нельзя пользоваться из соображений обратной совместимости.

Я бы сказал, какая ОС лучше всего для программиста, но в этом форуме это как-то оффтопик ;-)
До последнего не верил в пирамиду Лебедева.
Re[2]: Windows Vista программисту
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 16.01.08 09:37
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

SC>>1) Почему не работают некоторые "старые" (для ХР) программы под Вистой и что именно надо менять в них программисту, что бы они работали. Желательно с точки зрения WinAPI и С++.

RO>Потому что там, наконец, взялись за безопасность. Например, программам, запущенным от юзера, не дозволяется (что и логично) лезть в Program Files, что, тем не менее, многие пытаются делать.

Т.е. в другую чем своя папка? Или нельзя ссылаться на свою папку тоже через "Program Files" (ну или через то что винда даст).

RO>А нахрена она разработчику? Это тестерам надо разные версии всех поддерживаемых ОС.


Ну хотя бы потому, что скоро XP прекратят выпускать. Я слышал, что через месяц (конец февраля). Все новые компы будут с вистой. Рано или поздно ХР будет исчезать же. Ноутбуки уже только с вистой, например, кроме старых партий совсем.

SC>>3) Есть ли стоящие внимания новшества в WinAPI.

RO>Так даже если есть, всё равно ими нельзя пользоваться из соображений обратной совместимости.

Дык опять же Пользуются же новшествами ХР, не смотря на совместимость с 2000 и 98. Чаще всего опционально.
Просто любопытно, что интересного там есть.

RO>Я бы сказал, какая ОС лучше всего для программиста, но в этом форуме это как-то оффтопик


И из под оффтпичной ОС отлаживать проги под винду? Я б не решился
Itsumo sobani, itsumo hitori.
Re: Windows Vista программисту
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 16.01.08 20:01
Оценка:
Здравствуйте, Sakura-chan, Вы писали:

SC>3) Есть ли стоящие внимания новшества в WinAPI.


Транзакционная файловая система, реестр, SMB2.
Ce n'est que pour vous dire ce que je vous dis.
Re[4]: Windows Vista программисту
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 17.01.08 06:47
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO> программа пытается сохранить их куда-то в Program Files\Someprogram\Settings. Естественно, юзеру туда нельзя. Программа должна писать в Documents and Settings\юзер\Application Data\Someprogram. Аналогично, не следует трогать HKLM в реестре.


Понятно. Но это вовсе не естественно. В смысле — не логично. Юзер юзером, а программа программой. По логике вещей, папка программы — это её папка. Для неё она предназначена.

А для общих настроек предлагается "All Users", так?

Всё-таки разделение диска на личные папки не очень умно. В оффтопике всё иначе, а тут очень криво всё. Надо тогда файловая система что б от этот вся плясала. Я же могу и в D:\GAMES\ поствить прогу. И выйдет она вообще вне правил и логики.
Itsumo sobani, itsumo hitori.
Re[5]: Windows Vista программисту
От: Roman Odaisky Украина  
Дата: 17.01.08 09:23
Оценка:
Здравствуйте, 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?). Ага, кажется, понял. Ты о том, куда программе девать данные вроде какого-нибудь внутреннего кеша?
До последнего не верил в пирамиду Лебедева.
Re[6]: Windows Vista программисту
От: Константин Л.  
Дата: 17.01.08 09:41
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, Sakura-chan, Вы писали:


RO>>> программа пытается сохранить их куда-то в Program Files\Someprogram\Settings. Естественно, юзеру туда нельзя. Программа должна писать в Documents and Settings\юзер\Application Data\Someprogram. Аналогично, не следует трогать HKLM в реестре.


SC>>Понятно. Но это вовсе не естественно. В смысле — не логично. Юзер юзером, а программа программой. По логике вещей, папка программы — это её папка. Для неё она предназначена.


RO>Вполне логично. В Program Files юзеру писать нельзя. Из соображений безопасности. Админ поставил программу, а потом пришел Вася, влез в ее настройки и внедрил туда какую-то злонамеренную функциональность. Программа ведь исполняется от имени юзера и может делать всё то, но не более, что позволено самому юзеру.


И что? Все то же самое может случиться с любой папкой. Вся суть pf только в том, что там якобы лежат trusted apps

[]
Re[6]: Windows Vista программисту
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 17.01.08 09:55
Оценка:
Здравствуйте, 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, вроде, но не логично снова — логи это не файлы пользователей, это личные файлы программы.
Itsumo sobani, itsumo hitori.
Re[3]: Windows Vista программисту
От: The Lex Украина  
Дата: 17.01.08 13:09
Оценка:
Здравствуйте, 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>И из под оффтпичной ОС отлаживать проги под винду? Я б не решился


Учу: запускаешь виртуальную машину, ставишь туда винду, ставишь туда студию — и вперед и с песней!
Голь на выдумку хитра, однако...
Re[4]: Windows Vista программисту
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 17.01.08 13:27
Оценка:
Здравствуйте, The Lex, Вы писали:

TL>Вообще-то это еще со времен NT была нормальная практика — просто многие юзеры сидят под админами и "ложили они на всякие дурные правила вражеского мелкософта" — а вот программ, которые этим занимаются... хех... Half-Life 2 и Steam.


Не совсем всё так. Я, например, пытался сидеть под юзером в винде одно время. Проникся вопросом безопасности. Но очень скоро я отвык быстренько, когда часть программ заглючила что нету прав, для инсталяции или настройки системы надо переходить в админа и обратно (а я в то время ещё не знал про два сеанса, либо это была 2000 винда, забыл уже). Короче я быстро отучился от этого.

TL>+1. Но у нас — страна (обе) непуганных пиратов — просьба не поднимать флейм "хорошо/плохо".


Где как. В Питере все пирасткие точки уничтожили пол года назад. Они где-то может и есть, но с первого взгляда не найти. В Москве вот наоборот, всего полно. Странно даже, вроде у нас тут криминальная столица

TL>+1. За то, что все еще есть Win98, я бы, как разработчик "мультиплатформенных виндовых программ", пользователей бы расстреливал! Ну хорошо: частные пусть поживут еще — но корпоративные!!!


Много голов поляжет У нас есть программатор микросхем, который только под 98 работает и всё. И не выгодно покупать винду ХР, потом покупать новый программатор, к нему новое ПО... А уж про висту молучу даже.

TL>ЗЫ: у меня на ноуте — живая Виста!


У меня у рлдственников на рабочем ноуте виста. Причём у неё с ноутом какой-то симбиоз, туда ХР не поставить второй системой — она даже винта не видит -_- И в биосе настроек нету. Что-то где-то закрыто чем-то, явно. Первое же что виста натворила — сказала, что драйвер StarForce от лицензионного диска ей не нравится и всё. Знакомство с вистой началось с ругани, короче ^^ Мне любопытно даже, какой процент моих программ пойдёт под ней.

SC>>И из под оффтпичной ОС отлаживать проги под винду? Я б не решился

TL>Учу: запускаешь виртуальную машину, ставишь туда винду, ставишь туда студию — и вперед и с песней!

Дык а смысл. Можно тогда в той же студии и отлажвиать. Зачем оффтопичная ОС — тормозить комп посредством виртуалки?
Itsumo sobani, itsumo hitori.
Re[2]: Windows Vista программисту
От: Пётр Седов Россия  
Дата: 17.01.08 14:51
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:
SC>>3) Есть ли стоящие внимания новшества в WinAPI.
RO>Так даже если есть, всё равно ими нельзя пользоваться из соображений обратной совместимости.
Можно явно запрашивать указатель на WinAPI-шную функцию с помощью GetProcAddress. Тогда программа будет работать и в старых версиях Windows.
Пётр Седов (ушёл с RSDN)
Re[5]: Windows Vista программисту
От: The Lex Украина  
Дата: 17.01.08 15:36
Оценка:
Здравствуйте, 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 нету? Ну чтобы там упражнения были на закрепление материала. Или ссылки на таковой задачник или сами задачи. Но чтобы (желательно) действительно сильные с тренировочно-педагогической точки зрения.
Голь на выдумку хитра, однако...
Re[3]: Windows Vista программисту
От: Roman Odaisky Украина  
Дата: 17.01.08 21:29
Оценка:
Здравствуйте, Пётр Седов, Вы писали:

SC>>>3) Есть ли стоящие внимания новшества в WinAPI.

RO>>Так даже если есть, всё равно ими нельзя пользоваться из соображений обратной совместимости.
ПС>Можно явно запрашивать указатель на WinAPI-шную функцию с помощью GetProcAddress. Тогда программа будет работать и в старых версиях Windows.

Э-э... А что, собственно, делать, если она их там не найдет?
До последнего не верил в пирамиду Лебедева.
Re[7]: Windows Vista программисту
От: Roman Odaisky Украина  
Дата: 17.01.08 21:40
Оценка:
Здравствуйте, 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, вроде, но не логично снова — логи это не файлы пользователей, это личные файлы программы.


К общим настройкам положено иметь доступ только админу. Логи/статистику/кеш следует передавать по определенному протоколу заранее запущенному процессу, который запишет данные уже со своими правами. Так сделан системный лог в большинстве ОС, например.
До последнего не верил в пирамиду Лебедева.
Re[8]: Windows Vista программисту
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 18.01.08 08:35
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Как ни крути, приходится съезжать на священные войны. Всё это давно в оффтопике есть: четкие привилегии на разные директории и возможность программе исполняться с привилегиями, отличными от привилегий юзера. Поставь себе Убунту, поиграйся. Это, кстати, помогает писать более хорошие программы для MS Windows. Ну, и есть риск на Windows забить


Уже давно поставил, тока КУбунту ^^ Я как раз к тому и клоню (слегка знаю линукс), что там проще. Можно и прогу открыть с правами админа, не выходя из юзера. Я типа критикую винду слегка

RO>По-хорошему, так и должно быть. В (нет, только не СВ!) некоторых других ОС так и есть: юзерам можно только в свою директорию, разве что еще во временную.


Неа! Тогда придётся иметь только один логический диск. И один винт всего. Любой другой винт не может быть внутри C:\D&S\User и будет доступен тока админу. В винде физическая ФС, а в оффтопике — виртуальная.

RO> К общим настройкам положено иметь доступ только админу.


А всегда ли это правильно? Смотря что за прога — админ может стать человеком на побегушках по фирме
(что-то жёсткий оффтопик пошёл )

RO> Логи/статистику/кеш следует передавать по определенному протоколу заранее запущенному процессу, который запишет данные уже со своими правами.


Но это же через .. одно место Хотя мысль здравая, но жутко криво выглядит

RO> Так сделан системный лог в большинстве ОС, например.


В винде это Журналы Событий. Но что-то мне не очень нравится идея. Они ограничены, описания как-то регистрировать надо... Куда проще тупо писать текстовый файл. Можно что хочешь писать, создавать новые файлы по датам итд. Быстро и просто, ничего не надо. Про линукс не знаю — я из программирования там знаю тока функцию fork()
Itsumo sobani, itsumo hitori.
Re[6]: Windows Vista программисту
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 18.01.08 08:50
Оценка:
Здравствуйте, The Lex, Вы писали:

TL>ЗЫ: но необходимости программам "писать только куда надо" это не отменяет!


Кстати, а где эти самые рекомендации есть?

TL>Дык я не про продажу — я про использование... Не знал?


Я стараюсь перейти на бесплатное, вот

TL>Дык это rtfm


RTFM ноута содержит тока "какой кнопочкой включить ноутбук" для блондинок ^^

TL>Лично я скорее с обратной ситуацией сталкивался, когда новое железо на старых чипсетах + ОС 2000 не хотело работать "по полной" — зато на XP — "аж бегом!" И я, например, в XP люблю ее "мультяшные окна" — и не люблю когда отключают обратно в "серое казарменное безмолвие" (к)


Впервые увидев ХР я назвал это "клоунский интерфейс" ^^ Сейчас привык, но долго плевался.

SC>>Дык а смысл. Можно тогда в той же студии и отлажвиать. Зачем оффтопичная ОС — тормозить комп посредством виртуалки?

TL> Ну дык зато "под ОС" — причем "ОС" — с Особо Больших буков.

<мечты>Вот бы под неё научиться писать тоже</мечты>

TL>ЗЫ: а, например, как эффективно работать "в обратном порядке" — т.е. писать под "большую ОС", но работать под виндой?


Пока что kubuntu у меня тока под qemu живёт. Разглядываю ^^
Itsumo sobani, itsumo hitori.
Re[5]: Windows Vista программисту
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 18.01.08 08:57
Оценка:
Здравствуйте, Пётр Седов, Вы писали:

Отличные варианты. Хочу тока спросить по первому. У меня первая мысль была другая:


hDLL = LoadLibrary ("библиотека.dll");
WindowsXPfunc = (что-то)GetProcAddress (hDLL, "WindowsXPfunc"); // Функция с 2 параметрами
if (!WindowsXPfunc) WindowsXPfunc = Dummy_2p;
...
void __stdcall Dummp_1p (int a) { return; }
void __stdcall Dummp_2p (int a, int b) { return; }


В таком способе есть какой недостаток?
(кстати, так можно и сделать свою реализацию, упрощённую или замену)
Itsumo sobani, itsumo hitori.
Re[10]: Windows Vista программисту
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 18.01.08 13:38
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Из консоли: runas/user:<user> <command>

DR>Из GUI: зажимаешь шифт, кликаешь правой кнопкой, выбираешь Run as... в меню.

Хе... Тогда беру свои слова обратно.
Itsumo sobani, itsumo hitori.
Re[4]: Windows Vista программисту
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 18.01.08 13:39
Оценка:
Здравствуйте, The Lex, Вы писали:

TL>ЗЫ: кстати, кто в курсе: когда объявлены предполагаемые окончания продаж XP?


Вот тут сроки написаны.
http://forums.microsoft.com/TechNet-RU/ShowPost.aspx?PostID=2697345&amp;SiteID=40
Если лень, то выкопирывоваю кусочками


Во-первых, Windows XP не прекратит своего существования 30 июня 2008 года. На эту дату назначено прекращение поставок OEM-версий XP изготовителям компьютерных устройств для предустановки на новые ПК и продажи через розничную сеть.

Что же касается прекращения поддержки Windows XP, то здесь компания Microsoft отмечает, что основная поддержка этой операционной системы прекратится в апреле 2009 года, а расширенная поддержка, связанная с исправлением ошибок безопасности ОС и других важных ошибок, закончится в 2014 году.

Direct OEM и Retail License будет доступна до 30 июня 2008г
System Builder License будет доступна до 31 января 2009г

Itsumo sobani, itsumo hitori.
Re[10]: Windows Vista программисту
От: Roman Odaisky Украина  
Дата: 18.01.08 22:58
Оценка:
Здравствуйте, Don Reba, Вы писали:

SC>>Уже давно поставил, тока КУбунту ^^ Я как раз к тому и клоню (слегка знаю линукс), что там проще. Можно и прогу открыть с правами админа, не выходя из юзера. Я типа критикую винду слегка :)


DR>Из консоли: runas/user:<user> <command>

DR>Из GUI: зажимаешь шифт, кликаешь правой кнопкой, выбираешь Run as... в меню.

Это аналог su. Аналога sudo в MS Windows нет.
До последнего не верил в пирамиду Лебедева.
Re[6]: Windows Vista программисту
От: Пётр Седов Россия  
Дата: 19.01.08 16:18
Оценка:
Здравствуйте, Sakura-chan, Вы писали:

SC>Отличные варианты. Хочу тока спросить по первому. У меня первая мысль была другая:


SC>
SC>hDLL = LoadLibrary ("библиотека.dll");
SC>WindowsXPfunc = (что-то)GetProcAddress (hDLL, "WindowsXPfunc"); // Функция с 2 параметрами
SC>if (!WindowsXPfunc) WindowsXPfunc = Dummy_2p;
SC>...
SC>void __stdcall Dummp_1p (int a) { return; }
SC>void __stdcall Dummp_2p (int a, int b) { return; }
SC>


SC>В таком способе есть какой недостаток?

Я не вижу здесь никаких недостатков. Например, так можно сделать с HeapCompact:
static UINT WINAPI HeapCompact_Fallback(HANDLE hHeap, DWORD dwFlags)
{
  // ничего не делать
  return 0;
}

typedef UINT (WINAPI * PHeapCompactProc)(HANDLE hHeap, DWORD dwFlags);
static PHeapCompactProc s_pHeapCompact = NULL;

// вызывается в начале работы программы
void Init()
{
  assert(s_pHeapCompact == NULL);
  HINSTANCE hLib = GetModuleHandle(L"kernel32.dll");
  assert(hLib != NULL);
  s_pHeapCompact = reinterpret_cast<PHeapCompactProc>(GetProcAddress(hLib, "HeapCompact"));
  if (s_pHeapCompact == NULL)
  {
    // старая Windows
    s_pHeapCompact = &HeapCompact_Fallback;
  }
}

LRESULT CALLBACK HandleMessage(HWND hWindow, UINT MessageType, WPARAM wParam, LPARAM lParam)
{
  switch (MessageType)
  {
  ...
  case WM_COMPACTING:
  {
    HANDLE hProcessHeap = GetProcessHeap();
    (*s_pHeapCompact)(hProcessHeap, /*dwFlags:*/0);
    return 0;
  }
  ...
  }
}


Но такой способ не всегда годится. Например, хочется сделать top-level окно непрямоугольной формы. Если user32.dll экспортирует функцию SetLayeredWindowAttributes, то лучше использовать её. Если она отсутствует, то придётся создать GDI-регион и назначить его окну вызовом функции SetWindowRgn.
Пётр Седов (ушёл с RSDN)
Re[2]: Windows Vista программисту
От: Sakura-chan Россия http://sakuranoanime.ru
Дата: 20.01.08 05:35
Оценка:
Здравствуйте, dip_2000, Вы писали:

_>http://www.oszone.net/4364/Windows_Vista

_>http://www.oszone.net/display.php?id=4523&amp;do=print
_>http://www.microsoft.com/technet/technetmag/issues/2007/04/VistaKernel/default.aspx?loc=ru
_>там много рекламной шелухи, но очень разносторонне, и дальше ясно будет куда копать.

Действительно, интересные статьи, спасибо!
Itsumo sobani, itsumo hitori.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.