Нет.Flasher писал(а):Кстати, имя домена и имя компьютера не совпадают?
Скрипт определяющий серверная ОС или нет
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Нет. У меня всё одинаково. И на "Windows 7 Максимальная", и "Windows Server 2008" у LOGONSERVER впереди двойной слэш.Flasher писал(а):На сервере LOGONSERVER отличается только наличием сдвоенного слэша спереди? У тебя так?
А у меня такого нет.Rodny писал(а):на 2003: "LOGONSERVER=\\NetBIOS-имя_компьютера", "USERDOMAIN=имя_домена"
на XP: "LOGONSERVER=\\NetBIOS-имя_компьютера", "USERDOMAIN=NetBIOS-имя_компьютера"
на 7: "LOGONSERVER=\\Контроллер_домена", "USERDOMAIN=имя_домена"
на 2008: "LOGONSERVER=\\Контроллер_домена", "USERDOMAIN=имя_домена"
Вроде нашёл ключи реестра, по которым можно определиться:
Windows 7 писал(а):[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"InstallationType"="Client"
"EditionID"="Ultimate"
"ProductName"="Windows 7 Ultimate"
Наличие "Server" в "ProductName" может служить критерием.Windows 2008 Server писал(а):[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"ProductName"="Windows Server (R) 2008 Enterprise"
"EditionID"="ServerEnterprise"
Нет, я не сплю. Я просто медленно моргаю.
- alexey65536
- Сообщения: 1056
- Зарегистрирован: Пт янв 20, 2006 10:58
- Откуда: Taganrog
Самый надежный способ - написать утилитку на пару килобайт, которая будет ставить переменную окружения или код ошибки, позволяющий определить, серверная или нет - есть функция GetVersionEx, которая позволяет получить нужную информацию.
Вообще, автор топика просил различить XP и 2003 Server, для 7 и 2008 серверов могут быть различия. Также, думаю, различия могут быть в зависимости от того, подключена ли к домену рабочая станция с XP или нет. Но если вариант сравнения "%LOGONSERVER%"=="\\%USERDOMAIN%" подойдет - он будет простейшим.
Вообще, автор топика просил различить XP и 2003 Server, для 7 и 2008 серверов могут быть различия. Также, думаю, различия могут быть в зависимости от того, подключена ли к домену рабочая станция с XP или нет. Но если вариант сравнения "%LOGONSERVER%"=="\\%USERDOMAIN%" подойдет - он будет простейшим.
Я имел в виду отличается от USERDOMAIN. Ну, теперь уже вижу, что там у тебя.Batya писал(а):И на "Windows 7 Максимальная", и "Windows Server 2008" у LOGONSERVER впереди двойной слэш.
Где? В личке?MVV писал(а):Вообще, автор топика просил различить XP и 2003 Server, для 7 и 2008 серверов могут быть различия.
Тут не получается, если машины объединены с сервером. Контроллер домена и имя домена не равны ведь.MVV писал(а):Но если вариант сравнения "%LOGONSERVER%"=="\\%USERDOMAIN%" подойдет - он будет простейшим.
Batya
Спасибо.
Думаю это, то что нужно
Теперь нужен батник.
Оцените такой, если, что подправьте
Спасибо.
Код: Выделить всё
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"InstallationType"="Client"Теперь нужен батник.
Оцените такой, если, что подправьте
Код: Выделить всё
@echo off
echo ws=WScript.CreateObject("WScript.Shell");KeyPath="HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";ValueName="InstallationType"; > %TEMP%\0.js
echo try{Value=ws.RegRead(KeyPath+"\\"+ValueName);}catch(e){WScript.Quit(1);} >> %TEMP%\0.js
echo if (Value == "Server"){WScript.Quit(-1);}else{ WScript.Quit(0);} >> %TEMP%\0.js
cscript %TEMP%\0.js //B
set exitcode=%ERRORLEVEL%
del %TEMP%\0.js
if %exitcode%==0 (
start "client.exe"
) else (
start "server.exe"
)Ну, думаю, так попроще будет:

Но должен заметить, что на XP этого параметра нет.
Код: Выделить всё
@echo off
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v InstallationType|find "Client">nul
if errorlevel 1 (
echo server
) else (
echo client
)Но должен заметить, что на XP этого параметра нет.
Последний раз редактировалось MVV Чт фев 24, 2011 18:18, всего редактировалось 1 раз.
Думаю, так будет лучше:
Отличие в том, что если параметр не найден, система считается клиентом, а не сервером.
Код: Выделить всё
@echo off
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v InstallationType|find "Server">nul
if errorlevel 1 (
echo client
) else (
echo server
)MVV
Сейчас нет возможности проверить на серверной ОС
Но ставлю вручную Server или весь параметр удаляю, не важно тут
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"InstallationType"="Server"
Всё равно ваши и мой батник во всех случаях выдают client, где то я замкнул) Проверю завтра на серверной.
Сейчас нет возможности проверить на серверной ОС
Но ставлю вручную Server или весь параметр удаляю, не важно тут
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"InstallationType"="Server"
Всё равно ваши и мой батник во всех случаях выдают client, где то я замкнул) Проверю завтра на серверной.