Jul 10

STOP: 0x0000007F (BSoD/Син Екран)

[UPDATED: 2010.07.19]

Доста интересна случка имах преди време: трябваше да погледна един компютър (Windows XP), който от около месец проявява един много досаден симптом – рестартира се спонтанно. Причините? Вероятно са много 🙂 В такива моменти човек все трябва да започне от някъде. Аз тръгнах от тук: какво значи “спонтанно рестартиране”?

Но първо нека видим пътищата, през които преминава един “спонтанен” рестарт (обобщавам два случая):

  1. Windows работи -> хардуерна случка/проблем -> блокиране на ОС или мигновено рестартиране на машината;
  2. Windows работи -> възникване на неочакван проблем в ядрото (Kernel-а) -> запис на minidump файл в %systemroot%\minidump -> рестартиране на машината.

В Windows Minidump е файл, в който се записва информация за състоянието на регистрите на процесора, call stack-а, заредените модули и др. в момента на възникване на фаталната грешка. След това файлът може да се анализира с debugger и евентуално да се открие и отстрани причината.

Знаейки това, можем да категоризираме причините:

  1. Хардуерен проблем (лошо захранване/лош контакт между някой от компонентите и съответния му слот/бъгава памет/издути кондензатори/студена спойка и т.н.) – тук, за съжаление, няма да имаме никаква следа в логовете на Windows;
  2. Софтуерен проблем (проблемни драйвери) – в този случай ще се генерира minidump;
  3. Микс: хардуерен проблем предизвиква софтуерния – тук отново имаме сламка: генерира се minidump.

Continue reading

Jun 03

Мистерия: if (something==NULL) или if (NULL==something)?

Нека разгледаме следния програмен отрязък:

[code lang=”C”]if (NULL == someApiPointer)
{
//do something here
};[/code]

Защо сравняваме NULL със стойността на someApiPointer, а не обратното – както сани учили в училище и както изглежда по-логично?
Когато за първи път срещнах подобна конструкция си помислих, че има нещо специално в нея – прави се от гледна точка на сигурността или пък е нов стил на писане?

Continue reading

Sep 11

How-To: Инсталиране на .inf файлове през Command Prompt чрез RunDLL32.exe

Сигурно знаете, че .INF файловете в Windows служат и за инсталиране на драйвери. Те съдържат информация за това какво, къде, как и под какво име да бъде копирано и т.н. Ако отворите папката с драйверите за Вашата LAN карта (например) ще намерите разнообразни файлове, но и поне един .INF. Избирайки го с десен бутон на мишката ще видите в контекстното му меню опция “Install”. Ако я изберете Windows ще копира необходимото в %SYSTEMROOT%\System32, %SYSTEMROOT%\inf ит.н. От тук на сетне Windows ще знае какво да прави, когато физически добавите LAN картата, чиито драйвери инсталирахте преди малко.

Често .INF файловете се използват и при други случаи. В статията “Интересен Син екран или какви са последствията от кирилицата на ИнжИнера”съм добавил архив на фонетична клавиатурна подредба. Ако го отворите ще видите само три файла: bpnom.inf, kbdbp$$$.dll и инструкция за инсталация, в която пише:маркирайте .INF файла и да щракнете върху INSTALL:

Това обаче е GUI варианта. Ами ако трябва да инсталираме клавиатурната подредба чрез startup скрипт, без намесата на потребителя и неговата мишка?

В статията ще разгледаме именно автоматизираната инсталация на фонетичната клавиатурна подредба. По аналогичен начин може да използвате идейката за подобни случаи.

Continue reading

Aug 19

The device driver for the [network adapter name] is preventing the machine from entering Standby or Hibernation

   От време на време ми се случва точно това. А аз активно използвам режима Hibernate и не мога да се лиша от тази благинка – не обичам, а и не ми се налага да си рестартирам лаптопа често (въпреки, че използвам Windows).

Пълното съобщение е:

The device driver for the network adapter name is preventing the machine from entering Standby or Hibernation. Please close all applications and try again. If the problem persists, you may need to update the driver.

Continue reading

Jul 25

Безплатен MySQL под Windows за сметка на?

MySQL е доста разпространена база данни. Причините са много: безплатен (само т.нар. Community Server), с отворен код, има версии за линукс и Windows, производителен е, “просто работи”,работи в мрежаи т.н. Под Windows можете да го инсталирате като самостоятелен продукт или в комплект с php иApache(wamp, xampp). Често се инсталира на работна станция от хора, които разработват web или други приложения.

И всичко щеше да е много хубаво, ако след излизане от режим hibernate не ми се случваше това:

Continue reading

May 21

Show Quick Launch: Cannot Create Toolbar

   Представете си следната ситуация: мигрирате един потребителски акаунт от един домейн в друг с ADMT (Active Directory Migration Tool). След като станцията се е присъединила към новия домейн потребителя “Х” влиза със своите потребителско име и парола. Профилът му се зарежда, но или не се вижда Quick Launch, или липсват иконите, които обикновено стоят в тази област. При опит за показване на Quick Launch се появява съобщение за грешка: “Cannot Create Toolbar”.

А папката с Quick Launch си е на мястото: “%APPDATA%\Microsoft\Internet Explorer\Quick Launch”. Иконите на потребителя са вътре в директорията.

Quick Launch обикновено се свързва с лентата вдясно от старт менюто в Windows. По подразбиране има изведени преки пътища към Internet Explorer и Show Desktop. Дефакто съдържанието на тази лента се намира в обикновена папка, чийто път обикновено е “%APPDATA%\Microsoft\Internet Explorer\Quick Launch”.

Оказва се, че Quick Launch е доста удобно място, където можете да сложите програмите, с които работите често. Има една малка поробност, която съм забелязал с годините. За потребителите си е благинка да слагат иконки по десктопа си. Цъкат на тях и стартират любимите си приложения. Обаче – работният плот “обича” да се обновява често (refresh). В този момент Windows издирва изпълнимия файл за всеки shortcut на екрана, от където извлича неговата икона. Е…сещате ли се, че това е доста бавничко? А ако нямате много памет си е направо досадно.

Е, в Quick Launch нещата явно са по-различни (по мои наблюдения) и е забележимо по-бързо ако слагате икони там. Моят съвет е да трупате приложенията, с които работите често в Quick Launch, вместо на Desktop-a. Хем си виждате целия тапет на работния плот, хем е малко по-бързо 🙂

Решението:

Continue reading

Mar 07

How-To: Стартиране на Explorer.exe като отделен процес

[ UPDATED – 2009.03.09 ]

Explorer.exe е важен компонент на операционната система Windows. Приложението е многонишково(multithreaded application) и изпълнява две основни роли:

  • (GUI) Shell – съдържа графичните (и неграфичните)инструменти,чрез които потребителят взаимодейства с операционната система: Desktop, Context Menus, Start Menu, TaskBar, System Tray и т.н.
  • File Manager – познатият на всички ни файлов мениджър

Особеното е, че Explorer.exe се стартира еднократно за всяка потребителска конзолна или терминална сесия. При зареждането си той проверява дали вече е стартиран:

  1. АКО НЕ Е- explorer.exe се зарежда като шел (shell) и потребителят вижда десктопа, иконите по него, стартовото меню, лентата със задачите и системния трей.
  2. АКО Е- зарежда се файловия мениджър, който всички познаваме като Windows Explorer / My Computer

Continue reading

Feb 21

How-To: Инсталиране на PHP под Windows и IIS

Ще се постарая тази статия да не е поредната на тема “Инсталация на PHP под Windows”. Казвам го, защото обикновено стъпките са непълни, липсва ценна информация и възникват неочаквани неща, за които трябва да се ровите по форумите. Освен това не съм привърженик на принципа “цъкай без да знаеш какво значи това, което цъкаш” 🙂

Какво е PHP?

Continue reading

Feb 16

Параметри при стартирането на Explorer.exe

Explorer.exe е неразделна част от операционните системи Windows. На всичкиВи той е познат като файловия мениджър, който стартирате чрез иконката My Computer, Windows Explorer или клавишната комбинация WIN+E (WIN е клавиша от клавиатурата, обозначен със знаменцето на Windows). Дефакто Explorer.exe е приложение, което се намира в %systemroot%.

Стартиран нормално виждате стандартния файлов мениджър. Интересно е какви параметри можем да подадем на explorer.exe така, че да контролираме неговото поведение.

Continue reading

Jan 10

Изпълняване на .php скриптове вместо .vbs под Command Prompt?

[ UPDATED – 11.01.2009 ]

Почти съм убеден, че повечето от Вас, които пишете скриптове за управление/конфигуриране на компютри под Windows използват VBScript. Защо? Защото го има от мноооого отдавна, защото има купища информация за него в Интернет, заедно с безброй примерии защото е почти “прост” за използване … даже прекалено? Нека си признаем – като скриптов език не е нищо особено. Основните му предимства са три (според мен!):

  • вграден е в операционната система от Windows 95/98 насам;
  • лесно се инстанциират ActiveX/COM обекти (дефакто в това му е силата…но и слабото място);
  • подписване на скрипта с цифров сертификат (codeSigning);

Continue reading