Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/64: Рейтинг темы: голосов - 64, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 11.01.2016
Сообщений: 27
1

Как узнать язык системы?

29.05.2016, 22:44. Показов 12706. Ответов 53
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача: Нужно получить код языка системы и потом использовать его для удаления ненужных файлов из папки. Кто знает и может - помогите!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2016, 22:44
Ответы с готовыми решениями:

Сервер, частная сеть; как узнать общую картину системы
Вопросик) я чайник, нужно узнать - имеется частная сеть, стоит сервер (из 4х машин), под...

Как узнать язык системы?
Пробовал через: CultureInfo.InstalledUICulture Но он постоянно возвращает en-US, а на самом деле...

Как узнать язык установленной Windows?
При запуске программы необходимо определять язык windows установленный для данного пользователя.

Как узнать язык на котором написан софт?
Вобщем то сабж. Кто может помочь в етом вопросе. программа

53
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 76
09.09.2018, 06:38 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от alpap Посмотреть сообщение
Windows Batch file
1
if "!x: =!"=="1049" (команда "Что душе угодно")
Что-то не понимаю, решил проверить работу кода, а выходит непонятно что. Вот пример "Что душе угодно":
Windows Batch file
1
2
3
4
5
if "!x: =!"=="1049" (
echo Русская винда
) else (
echo Английская винда
)
В результате показывает, что у меня "Английская винда", хотя точно знаю, стоит точно "Русская Максимальная" 7-ка x64.
Почему равенство не выполняется?
0
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
09.09.2018, 13:41 22
ErikPshat,
что-то вы все перепутали

вот выставленная кодовая страница:
Windows Batch file
1
2
3
@echo off
wmic path Win32_OperatingSystem get oslanguage|more +1|set/p x=^& cmd/v/c if "!x: =!"=="1049" (echo:Кодовая страница RU) else (if "!x: =!"=="1033" (echo:Кодовая страница EN))
pause>nul
вот языки входа в систему:
Windows Batch file
1
2
3
4
5
6
@echo off
for /f "tokens=3" %%a in ('reg query "HKEY_USERS\.DEFAULT\Keyboard Layout\Preload"^|find "REG_SZ"') do (
 if %%a==00000409 echo:Язык входа в сиистему EN 00000409
 if %%a==00000419 echo:Язык входа в сиистему RU 00000419
)
pause>nul
Добавлено через 9 минут
Для пущей уверенности посмотреть язык системы можно так:
Windows Batch file
1
2
3
@echo off
systeminfo|find /i "Язык системы:"
pause
Добавлено через 1 минуту
и для понимания процесса:
Windows Batch file
1
2
3
@echo off
systeminfo|find /i "Язык ввода:"
pause
0
6228 / 2670 / 1051
Регистрация: 06.06.2017
Сообщений: 9,127
09.09.2018, 15:56 23
Как вариант:
Windows Batch file
1
2
3
4
5
6
7
@echo off
echo wsh.echo getlocale>%Temp%\LCID.vbs
for /f %%l in ('cscript //nologo %Temp%\LCID.vbs') do (
  If %%l==1049 (echo Язык системы: русский) Else echo Язык системы: нерусский
)
del %Temp%\LCID.vbs
pause
0
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 76
09.09.2018, 20:41 24
Цитата Сообщение от alpap Посмотреть сообщение
ErikPshat,
что-то вы все перепутали
Эмм, но в том вашем сообщении нету ничего из того, что вы сейчас дописали в примерах. Вчера в том вашем сообщении было в заголовке написано жирным Решение и под кодом было написано, как универсальное решение. Вот я и решил воспользоваться этим универсальным и довольно простым решением, но оно в таком виде не работает.

Поэтому, я воспользовался примером из 2-го поста темы и меня это вполне устраивает:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
setlocal
  set "key=HKU\.DEFAULT\Control Panel\International"
  for /f "tokens=3" %%I in (
    'reg query "%key%" /v Locale'
  ) do set "loc=%%I"
 
  if %loc%==00000419 (
  Photoshop_RU.exe -param1 -param2
  ) else (
  Photoshop_EN.exe -param1 -param2
  )
endlocal
И я снова не понял, почему ваш код не работает, выложенный именно в том посту, а не с вашими дополнениями.
0
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
09.09.2018, 22:58 25
ErikPshat,
кажись я начал понимать что вы хотите сказать.
так вот
кусок кода который отражен в п10 является частью кода из п6 и не может быть самостоятельной, рабочей единицей. Это было пояснение, пример для кого-то, а вы по ошибке (не вчитываясь в детали и тему в целом) приняли его за самостоятельный код. Конечно отдельно он работать как надо не будет.
1
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
10.09.2018, 08:04 26
Здравствуйте, ErikPshat!

Если бы я устанавливал себе программу, то я бы предпочёл, чтобы она выбрала для меня язык, который я указал как "Язык интерфейса" (отображаемый в диалоговых окнах).

А для этого, значение нужно брать из параметра:
HKEY_CURRENT_USER\Control Panel\Desktop => PreferredUILanguages
Прим.: он будет = ru-RU для русского и en-US - для англ.
Или параметр будет отсутствовать вообще, если в систему не устанавливали других языков.

P.S. Респект эксперту PSP.
1
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 76
11.09.2018, 03:07 27
Цитата Сообщение от Dragokas Посмотреть сообщение
HKEY_CURRENT_USER\Control Panel\Desktop => PreferredUILanguages
Странно, у меня такого параметра в реестра нет. Есть такое:
HKEY_CURRENT_USER\Control Panel\Desktop\MuiCached => MachinePreferredUILanguages
И да, там значение: ru-RU

Добавлено через 35 минут
В таком случае, если это имеется на всех компьютерах, в чём я сомневаюсь,, тогда код будет такой:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
setlocal
  set "key=HKU\.Default\Control Panel\Desktop\MuiCached"
  for /f "tokens=3" %%I in (
    'reg query "%key%" /v MachinePreferredUILanguages'
  ) do set "loc=%%I"
 
  if %loc%==ru-RU (
  echo Russian languge
  ) else (
  echo Other language
  )
endlocal
pause
Ну тогда лучше использовать ветку реестра International из параметра LocaleName, там тоже значение ru-RU:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
setlocal
  set "key=HKU\.Default\Control Panel\International"
  for /f "tokens=3" %%I in (
    'reg query "%key%" /v LocaleName'
  ) do set "loc=%%I"
 
  if %loc%==ru-RU (
  echo Russian languge
  ) else (
  echo Other language
  )
endlocal
pause
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
11.09.2018, 07:57 28
Цитата Сообщение от ErikPshat Посмотреть сообщение
Странно, у меня такого параметра в реестра нет
Цитата Сообщение от Dragokas Посмотреть сообщение
Или параметр будет отсутствовать вообще, если в систему не устанавливали других языков.
Цитата Сообщение от ErikPshat Посмотреть сообщение
HKEY_CURRENT_USER\Control Panel\Desktop\MuiCached => MachinePreferredUILanguages
Это какое-то закешированное значение, оно не будет соответствовать актуальному языку диалоговых окон после переключения. Я просматривал трассировщиком, что именно меняется при смене языка. Этого там не было.

Я предлагаю, проверять параметр: HKCU\Control Panel\Desktop => PreferredUILanguages.
Если его нет, то брать значение из языка установки ОС.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
setlocal EnableExtensions
set "loc="
set "Lang="
for /f "tokens=3" %%I in ('reg query "HKCU\Control Panel\Desktop" /v "PreferredUILanguages"') do set "loc=%%I"
if not defined loc for /f "tokens=3" %%I in ('reg query "HKCU\Control Panel\International" /v "Locale"') do set "loc=%%I"
if "%loc%"=="ru-RU" set "Lang=RU"
if "%loc%"=="00000419" set "Lang=RU"
if "%Lang%"=="RU" (
  echo Russian language
) else (
  echo Other language
)
pause
Проверял на Win7 и Win server 2008 R2.

Цитата Сообщение от ErikPshat Посмотреть сообщение
Ну тогда лучше использовать ветку реестра International из параметра LocaleName, там тоже значение ru-RU:
Нет. Это скорее всего тоже самое, что язык установки системы.

И любопытно, зачем вы читаете параметры из раздела Local System (HKU\.default)? У вас предполагается установка программ до входа пользователя в систему?
1
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 76
11.09.2018, 09:58 29
Цитата Сообщение от Dragokas Посмотреть сообщение
И любопытно, зачем вы читаете параметры из раздела Local System (HKU\.default)? У вас предполагается установка программ до входа пользователя в систему?
Да как бы, мне кажется вроде бы без разницы, что HKU с разделом .default, что HKCU без него. Там вроде бы ветки реестра почти дублируются. Ну и конечно же не до входа в систему ))) я что-то не в курсе как это работает, просто, если у юзера русская локаль, тогда запускаю русскую версию программы и консоли, в противном случае английскую.
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
11.09.2018, 18:47 30
HKU\S-1-5-18 -> это симлинк к разделу HKU\.default, который является конфигурационным разделом для учётки Local System.
Можете убедится через ListRegistryLinks от Helge Klein:
Windows Batch file
1
ListRegistryLinks.exe hku
Ещё: https://blogs.msdn.microsoft.c... 0/?p=27783
т.е. он никак не отображает ни настройки текущего пользователя, ни дефолтовые.
Дефолтовые берутся с помощью динамического монтирования отдельного файла улья. Сегодня довольно распространённая практика.
2
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 76
12.09.2018, 01:32 31
Dragokas, то есть, я так понял, что .Default User будет работать только если я сижу под дефолтной учёткой.
А если юзер создаёт новую учётную запись, то все эти дефолтные настройки уже к нему не имеют отношения?
Значит нужно всё-таки брать информацию из HKCU.

Вообщем ваш последний вариант выходит самый верный.
Думаю 2 параметра одновременно должны у всех существовать - это:
"HKCU\Control Panel\International" /v "Locale" и "HKCU\Control Panel\International" /v "LocaleName"
Первый в 16-ричной системе как 00000419, а второй дублирующий в текстовой ru-RU
А вот первый у вас параметр PreferredUILanguages у меня в реестре отсутствует и на него выползает ошибка.
Вот что выдаёт консоль на весь ваш код:
Код
Ошибка: Не удается найти указанный раздел или параметр в реестре.
Russian language
Для продолжения нажмите любую клавишу . . .
А раз на PreferredUILanguages у юзера может не быть, значит его следует исключить из использования, имхо
Тогда думаю дя всех машин будет достоверным такой код:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
setlocal EnableExtensions
set "loc="
set "Lang="
for /f "tokens=3" %%I in ('reg query "HKCU\Control Panel\International" /v "LocaleName"') do set "loc=%%I"
if not defined loc for /f "tokens=3" %%I in ('reg query "HKCU\Control Panel\International" /v "Locale"') do set "loc=%%I"
if "%loc%"=="ru-RU" set "Lang=RU"
if "%loc%"=="00000419" set "Lang=RU"
if "%Lang%"=="RU" (
  echo Russian language
) else (
  echo Other language
)
pause
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
12.09.2018, 02:40 32
Цитата Сообщение от ErikPshat Посмотреть сообщение
Dragokas, то есть, я так понял, что .Default User будет работать только если я сижу под дефолтной учёткой.
А если юзер создаёт новую учётную запись, то все эти дефолтные настройки уже к нему не имеют отношения?
Значит нужно всё-таки брать информацию из HKCU.
Нету такого понятия как "дефолтовая учётка", точнее вы не можете под ней "сидеть".
Кроме того, эта так называемая "дефолтовая учётка" (c:\users\default) не имеет никакого отношения к разделу HKU\.Default
Это всё описано в статье по ссылке выше.
Также:
http://www.oszone.net/635/
http://www.oszone.net/637/

Когда создаётся новый пользователь, то изначальные файлы для него берутся из C:\Users\Default и новый куст HKCU будет содержать записи из файла-улья C:\users\default\ntuser.dat, но в текущий момент в реестре этот куст нигде не подмонтирован и прочитать вы его можете только, если вручную подмонтируете этот файл через reg load.

HKU\.default - это совершенно другие настройки и связаны они с учёткой системы (Local System).

Цитата Сообщение от ErikPshat Посмотреть сообщение
Вообщем ваш последний вариант выходит самый верный.
Думаю 2 параметра одновременно должны у всех существовать - это:
"HKCU\Control Panel\International" /v "Locale" и "HKCU\Control Panel\International" /v "LocaleName"
Первый в 16-ричной системе как 00000419, а второй дублирующий в текстовой ru-RU
А вот первый у вас параметр PreferredUILanguages у меня в реестре отсутствует и на него выползает ошибка.
Вот что выдаёт консоль на весь ваш код:
И вы снова пытаетесь подставить параметры, которые не меняются при переключении языка для диалогов.
Мой выложенный код это учитывает, и если параметр не существует, то читается следующий параметр.
Если вам не нравится сообщение "Не удается найти указанный раздел или параметр в реестре.", вы можете его занулить через 2>NUL:

Windows Batch file
1
for /f "tokens=3" %%I in ('2^>NUL reg query "HKCU\Control Panel\Desktop" /v "PreferredUILanguages"') do set "loc=%%I"
0
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 76
12.09.2018, 15:01 33
Dragokas, ну так всё равно получается, что этот профиль .Default User создаётся при установке Windows, а, при создании новых учётных записей, профиль пользователя копируется из дефолтной записи. Для нас же важно, чтобы условия для батника попадали бы в точку, т.е., чтобы присутствовали на машине любого пользователя, будь то Windows 7/8/8.1/10.
То есть, нам важно, чтобы комп юзера понимал русский язык диалогов в батнике cp866 и в русскоязычной программе, чтобы юзер не видел крякозабликов. Мы проверяем, действительно ли Windows изначально понимает русскую локаль, в проттивном случае, запускаем англоязычную программу и сообщения в батнике.

Да, согласен, я могу занулить вывод ошибки серез >NUL. Только до меня никак не доходит, зачем проверять изменяемые параметры переключения языка диалогов, тем более, что у меня PreferredUILanguages почему-то отсутствует, а значит и у других его может не быть, вернее он наверное сидит в другой ветке реестра. Мне как бы не важно, какой язык выставлен при переключении языка для диалогов, какой язык клавиатуры. Передо мной стоит задача выявить локаль системы и определить, понимает ли она русский язык. А если у юзера другая локаль, пусть поругальская, испанская или английская, тогда запускается английская программа, тогда вроде бы определение "Locale" или "LocaleName" вполне достаточно. И вроде даже не важно, как это определять, то ли через Default User, то ли через локального юзера.
Ну ладно, нафлудили что-то мы
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
12.09.2018, 19:09 34
Цитата Сообщение от ErikPshat Посмотреть сообщение
профиль .Default User
Нет такого профиля. Есть "Default User" и "HKU\.Default". Вы о котором сейчас говорите?
Вы не прочли основную мысль, конфигурационные файлы (реестра) профиля дефолтового пользователя неоткуда читать, если только вы не подмонтируете в реестр файл: C:\users\default\ntuser.dat
Но это не имеет отношения к обсуждаемой теме. У каждого пользователя могут быть свои настройки языка.

Цитата Сообщение от ErikPshat Посмотреть сообщение
Мы проверяем, действительно ли Windows изначально понимает русскую локаль, в проттивном случае, запускаем англоязычную программу и сообщения в батнике.
Чтобы программы, которые не имеют поддержку юникода (не-юникодные контролы), воспринимали русские символы, не обязательно иметь русскую винду, и не обязательно иметь выставленный русский язык отображения диалогов. Для этого достаточно выставить 3-ю опцию: "Язык для программ, не поддерживающих юникод" на "русский". При этом язык установки и диалогов может быть английским и любая программа спокойно сможет работать на русском языке без крякозябликов.
Поэтому ни один из указанных ранее в этой теме параметров не удовлетворяет условиям озвученной вами сейчас проверки.

И наоборот, даже если язык установки русский, и язык отображения диалогов - русский, но язык для неюникодных программ - английский и при этом программа не поддерживает юникод, то вы получите крякозяблики на месте русских символов. Аналогично с консолью.

Интересующее вас значение хранится в одном из этих параметров:
HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language\Default
HKLM\SYSTEM\CurrentControlSet\Control\Nls\Locale\ (Параметр по умолчанию)
0
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 76
12.09.2018, 20:15 35
Цитата Сообщение от Dragokas Посмотреть сообщение
Есть "Default User" и "HKU\.Default". Вы о котором сейчас говорите?
Ну я имею в виду "Default User" под записью реестра "HKU\.Default"
И, как я понял, при создании новых профилей юзеров, всё равно копируются данные из "HKU\.Default".

Вообщем, чтобы мне запустить русскую программу, я просто проверяю "Locale" из "HKCU\Control Panel\International" и по идее значит у юзера установлена русская Windows. Если программу запускает иностранец, португалец или испанец, то для него будет запускаться программа на английском языке. Так же я в батнике создал 2 секции с переходом goto, где в консоли cp866 так же будет отображаться текст на русском языке, в противном случае на английском.

Ну вот и всё, что мне было нужно. Думаю мне этот параметр реестра вполне подходит. Остальное что-то до меня всё-равно не доходит, зачем это нужно.
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
12.09.2018, 23:10 36
Цитата Сообщение от ErikPshat Посмотреть сообщение
Ну я имею в виду "Default User" под записью реестра "HKU\.Default"
И, как я понял, при создании новых профилей юзеров, всё равно копируются данные из "HKU\.Default".
Вы вообще читать умеете?
Я уже третий раз пишу вам что Default user это не HKU\.Default, и данные не копируются из HKU\.Default и даже привёл вам выше 3 статьи, одна из которых от разработчика Microsoft, который имеет непосредственное отношение в т.ч. к ядру, в т.ч. дал ссылку на утилиту с помощью которой вы сами можете проверить и убедится, что есть HKU\.Default, а вы продолжаете толковать своё.

Цитата Сообщение от ErikPshat Посмотреть сообщение
Вообщем, чтобы мне запустить русскую программу, я просто проверяю "Locale" из "HKCU\Control Panel\International" и по идее значит у юзера установлена русская Windows. Если программу запускает иностранец, португалец или испанец, то для него будет запускаться программа на английском языке. Так же я в батнике создал 2 секции с переходом goto, где в консоли cp866 так же будет отображаться текст на русском языке, в противном случае на английском.
Ещё раз повторю: поставьте на системе с ЛЮБЫМ языком настройку "Язык для программ, не поддерживающих юникод" => Английский и вы получите крякозябли, и указанный вами параметр вас никак не спасёт. Опять повторю своё замечание: это актуально только для программ с не-юникодными контролами. Остальные будут нормально отображать русский при любых настройках языков.
Миниатюры
Как узнать язык системы?  
1
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 76
13.09.2018, 02:07 37
Цитата Сообщение от Dragokas Посмотреть сообщение
Вы вообще читать умеете?
Я уже третий раз пишу вам что Default user это не HKU\.Default, и данные не копируются из HKU\.Default и даже привёл вам выше 3 статьи, одна из которых от разработчика Microsoft
Хе-хе-хе. Да, я как раз читал рецензию в блоге от Майкрософт, правда читал поверхностно, без переводчика. Ну английский я читать умею и понимаю чуток без переводчиков. Но в даном случае я немного не так понял, вот выдержка из текста:
Unfortunately, the name .Default has led people to believe that this user's settings are the basis for new user profiles. In retrospect, calling it .Default was probably a bad decision. It just gave people the wrong idea. Here's one customer that was faked out:
Из чего я понял, что name .Default - это this user's settings и что берётся как основная база при создании нового профиля the basis for new user profiles.
Теперь я перевёл это в Гугль-переводчике и вот что получилось:
К сожалению, имя .Default заставило людей поверить, что настройки этого пользователя являются основой для новых пользовательских профилей. Оглядываясь назад, называя это .Default, вероятно, было плохим решением. Это просто дало людям неправильную идею. Вот один из подделок:

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

Цитата Сообщение от Dragokas Посмотреть сообщение
поставьте на системе с ЛЮБЫМ языком настройку "Язык для программ, не поддерживающих юникод" => Английский и вы получите крякозябли, и указанный вами параметр вас никак не спасёт. Опять повторю своё замечание: это актуально только для программ с не-юникодными контролами. Остальные будут нормально отображать русский при любых настройках языков.
Ну вы размышляете со своей колокольни, а у меня голова болит о своём. Конечно же я запускаю программу, поддерживающую юникод, конечно я это проверил, что она на любом языке системы будет правильно отображать английский язык в программе. И так же, я намеренно указал, что батник сохранён в кодировке cp866, которая диалоги отображает и на русском языке (при условии локали ru-RU) и на английском языке на любых других локалях.

Для меня важно только одно - чтобы русскоязычные пользователи, то бышь у которых установлена русская Windows, видели сообщения в консоли на русском и, чтобы запускалась русская версия программы. А нерусская локаль, чтобы выводила в консоль английские диалоги и запускалась английская версия программы. Вот и всё. Дело в том, что прогой будут пользоваться обладатели игровых консолей, т.е. просто дети, играющие в игрушки, поэтому они не понимают простых английских предложений и надписей на кнопках в программе.

То есть, все остальные махинации с реестром, тем более так глубоко, для меня на данный момент не так уж важно.
Прогу я уже собрал и выложил, несколько юзеров потестили её по моей просьбе, от остальной сотни скачавших пока никаких жалоб не поступало. Пока что все говорят, что язык системы отрабатывает правильно, как русский, так и английский. Так что проблем с отлавливанием языковых параметров Windows я пока не вижу.
Цитата Сообщение от Dragokas Посмотреть сообщение
И вы снова пытаетесь подставить параметры, которые не меняются при переключении языка для диалогов.
Мой выложенный код это учитывает, и если параметр не существует, то читается следующий параметр.
И всё-таки, я решил использовать последний мною выложенный код, хотя там два параметра перекликаются "Local" и "LocalName", просто в разных системах координат. И он отрабатывает нормально и безошибочно (пока), я почему-то уверен, что нужно использовать именно их и этого вполне достаточно.
Насчёт PreferredUILanguages у меня большие сомнения в необходимости его включать и проверять, т.к. я писал уже, что у меня он отсутствует, как может отсутствовать и других.
0
0 / 0 / 0
Регистрация: 08.10.2017
Сообщений: 9
17.04.2019, 12:54 38
Не буду создавать отдельную тему т.к. проблематика схожая

Готовые VBS скрипты для управления принтерами в Windows присутствуют во всех версиях Windows (начиная с Vista и Windows Server 2008) и находятся в каталоге C:\Windows\System32\Printing_Admin_Scripts\en-US.
Вместо каталога en-US может быть другой каталог, соответствующий языку установленной системы. Для русской версии Windows это будет каталог ru-RU (полный путь C:\Windows\System32\Printing_Admin_Scripts\ru-RU);
В Windows XP и Windows Server 2003 эти vbs скрипты хранятся в каталоге C:\WINDOWS\system32

есть необходимость в определении в каком именно каталоге находятся скрипты

Добавлено через 11 минут
в догонку:

P.S. пытаюсь унифицировать пакетник для установки принтера(в организации xp, win7, win7x64, win10 и win10x64)

на текущий момент творение выглядит так:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
@echo off
SetLocal EnableExtensions
 
Call :GetSystemVersion "OSVer" "Core" "Build"
Echo Your operating system: %OSVer% %Core% %Build%
 
 
SET varIP=192.168.134.7
SET varCE=N20170813
 
SET varDriver=Xerox WorkCentre 5325 PCL6
SET varDriverFolder32=\\vodokanal.spb.ru\service\soft\Drivers\Xerox\Xerox WC 5325\32-bit_x86
SET varDriverFolder64=\\vodokanal.spb.ru\service\soft\Drivers\Xerox\Xerox WC 5325\64-bit_x64
 
if "%Core%"=="x32" SET varDriverFolder=%varDriverFolder32%
if "%Core%"=="x64" SET varDriverFolder=%varDriverFolder64%
 
SET varDriverFile=%varDriverFolder%\x2GSANX.inf
SET varName=%varCE% Xerox WC 5325
 
REM "Deleting TCP/IP port"
CSCRIPT /nologo C:\Windows\System32\Printing_Admin_Scripts\ru-RU\prnport.vbs -d -r IP_%varIP%
CSCRIPT /nologo C:\Windows\System32\Printing_Admin_Scripts\ru-RU\prnport.vbs -d -r %varIP%
 
REM "Creating TCP/IP port"
CSCRIPT /nologo C:\Windows\System32\Printing_Admin_Scripts\ru-RU\prnport.vbs -a -r IP_%varIP% -o raw -n 9100 -h %varIP%
 
REM "Installation message"
@ECHO.
@ECHO Please do not close this window.
@ECHO.
@ECHO Once the installation is complete this Setup window will exit.
@ECHO.
 
REM "Driver installation"
  
if "%_ver%"=="5.1" (rundll32.exe printui.dll,PrintUIEntry /ia /m "%varDriver%" /f "%varDriverFile%") else (CSCRIPT /nologo C:\Windows\System32\Printing_Admin_Scripts\ru-RU\prndrvr.vbs -a -m "%varDriver%" -h "%varDriverFolder%" -i "%varDriverFile%")
rem pnputil.exe -a "%varDriverFile%"
 
REM "Printer deletion"
@ECHO.
@ECHO Completing installation.
CSCRIPT /nologo C:\Windows\System32\Printing_Admin_Scripts\ru-RU\prnmngr.vbs -d -p "%varName%" 
 
 
REM "Printer installation"
@ECHO.
@ECHO Completing installation.
CSCRIPT /nologo C:\Windows\System32\Printing_Admin_Scripts\ru-RU\prnmngr.vbs -a -p "%varName%" -m "%varDriver%" -r "IP_%varIP%"
 
 
REM "Making it Default printer"
REM CSCRIPT C:\Windows\System32\Printing_Admin_Scripts\ru-RU\prnmngr.vbs -p "%varName%" -t
 
@ECHO Thank you.
PAUSE
 
 
goto :eof
 
:GetSystemVersion
:: Определить версию ОС
:: %1-исх.Переменная для хранения названия ОС
:: %2-исх.Переменная для хранения разрядности ОС
:: %3-исх.Переменная для хранения версии сборки ОС
  Set "Bitness=x64"& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set "Bitness=x32"
  set "%~2=%Bitness%"
  For /F "delims=" %%a in ('ver') do set _ver=%%a
  Set _ver="%_ver: =" "%"
  For %%a in (%_ver%) do set _ver=%%~a
  for /F "delims=]" %%a in ("%_ver%") do set %~3=%%a
  set _ver=%_ver:~0,3%
  SET %~1=Unknown
  if "%_ver%"=="5.0" SET %~1=Windows 2000
  if "%_ver%"=="5.1" SET %~1=Windows XP
  if "%_ver%"=="5.2" if "%Bitness%"=="x64" (SET %~1=Windows XP) else (SET %~1=Windows 2003)
  if "%_ver%"=="6.0" (
    Reg.exe query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName"|>nul Find /i "Vista"&&(
    SET %~1=Windows Vista) || (SET %~1=Windows 2008)
  )
  if "%_ver%"=="6.1" SET %~1=Windows 7
  if "%_ver%"=="6.2" SET %~1=Windows 8
  if "%_ver%"=="6.3" SET %~1=Windows 8.1
  if "%_ver%"=="6.4" SET %~1=Windows 10
  if "%_ver%"=="10." SET %~1=Windows 10
  set _ver=
 
Exit /B
0
6228 / 2670 / 1051
Регистрация: 06.06.2017
Сообщений: 9,127
21.04.2019, 09:23 39
Цитата Сообщение от Earl_Aries Посмотреть сообщение
Готовые VBS скрипты для управления принтерами в Windows присутствуют во всех версиях Windows
А утилита printui не во всех? Вызовите её и читайте описания ключей.
0
0 / 0 / 0
Регистрация: 08.10.2017
Сообщений: 9
21.04.2019, 10:28 40
FlasherX, стесняюсь спросить какой ключ поможет определить папку в которой находятся скрипты?
C:\Windows\System32\Printing_Admin_Scripts\en-US
или
C:\Windows\System32\Printing_Admin_Scripts\ru-RU
или еще какой...
0
21.04.2019, 10:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.04.2019, 10:28
Помогаю со студенческими работами здесь

XP Как изменить язык системы?
Господа, Здравствуйте! Подскажите, как изменить язык Windows XP? У меня устновлена русская версия,...

Как изменить язык системы
Добрый вечер!!! Дорогие форумчане как можно изменить язык системы на винда 8 на пример я хочу...

Как програмно изменить язык системы?
У меня есть приложение выполняющее определённые функции. Мне нужно научит его менять язык Windows...

Как получить текущий язык системы в Android?
Здравствуйте. Подскажите как получить текущий язык системы (тот, что установлен в Настройки -> Язык...

Как сменить язык системы Linux Mint 17.3
Всем привет) нужна ваша помощь :) Установил Linux Mint 17.3 . При установке я выбирал русский, но...

Английский язык для окна ввода пароля, русский язык для самой системы
собственно, сабж. у меня пароль на английском языке, при включении компьютера по умолчанию стоит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru