вторник, 23 июня 2020 г.

Windows и Profilelist

На случай если профиль пользователя по какой-то причине повредился (не нажимается кнопка «Пуск» или еще какие-то проблемы), то можно попробовать пересоздать профиль пользователя. Посмотреть список SID профилей можно в реестре Windows по пути

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

В ветке Profilelist ищем SID профиля, который мы хотим пересоздать. SID текущего пользователя можно узнать командной:

Whoiam /user

Переименовываем необходимый SID профиля. Далее остается зайти под профилем, который мы пересоздаем и скопировать данные из старого профиля, в новый, только что созданный.


понедельник, 15 июня 2020 г.

Задействуем локальный архив в Outlook 2016 Pro Plus для архивации устаревших сообщений

Статья является руководством задействования локального архива в Outlook 2016 Pro Plus. Опубликована как "напоминалка" для автора.
Скажем нам необходимо за архивировать сообщения во всех папках месячной давности и старше. Перейдем к настройке. На ленте выбираем меню «Папка» в разделе «Свойства» нажимаем кнопку «Настройка автоархивации» (Смотрите рисунок 1).

Рисунок 1. Запуск окна настройки архивации

В свойствах папки «Входящие» на вкладке «Автоархивация» необходимо выбрать пункт «Архивировать элементы папки с настройками по умолчанию» и нажать кнопку «Настроить архив по умолчанию...»(Смотрите рисунок 2).

Рисунок 2. Архивация с настройками по умолчанию

В открывшемся окне «Архивация» необходимо установить галку «Автоархивацию каждые 1 день» (Смотрите рисунок 3 пункт 1), установить галку «Удалять элементы старше 1 месяца» (Смотрите рисунок 3 пункт 2), снять галку «Запрос перед автоархивацией» (Смотрите рисунок 3 пункт 4), нажать кнопку «Применить настройки ко всем папкам» (Смотрите рисунок 3 пункт 3).

Рисунок 3. Настройки автоархивации

Последнее что необходимо сделать это на ленте выбрать меню «Файл», потом на ленте выбрать меню «Сведения», кнопка «Инструменты» и выбрать пункт меню «Удалять старые элементы» (Смотрите рисунок 4).

Рисунок 4. Задействование параметров почтового ящика

В открывшемся окне «Архивация» необходимо выбрать пункт «Архивировать все папки согласно настройкам автоархивации» и нажать кнопку «Ok» (Смотрите рисунок 5). 

Рисунок 5. Архивация почты


Попытка установки .NET Framework 3.5 на Windows 10 64 bit выдает ошибку 0x800F0950

Столкнулся с такой проблемой, что программа AutoCad 2011 для своей установки требовала установку .NET Framework 3.5. При попытке установить .NET Framework 3.5 выдается ошибка 0x800F0950 и установка не происходит. Проблему не решила и попытка скачивания и установки .NET Framework 3.5 с сайта Microsoft. Так же не удалось установить .NET Framework 3.5 через включение и отключение компонентов Windows 10 (Смотрите рисунок 1).

Рисунок 1. Попытка установки .NET Framework 3.5 через "Включение и отключение компонентов Windows"

Проблему получилось решить воспользовавшись командным инструментом под названием Deployment Image Servicing and Management (DISM). Идея взята с сайта Microsoft. Скачайте образ полной версии Windows 10. Из это образа мы будем устанавливать .NET Framework 3.5.
Установите программу Daemon Tools Lite или Virtual CloneDrive и смонтируйте образ Windows 10. Убедитесь, что в смонтированном образе есть каталог sources\sxs. В каталоге должны находится пакеты .NET Framework 3.5 (Смотрите рисунок 2)

Рисунок 2. Обзор смонтированного образа Windows 10


Далее необходимо запустить командную строку и выполнить команду на установку (Смотрите рисунок 3).

DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:d:\sources\sxs


Рисунок 3. Выполнение команды на установку .NET Framework 3.5

воскресенье, 14 июня 2020 г.

Установка родной программы сканирования для HP LaserJet M1536dnf

Часто сталкивался с такой проблемой, что при установки полнофункционального программного обеспечения и драйверов для HP LaserJet M1536, программа сканирования не устанавливалась. В таком случае программу для сканирования можно установить из командной строки. Скачайте полнофункциональное ПО и распакуйте скаченный файл с помощью архиватора 7zip. 
Используя командную строку перейдите в папку Setup\Product\Scan_App\, где лежит файл HPScanLJM1530.msi. Выполните следующую команду на установку программы для сканирования:

msiexec.exe /i HPScanLJM1530.msi /qb TRANSFORMS=HPScanLJM1530_1049.mst

Далее следуйте подсказкам мастера установки программы для сканирования. Драйвера для HP LJ M1536 на сканирование и печать должны быть уже установлены заранее.

Важно! Если при выполнение команды уставки программы сканирования вы получаете сообщение контроля учетных записей "Это приложение заблокировано в целях защиты. Администратор заблокировал выполнение этого приложения. За дополнительными сведениями обратитесь к администратору.", то вам необходимо запустить командную строку от имени администратора, т.е. в заголовке окна командной строки должно быть написано слово Администратор. Далее выполняете действия, которые описаны выше по тексту. 
Так же вы можете воспользоваться советом анонимного комментатора к этой статье, который предложил изменить текущий год в системе Windows 10 на год 2011 и потом выполнить команду установки программы сканирования. Я проверил данный способ, он рабочий.  
Так же вы можете воспользоваться информацией с сайта remontka.pro, на нем рассматриваются другие способы решения проблемы блокировки приложения.

Удалить установленную программу сканирования можно так же из командной строки. Для этого необходимо выполнить следующую команду:

msiexec.exe /x HPScanLJM1530.msi /qb

пятница, 12 июня 2020 г.

[Turbo Pascal][Dos Box] Пример кода по работе с текстовым файлом

Пример кода по записи строки в текстовый файл. Получения кода ошибки, если такая возникнет в результате работы с файлом. Создание одно секундной задержки при каждом тике таймера прерываний.

{$M $1000,0,0}
program test2;
uses crt, dos;
var	
	OldText: Procedure;
	filetext: text;
	fname: string;
	str: string;
	t: word;
 
function GetIOErrorCode:integer;
begin
	GetIOErrorCode := IOResult;
end;
 
function ConvIOErrorCodeToStrMsg(ioerrorcode:integer):string;
begin
	case ioerrorcode of 
		0: ConvIOErrorCodeToStrMsg := 'Error not found';
		3: ConvIOErrorCodeToStrMsg := 'Path not found';
		4: ConvIOErrorCodeToStrMsg := 'Too many open files';
		5: ConvIOErrorCodeToStrMsg := 'File access denied';
		12: ConvIOErrorCodeToStrMsg := 'Invalid file access code';
		16: ConvIOErrorCodeToStrMsg := 'Cannot remove current directory';
		100: ConvIOErrorCodeToStrMsg := 'Disk read error';
		101: ConvIOErrorCodeToStrMsg := 'Disk write error';
		102: ConvIOErrorCodeToStrMsg := 'File not assigned';
		103: ConvIOErrorCodeToStrMsg := 'File not open';
		104: ConvIOErrorCodeToStrMsg := 'File not open for input';
		105: ConvIOErrorCodeToStrMsg := 'File not open for output';
		106: ConvIOErrorCodeToStrMsg := 'Invalid numeric format';
		152: ConvIOErrorCodeToStrMsg := 'Drive not ready';
	end;
end;	
 
procedure savestringtofile(var f:text; var name, s:string);
begin
	writeln;
	{$I-}
	assign(f, name);
	append(f);
	writeln(f, s);
	close(f);
	write('Message savestringtofile procedure: ' + ConvIOErrorCodeToStrMsg(GetIOErrorCode));
	{$I+}
end;
 
procedure createfile(var f:text; var name:string);
begin
	writeln;
	{$I-}
	assign(f, name);
	rewrite(f);	
	close(f);
	write('Message createfile procedure: ' + ConvIOErrorCodeToStrMsg(GetIOErrorCode));
	{$I+}
end;
 
{$F+}
Procedure Text; Interrupt;
Begin
	inc(t, 11);
	if t>=100 then 
	begin
		dec(t, 100);
		savestringtofile(filetext, fname, str);
	end;
 
	Inline($9C);
	OldText;
End;
{$F-}
 
Begin
 
	fname := 'text.txt';
	str := '1234567890';
	t := 0;
 
	createfile(filetext, fname);
 
	GetIntVec($8,@OldText);
	SetIntVec($8,Addr(Text));
 
	Keep(0);
End.