Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как проверить разрядность операционной системы?

Ответить
Настройки темы
CMD/BAT - [решено] Как проверить разрядность операционной системы?

Пользователь


Сообщения: 99
Благодарности: 4

Профиль | Отправить PM | Цитировать


Как проверить разрядность операционной системы?

У виндоуз 7 есть 2 версии: 64-х разрядная и 32-х разрядная.

Для 64-х разрядной нужно, чтобы выполнялись дополнительные программы. Как это сделать в коммандом файле?

Отправлено: 22:50, 08-04-2010

 

Аватара для Wu-Tang

Ветеран


Сообщения: 1308
Благодарности: 77

Профиль | Отправить PM | Цитировать


Elven,
видимо привел старый, который тестил ранее, чем на видео, тогда так нужно:
Код: Выделить весь код
@echo off

If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 (
reg add "HKCR\*\shell\notepad" /v "" /t REG_SZ /d "Открыть в Блокноте" /f
reg add "HKCR\*\shell\notepad" /v "icon" /t REG_SZ /d "%ProgramFiles%\Notepad++\notepad++.exe,0" /f
reg add "HKCR\*\shell\notepad\command" /v "" /t REG_SZ /d "\"%ProgramFiles%\Notepad++\notepad++.exe\" \"%%1\"" /f  
) else (
reg add "HKCR\*\shell\notepad" /v "" /t REG_SZ /d "Открыть в Блокноте" /f
reg add "HKCR\*\shell\notepad" /v "icon" /t REG_SZ /d "%ProgramFiles(x86)%\Notepad++\notepad++.exe,0" /f
reg add "HKCR\*\shell\notepad\command" /v "" /t REG_SZ /d "\"%ProgramFiles(x86)%\Notepad++\notepad++.exe\" \"%%1\"" /f  
)
exit /b
ps ха, стало добавлять на х86, но теперь не добавляет на х64 )))

-------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!


Последний раз редактировалось Wu-Tang, 06-05-2021 в 17:50.


Отправлено: 17:15, 06-05-2021 | #101



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


Wu-Tang, писать в HKCR не рекомендуется, это плохо, не делайте, как я.
Код: Выделить весь код
@echo off
setlocal

if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
	%SystemRoot%\SysWOW64\cmd.exe /c ""%~f0" %*"
) else (
	reg add "HKCR\*\shell\notepad" /ve /d "Открыть в Блокноте" /f
	reg add "HKCR\*\shell\notepad" /v "icon" /d "%ProgramFiles%\Notepad++\nodepad++.exe,0" /f
	call reg add "HKCR\*\shell\notepad\command" /ve /d "\"%%ProgramFiles%%\Notepad\notepad.exe\" \"%%%%1\"" /f
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:39, 06-05-2021 | #102


Аватара для Wu-Tang

Ветеран


Сообщения: 1308
Благодарности: 77

Профиль | Отправить PM | Цитировать


El Sanchez,
Класс! Спасибо!!!
столько вариантов перебрал, только ваш отработал корректно и на х86 и на х64.
только в пути ошибка была, я поправил:
Код: Выделить весь код
setlocal

if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
	%SystemRoot%\SysWOW64\cmd.exe /c ""%~f0" %*"
) else (
	reg add "HKCR\*\shell\notepad" /ve /d "Открыть в Блокноте" /f
	reg add "HKCR\*\shell\notepad" /v "icon" /d "%ProgramFiles%\Notepad++\notepad++.exe,0" /f
	call reg add "HKCR\*\shell\notepad\command" /ve /d "\"%%ProgramFiles%%\Notepad++\notepad++.exe\" \"%%%%1\"" /f
)
я так понимаю, здесь идет проверка на наличие syswow64?
ps и почему это плохо и не рекомендуется?

с пунктом для контекстного меню разобрались, для полного счастья решить бы вопрос с копированием папки notepad++ в зависимости от разрядности:

Код: Выделить весь код
xcopy "Notepad++" "%ProgramFiles(x86)%\Notepad++" /H /E /G /Q /R /Y /I
те либо в ProgramFiles(x86) для х64, либо в ProgramFiles для х86.
поможите?

-------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!


Отправлено: 11:41, 07-05-2021 | #103


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Wu-Tang,
а что такое вы открываете в блокноте что это требует проверку на разрядность, тем более из конт.меню, т.е. где было там и осталось?
и зачем делать проверку разрядности при копировании заранее известной разрядности программы? Вы же знаете разрядность "Notepad++" однозначно, соответственно 32-х разрядную тупо кладете в "Program Files (x86)", а 64-х разрядную в "Program Files", чего тут проверять-то?
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:20, 07-05-2021 | #104


Аватара для Wu-Tang

Ветеран


Сообщения: 1308
Благодарности: 77

Профиль | Отправить PM | Цитировать


alpap,
а вы читали вобще посты ранее?
я там описал, зачем мне это.

-------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!


Отправлено: 15:00, 07-05-2021 | #105


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


Цитата alpap:
и зачем делать проверку разрядности при копировании заранее известной разрядности программы? Вы же знаете разрядность "Notepad++" однозначно, соответственно 32-х разрядную тупо кладете в "Program Files (x86)", а 64-х разрядную в "Program Files", чего тут проверять-то? »
alpap, ему надо 32-разрядный Notepad++ разместить в 32-разрядной папке Program Files и не зависеть от разрядности интерпретатора, который его скрипт будет выполнять, ведь используемая им переменная окружения %ProgramFiles% различается.
Цитата Wu-Tang:
я так понимаю, здесь идет проверка на наличие syswow64? »
Wu-Tang, нет. Если сценарий запущен в 64-разрядном интерпретаторе, то перезапускается в 32-разрядном.
Цитата Wu-Tang:
ps и почему это плохо и не рекомендуется? »
Wu-Tang, HKCR является объединённым представлением разделов HK(CU|LM)\Software\Classes. Производя запись в HKCR напрямую, вы не знаете куда реально пойдут изменения. В зависимости от привилегий процесса, проводящего запись, наличия дубликатов подключей в обеих ветвях реестра, запись может быть произведена в HKLM, в HKCU или в обе сразу.
Цитата Wu-Tang:
для полного счастья решить бы вопрос с копированием папки notepad++ в зависимости от разрядности: »
Wu-Tang, строку с xcopy пишете до строк с reg или после, только %ProgramFiles(x86)% замените на %ProgramFiles%.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:19, 07-05-2021 | #106


Аватара для Wu-Tang

Ветеран


Сообщения: 1308
Благодарности: 77

Профиль | Отправить PM | Цитировать


El Sanchez,
Цитата El Sanchez:
HKCR является объединённым представлением разделов HK(CU|LM)\Software\Classes. Производя запись в HKCR напрямую, вы не знаете куда реально пойдут изменения. В зависимости от привилегий процесса, проводящего запись, наличия дубликатов подключей в обеих ветвях реестра, запись может быть произведена в HKLM, в HKCU или в обе сразу. »
добавляю их с привилегиям от системы, иначе не добавляются, после применения добавляются только в hkcr, в других ветках, я не обнаружил дубликатов.
Цитата El Sanchez:
Wu-Tang, строку с xcopy пишете до строк с reg или после, только %ProgramFiles(x86)% замените на %ProgramFiles%. »
Код: Выделить весь код
setlocal

if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
	%SystemRoot%\SysWOW64\cmd.exe /c ""%~f0" %*"
) else (
        xcopy "Notepad++" "%ProgramFiles%\Notepad++" /H /E /G /Q /R /Y /I
	reg add "HKCR\*\shell\notepad" /ve /d "Открыть в Блокноте" /f
	reg add "HKCR\*\shell\notepad" /v "icon" /d "%ProgramFiles%\Notepad++\notepad++.exe,0" /f
	call reg add "HKCR\*\shell\notepad\command" /ve /d "\"%%ProgramFiles%%\Notepad++\notepad++.exe\" \"%%%%1\"" /f
)

exit
так?

-------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!


Отправлено: 14:18, 09-05-2021 | #107


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Wu-Tang:
…в других ветках, я не обнаружил дубликатов. »
Цитата El Sanchez:
Wu-Tang, HKCR является объединённым представлением разделов HK(CU|LM)\Software\Classes. »
Коллега El Sanchez чуть неточно озвучил. HKCR является объединением соответствующих подразделов из HKLM и HKEY_USERS.

Например, у меня есть раздел:
\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.html
Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.html]
"PerceivedType"="text"
@="htmlfile"
"Content Type"="text/html"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.html\OpenWithProgids]
"ChromeHTML"=""
"htmlfile"=""
"soffice.StarCalcDocument.6"=" "
"soffice.StarWriterDocument.6"=" "

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.html\PersistentHandler]
@="{eec97550-47a9-11cf-b952-00aa0051fe20}"
Есть раздел:
\HKEY_USERS\S-1-5-21-GUID-1000_Classes\.html
Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKEY_USERS\S-1-5-21-GUID-1000_Classes\.html]
@="PaleMoonHTML"

[HKEY_USERS\S-1-5-21-GUID-1000_Classes\.html\OpenWithProgids]
"bc1c4f92.Windows.XP.Mode.1"=""
И есть раздел:
\HKEY_CLASSES_ROOT\.html
Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.html]
@="PaleMoonHTML"
"Content Type"="text/html"
"PerceivedType"="text"

[HKEY_CLASSES_ROOT\.html\OpenWithProgids]
"bc1c4f92.Windows.XP.Mode.1"=""
"ChromeHTML"=""
"htmlfile"=""
"soffice.StarCalcDocument.6"=" "
"soffice.StarWriterDocument.6"=" "

[HKEY_CLASSES_ROOT\.html\PersistentHandler]
@="{eec97550-47a9-11cf-b952-00aa0051fe20}"
который формируется динамически и представляет собой объединение двух предыдущих разделов реестра с приоритетом раздела пользователя (обратите внимание на результирующее значение по умолчанию для раздела HKEY_CLASSES_ROOT\.html).

В остальном:
Цитата:
Производя запись в HKCR напрямую, вы не знаете куда реально пойдут изменения. В зависимости от привилегий процесса, проводящего запись, наличия дубликатов подключей в обеих ветвях реестра, запись может быть произведена в HKLM, в HKCU или в обе сразу.
всё верно (есть токмо сомнения насчёт «в обе сразу» ).
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:50, 10-05-2021 | #108


Аватара для Wu-Tang

Ветеран


Сообщения: 1308
Благодарности: 77

Профиль | Отправить PM | Цитировать


Iska,
Цитата Iska:
HKCR является объединением соответствующих подразделов из HKLM и HKEY_USERS. »
вот этот момент мне известен со времен сборки xp uttended, поэтому я эти ключи в root и писал, поэтому я даже удивился от тезиса товарища El Sanchez, касаемо веток реестра.

-------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!


Отправлено: 10:32, 10-05-2021 | #109


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать



Цитата Iska:
есть токмо сомнения насчёт «в обе сразу» »
Iska, согласен, это я загнул.

Цитата Wu-Tang:
вот этот момент мне известен со времен сборки xp uttended, поэтому я эти ключи в root и писал »
Wu-Tang, пишите. Когда-нибудь подобный сценарий будет запускать непривилегированный пользователь для записи в отсутствующий в реестре подраздел. Откройте консоль без всяких там запусков от админа (нет, UAC отключать не надо) и выполните reg add HKCR\.foo. Отказано в доступе, верно? Попытка записи в HKLM не удалась, это понятно, пользователь без прав же, но по логике должно было тогда в HKCU записать, а там тоже пусто, и выходит, что сценарий есть, а толку нет.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:36, 10-05-2021 | #110



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как проверить разрядность операционной системы?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как убрать меню выбора операционной системы? trimo Microsoft Windows 2000/XP 84 26-01-2010 21:57
Вопрос - Как можно проверить был взлом системы или просто зашли под другим пользователем? ИС_ Защита компьютерных систем 0 24-09-2009 16:52
как узнать разрядность системы DIMON171 Хочу все знать 20 28-06-2008 19:57
Как убрать меню выбора операционной системы Guest Microsoft Windows 95/98/Me (архив) 1 10-09-2004 14:11
Разрядность операционной системы ankerok Хочу все знать 7 09-01-2003 16:45




 
Переход