View previous topic :: View next topic |
Author |
Message |
Rodny

Joined: 24 Jan 2007 Posts: 949 Location: Могилёв, Беларусь
|
(Separately) Posted: Tue Feb 22, 2011 23:44 Post subject: |
|
|
Flasher wrote: | Кстати, имя домена и имя компьютера не совпадают? |
Нет. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Feb 22, 2011 23:51 Post subject: |
|
|
Ок. Ждём подтверждения. Один из образцов MVV кинул. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2226 Location: Москва, Россия
|
(Separately) Posted: Thu Feb 24, 2011 10:42 Post subject: |
|
|
Flasher wrote: | На сервере LOGONSERVER отличается только наличием сдвоенного слэша спереди? У тебя так? |
Нет. У меня всё одинаково. И на "Windows 7 Максимальная", и "Windows Server 2008" у LOGONSERVER впереди двойной слэш.
Rodny wrote: | на 2003: "LOGONSERVER=\\NetBIOS-имя_компьютера", "USERDOMAIN=имя_домена"
на XP: "LOGONSERVER=\\NetBIOS-имя_компьютера", "USERDOMAIN=NetBIOS-имя_компьютера" |
А у меня такого нет.
на 7: "LOGONSERVER=\\Контроллер_домена", "USERDOMAIN=имя_домена"
на 2008: "LOGONSERVER=\\Контроллер_домена", "USERDOMAIN=имя_домена"
Вроде нашёл ключи реестра, по которым можно определиться:
Windows 7 wrote: | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"InstallationType"="Client"
"EditionID"="Ultimate"
"ProductName"="Windows 7 Ultimate" |
Windows 2008 Server wrote: | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"ProductName"="Windows Server (R) 2008 Enterprise"
"EditionID"="ServerEnterprise" |
Наличие "Server" в "ProductName" может служить критерием. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
alexey65536

Joined: 20 Jan 2006 Posts: 1056 Location: Taganrog
|
(Separately) Posted: Thu Feb 24, 2011 11:20 Post subject: |
|
|
В обычной XP вообще нет ключей InstallationType и EditionID:) Тоже отличие _________________ #199018 |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Thu Feb 24, 2011 11:59 Post subject: |
|
|
Самый надежный способ - написать утилитку на пару килобайт, которая будет ставить переменную окружения или код ошибки, позволяющий определить, серверная или нет - есть функция GetVersionEx, которая позволяет получить нужную информацию.
Вообще, автор топика просил различить XP и 2003 Server, для 7 и 2008 серверов могут быть различия. Также, думаю, различия могут быть в зависимости от того, подключена ли к домену рабочая станция с XP или нет. Но если вариант сравнения "%LOGONSERVER%"=="\\%USERDOMAIN%" подойдет - он будет простейшим. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Feb 24, 2011 13:55 Post subject: |
|
|
Batya wrote: | И на "Windows 7 Максимальная", и "Windows Server 2008" у LOGONSERVER впереди двойной слэш. | Я имел в виду отличается от USERDOMAIN. Ну, теперь уже вижу, что там у тебя.
MVV wrote: | Вообще, автор топика просил различить XP и 2003 Server, для 7 и 2008 серверов могут быть различия. | Где? В личке?
MVV wrote: | Но если вариант сравнения "%LOGONSERVER%"=="\\%USERDOMAIN%" подойдет - он будет простейшим. | Тут не получается, если машины объединены с сервером. Контроллер домена и имя домена не равны ведь. |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
Back to top |
|
 |
HA3APET
Joined: 22 Feb 2010 Posts: 151
|
(Separately) Posted: Thu Feb 24, 2011 19:09 Post subject: |
|
|
Batya
Спасибо.
Code: | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"InstallationType"="Client" |
Думаю это, то что нужно
Теперь нужен батник.
Оцените такой, если, что подправьте
Code: | @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"
) |
|
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
Back to top |
|
 |
HA3APET
Joined: 22 Feb 2010 Posts: 151
|
(Separately) Posted: Thu Feb 24, 2011 19:18 Post subject: |
|
|
MVV
Точно! ))))
Спасибо |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
Back to top |
|
 |
HA3APET
Joined: 22 Feb 2010 Posts: 151
|
(Separately) Posted: Thu Feb 24, 2011 19:31 Post subject: |
|
|
MVV
Сейчас нет возможности проверить на серверной ОС
Но ставлю вручную Server или весь параметр удаляю, не важно тут
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"InstallationType"="Server"
Всё равно ваши и мой батник во всех случаях выдают client, где то я замкнул) Проверю завтра на серверной. |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Feb 24, 2011 19:51 Post subject: |
|
|
HA3APET
Не понял, а чему тут удивляться, что будет то, на что самостоятельно изменено значение? И зачем его менять вообще? |
|
Back to top |
|
 |
HA3APET
Joined: 22 Feb 2010 Posts: 151
|
(Separately) Posted: Thu Feb 24, 2011 19:53 Post subject: |
|
|
Flasher
Я писал, что наоборот от изменения значения результат скрипта один и тот же.
MVV
Спасибо за проверку, проверил на виртуалке (не дождался "завтра"), всё работает. |
|
Back to top |
|
 |
|