пятница, 27 марта 2015 г.

Пропадает доступ к папкам (принтерам) Windows 7 из Windows XP (2003)

Проблема: После очередного автоматического обновления Windows перестал печатать принтер пользователя из терминального сеанса. Локально печатает, а из терминала - нет.

Кроме этого, нельзя зайти по сети на свою-же машину из терминального сеанса - "Нет доступа к xxx. Возможно у вас нет прав на использование этого сетевого ресурса. Обратитесь к администратору этого сервера для получение соответствующих прав доступа. Указанный сервер не может выполнить требуемую операцию."

Машина пользователя - Windows 7, сервер терминалов - Windows 2003 Server.
Компьютеры в домене, все права выставлены, как положено, время синхронизировано с сервером.
Все работало несколько лет подряд, и "внезапно" в обед перестало.

В журнале событий при каждой попытке фиксируется следующее:

"Ошибка srv. event id 2017. Сервер не смог выделить память из невыгружаемого пула памяти, так как достигнут указанный в конфигурации верхний предел.

The server was unable to allocate from the system nonpaged pool because the server reached the configured limit for nonpaged pool allocations.
"


Решение: Найдено тут и тут.
Мы должны указать нашей системе на Windows 7 что мы хотим  использовать ее в качестве файл-сервера, чтобы она выделила под это ресурсы.
  Изменяем 1 параметр:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCache
и меняем значение на “1

Изменяем 2 параметр:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\size
и меняем значение на "2" или “3“.

Для справки:

вторник, 24 марта 2015 г.

Фильтр в запросе по списку документов (прямые запросы)

спДок = СоздатьОбъект("СписокЗначений");
тз.Выгрузить(спДок,,,"Док");
спДок.ДобавитьЗначение(РН);

//
ТекстЗапроса = "
    |SELECT
    |    Рег.IDDoc as [Док $Документ],
    |    Рег.IDDocDef as Док_вид,
    |    $Рег.СуммаСНДС as [СуммаСНДС]
    |FROM
    |    $Регистр.ОборотыТМЦ as Рег
    |WHERE
    |    Рег.IDDoc IN (SELECT Val FROM #спДок)
";

рс.УложитьСписокОбъектов(спДок, "#спДок");
тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
тз.ВыбратьСтроку();


* имя таблицы должно начинаться с символа «#». подробное описание в синтакс-помощнике и в примерах на скрипт-кодинге.
 

Запрос по документу c помощью 1С++ (прямой запрос)

рс = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "
    |SELECT
    |    Рег.IDDoc as [Док $Документ],
    |    Рег.IDDocDef as Док_вид,
    |    $Рег.СуммаСНДС as [СуммаСНДС]
    |FROM
    |    $Регистр.ОборотыТМЦ as Рег
    |WHERE
    |    Рег.IDDoc = :ВыбДок
";

рс.УстановитьТекстовыйПараметр("ВыбДок", РН);   
тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
Возврат тз.итог("СуммаСНДС");

Получить таблицу значений с подчиненными документами определенного вида


рс = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "
    |SELECT
    |    Жур.IDDoc as [Док $Документ],
    |    Жур.IDDocDef as Док_вид
    |FROM
    |    _1SJourn as Жур
    |INNER JOIN
    |    _1SCRDOC as Отбор ON Отбор.ChildID=Жур.IDDoc AND Отбор.MDID=0 AND Отбор.ParentVal=:ВыбДок*
    |WHERE
    |    Жур.IDDocDef=$ВидДокумента.РасходнаяНакладнаяКор
 

    |    AND Жур.Closed & 1 = 1";
рс.УстановитьТекстовыйПараметр("ВыбДок", РН);   
тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);



где РН - переменная с типом значения "Документ.РасходнаяНакладная",
а подчиненные документы требуются только с видом "РасходнаяНакладнаяКор"
и Жур.Closed & 1 = 1 - указание отбирать только проведенные документы (в таблице _1SJourn есть поле Closed, первый бит которого отвечает за проведенность документа)

пятница, 20 марта 2015 г.

Запуск программы с правами администратора пользователем не из группы администраторов


Требуется: На рабочей станции пользователь без привилегий должен запускать программу, которая работает только с правами администратора.
 
Стандартное решение: Воспользоваться штатной программой run as, в самом простом виде имеющей синтаксис следующего вида RUNAS  /user:\ program (for example cmd). Пароль можно передать с помощью конвейера echo |, или с помощью ключа /savecred.  Но у этого решения есть существенный недостаток, пароль передается в открытом виде, что недопустимо. Конечно, можно написать скрипт с помощью VBS и зашифровать его. Но мы не будем заниматься этим, а воспользуемся сторонними решениями, так называемыми 3-rd party программами.

Сторонние решенияCPAU (http://www.joeware.net/freetools/tools/cpau/) и RunasSpc (http://www.robotronic.de/runasspcEn.html).
Эти программы позволяют шифровать строку запуска, и затем уже запускать зашифрованный файл.

Примеры:

вторник, 17 марта 2015 г.

Проблема с переключением языка при входе в систему / изменение языка по-умолчанию.

Проблема: Раскладка при входе - аглицкая, а пароль - на русском. Или наоборот.
Индикатор RU / EN не отображается, раскладка стандартными комбинациями не переключается.

Решения: 
1. Если логин пользователя на русском:
A=ALT+0192
д=ALT+0228
м=ALT+0236
и=ALT+0232
н=ALT+0237
и=ALT+0232
с=ALT+0241
т=ALT+0242
р=ALT+0240
а=ALT+0224
т=ALT+0242
о=ALT+0238
р=ALT+0240

Остальные коды ASCII тут

2. Установка по-умолчанию и настройка внешнего вида экрана приветствия.

1. Параметры реестра, отвечающие за раскладку клавиатуры при входе в систему находятся в разделе
HKU\.DEFAULT\Keyboard Layout\Preload 
Там надо на первую позицию поместить желаемую раскладку - 00000409 (английская раскладка) или 00000419 (русская).

2. Можно внести в реестр необходимые параметры:
а) выполнив следующие команды:
reg add "HKU\.DEFAULT\Keyboard Layout\Preload" /v 1 /t REG_SZ /d 00000409 /f
reg add "HKU\.DEFAULT\Keyboard Layout\Preload" /v 2 /t REG_SZ /d 00000419 /f

б) импортировав в реестр
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Keyboard Layout\Preload] 
;Английская раскладка
 "1"="00000409" 
;Русская раскладка
"2"="00000419" 
;Раскладка с номером 1 будет предлагаться по умолчанию

3. Чтобы сменить сочетание клавиш, переключающих раскладку, выполните команду 
reg add "HKU\.DEFAULT\Keyboard Layout\Toggle" /v Hotkey /t REG_SZ /d 1 /f 
выделенный красным параметр можно менять (1 - ALT+SHIFT, 2 - CTRL+SHIFT). Чтобы переключение работало, необходимо наличие как минимум двух раскладок. См. пункт 2.

P.S. Windows 7/8 - параметры по-умолчанию можно установить через панель управления.

пятница, 6 марта 2015 г.

Драйвер для АТС Panasonic KX-TDA (Windows 8 x32)

UPD. Мне нужен был драйвер для Windows 8 x32, подошел старый драйвер для Висты, так что это резервный вариант

http://www.k-max.name/ats/drajver-x64-dlya-ats-panasonic-kx-tda/

и еще много ссылок:
http://www.proftelecom.by/manual_panasonic_kx_TDA_100.htm
http://www.telemonter.narod.ru/prog/index.html
http://forum.ru-board.com/topic.cgi?forum=8&topic=3739&start=940
http://wiki.dieg.info/mini_ats_panasonic_kx-tda100

Ошибка "IP-адрес, указанный для этого сетевого адаптера, уже назначен другому адаптеру"

Проблема: При установке IP-адреса появляется ошибка «IP-адрес, указанный для этого сетевого адаптера, уже назначен другому адаптеру имя адаптера. Имя адаптера скрыто от папки «Сетевые подключения», поскольку он либо физически отсутствует в компьютере. Если обоим устройствам назначен один и тот же адрес, только одно из них сможет его использовать. Это может привести к неполадкам в работе системы. Ввести другой IP-адрес для этого адаптера в список IP-адресов в окне дополнительных параметров?».

Решение: Нужно удалить отключенный и не видимый в диспетчере устройств сетевой адаптер.
1. «Пуск» -> «Выполнить» -> cmd
2. Включаем отображение скрытых устройств: set devmgr_show_nonpresent_devices=1
3. Запускаем «Диспетчер устройств: Start DEVMGMT.MSC
4. Открываем «Вид» -> «Показать скрытые устройства»
5. В разделе «Сетевые адаптеры» находим отключенный и удаляем.

четверг, 5 марта 2015 г.

Проблема "Вход в систему выполнен с временным профилем"

Проблема: У одного сотрудника при входе ошибка «Вход в систему выполнен с временным профилем». Со всеми вытекающими - всё создаваемое в процессе работы на рабочем столе, в «Моих документах» и т.д. при выходе удаляется. Удаление существующего профиля ни к чему не приводило.

Решение: довольно простое: лезем в реестр, открываем HKEY_LOCAL_MACHINE/\SOFTWARE/\Microsoft/\Windows NT/\CurrentVersion/\ProfileList и среди папок профилей, начинающихся на «S-1-5», ищем нужный. При открытии раздела смотрим на параметр ProfileImagePath, в нем будет указан путь к профилю, например, C:/\Users/\User. Нашли ветку? Удаляем вместе со всем содержимым.

Теперь можно входить под этим пользователем — система создаст новый нормальный профиль.

вторник, 3 марта 2015 г.

База данных диспетчера учетных записей на сервере не содержит записи для регистрации компьютера через доверительные отношения с этой рабочей станцией

Проблема:
Приехал ноут из ЦО, из старого домена не выводили.
При попытке авторизации в домене, появляется сообщение - "База данных диспетчера учетных записей на сервере не содержит записи для регистрации компьютера через доверительные отношения с этой рабочей станцией"

Причина:
В моем случае причина была банальна - отключена учетная запись компьютера на контролере домена, на котором и была попытка авторизации.

Решение:
Включить учетную запись компьютера в ActiveDirectory.

Альтернативные решения: