Имя: Пароль:
1C
 
Как получить номер процессора и (или) материнки из 1С?
0 Соратник
 
06.06.07
15:54
Привязать надо конфу...
Имхо, WSH ... но я не силен.
Абрахамс, помоги :)
1 IUnknown
 
06.06.07
16:06
Как определить серийный номер материнской платы?

А еще поискай в темах созданных Diterom или Стрелком.
2 Соратник
 
06.06.07
16:06
(1) спасибо... пошукаю
3 IUnknown
 
07.06.07
06:09
Сегодня вот случайно наткеулся. Должно помочь. http://msdn2.microsoft.com/en-us/library/aa394204.aspx
4 ASV
 
07.06.07
06:13
5 IUnknown
 
07.06.07
06:18
(4)Там нету такого.
6 smaharbA
 
07.06.07
07:29

//*******************************************
Функция Win32_X(Путь="Win32_process",Фильтр="name='1CV7S.EXE'",Компьютер=".",Поля="*")
   Если ПустоеЗначение(Фильтр)=1 Тогда
       Ф="";
   Иначе
       Ф= "Where "+Фильтр;
   КонецЕсли;
   Сп=СоздатьОбъект("СписокЗначений");
   Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
   Скрипт.Language="javascript";
   Локатор=СоздатьОбъект("wbemscripting.swbemlocator");
   Сервис=Локатор.ConnectServer(Компьютер,"root\cimv2");
   Коллекция=Сервис.ExecQuery("Select "+Поля+" from "+Путь+" "+Ф);
   Если Коллекция.count=0 Тогда
       Сп.ДобавитьЗначение("Ненайдены экземпляры","Select "+Поля+" from "+Путь+" "+Ф);
       Возврат Сп;
   КонецЕсли;
   Скрипт.AddObject("Коллекция",Коллекция);
   Перечисленные=Скрипт.Eval("new Enumerator(Коллекция)");
   Свойства=Перечисленные.item(0).Properties_;
   Скрипт.AddObject("Свойства",Свойства);
   //Текст="";

   Пока Перечисленные.atEnd(0)=0 Цикл
       ПеречисленныеСвойства=Скрипт.Eval("new Enumerator(Свойства)");
       Пока ПеречисленныеСвойства.atEnd(0)=0 Цикл
           Стр=ПеречисленныеСвойства.item(0).name;
           Попытка
               Сп.ДобавитьЗначение(Перечисленные.item(0).Properties_.Item(Стр).Value,Стр);
           Исключение
           КонецПопытки;
           ПеречисленныеСвойства.moveNext(0);
       КонецЦикла;
       Перечисленные.moveNext(0);
   КонецЦикла;
   Возврат Сп;
   //Предупреждение(Текст);

КонецФункции

Процедура Сформировать()
   Перем Стр;
   Сп=Win32_X("Win32_Processor","");
   ТекстВывода="";
   Для к=1 По Сп.РазмерСписка() Цикл
       Сп.ПолучитьЗначение(к,Стр);
       ТекстВывода=ТекстВывода+Стр+": "+Сп.ПолучитьЗначение(к)+РазделительСтрок;
   КонецЦикла;
   Сообщить(ТекстВывода);
   Сп=Win32_X("Win32_BIOS","");
   ТекстВывода="";
   Для к=1 По Сп.РазмерСписка() Цикл
       Сп.ПолучитьЗначение(к,Стр);
       ТекстВывода=ТекстВывода+Стр+": "+Сп.ПолучитьЗначение(к)+РазделительСтрок;
   КонецЦикла;
   Сообщить(ТекстВывода);
КонецПроцедуры
7 Соратник
 
07.06.07
11:58
(6) Спасибо огромное, попробую
8 Соратник
 
07.06.07
12:13
На Win 2000 не сработало... :(
На XP нормально... только пока не пойму, вроде серийного номера проца и не показывает...
Или это вот этот параметр ProcessorId: 3FEBFBFF00000F13 ? это не номер модели?
9 Соратник
 
07.06.07
12:15
на 2000 винде вот такая ошибка

Перечисленные=Скрипт.Eval("new Enumerator(Коллекция)");
{U:\НОМЕРПРОЦЕССОРА.ERT(18)}: Ошибка компиляции Microsoft JScript: Недопустимый символ
10 IUnknown
 
07.06.07
12:21
(8)ХР с каким пуком стоит?
11 IUnknown
 
07.06.07
12:21
12 IUnknown
 
07.06.07
12:21
13 Соратник
 
07.06.07
12:21
(10) 2-й пук
14 IUnknown
 
07.06.07
12:24
(13)Вот по этому на ней и идет. Качай (12).
15 smaharbA
 
07.06.07
12:30
Поменяй русские буковы в объекте скрипт на англицкие
к примеру
...
   Скрипт.AddObject("Collection",Коллекция);
   Перечисленные=Скрипт.Eval("new Enumerator(Collection)");
   Свойства=Перечисленные.item(0).Properties_;
   Скрипт.AddObject("Properties",Свойства);
//.............
      ПеречисленныеСвойства=Скрипт.Eval("new Enumerator(Properties)");
16 Соратник
 
07.06.07
12:33
Обновил.... по ссылке в 12, запустилось и на 2000-й...

но не выдает нужных мн еданных для привязки :(
17 Соратник
 
07.06.07
12:34
ProcessorId: 3FEBFBFF00000F13 - это действительно номер модели... на таком же компе проверил номер один в один...
18 smaharbA
 
07.06.07
12:35
Даже номер бивайса не выдает ?
Кстати у процов частенько отсутствует партномер, а уж в бивайсах подавну
19 smaharbA
 
07.06.07
12:37
Да сложи все параметры полученные и проца(ов) и бивайса вкучу, вероятность будет уже мала
Кстати - могу дать методу по привязке к серийному номеру монитора )) (на полном серьезе, и железно)
20 Соратник
 
07.06.07
13:20
(19) ну давай... тока конфа эта у меня для серверов в принципе, а на них чаще всего и мониторов то нет :)
21 Соратник
 
07.06.07
14:29
(19) А серийник винта как-нить можно получить? :)
22 VoToN
 
07.06.07
14:33
(21) а также к планкам памяти, мыше и клаве =)
23 VoToN
 
07.06.07
14:33
(22) ... ну еще заодно уж к БП....0:-)
24 Соратник
 
07.06.07
14:36
(22)(23) елси ты, друг мой, в танке... то я тебе скажу... серийников вышеуказанными способами получить не удалось...
25 Соратник
 
07.06.07
14:46
+ (24)... ибо нет там серийников
26 smaharbA
 
07.06.07
14:58
(21) его гораздо проще

//*******************************************
Процедура Сформировать()
   ФСО=СоздатьОбъект("Scripting.FileSystemObject");
   Диски=ФСО.Drives;
   Для к=65 По 90 Цикл
       Попытка
           Диск=Диски.Item(Симв(к));
           Сообщить(Диск.SerialNumber);
       Исключение
       КонецПопытки;
   КонецЦикла;
КонецПроцедуры
27 Соратник
 
07.06.07
15:08
(26) ты золото... :)
28 Соратник
 
07.06.07
16:34
SerialNumber - Возвращает десятичный серийный номер, используемый для уникальной идентификации ТОМА диска, а не серийный номер диска от производителя :(
29 smaharbA
 
07.06.07
17:08
(28) да, и его можно подделать (
30 Злопчинский
 
08.06.07
01:47
Я с вас опупеваю в натуре реально..
Где вы этому всему научились?
31 smaharbA
 
08.06.07
07:48
(20)

//*******************************************
Процедура Сформировать()
   Серийник="";
   Компьютер=".";
   Шел=СоздатьОбъект("WScript.Shell");
   Локатор=СоздатьОбъект("WBemScripting.SWbemLocator");
   Сервис=Локатор.ConnectServer(Компьютер);
   Мониторы= Сервис.ExecQuery("Select * from Win32_DesktopMonitor");
   Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
   Скрипт.Language="javascript";
   Скрипт.AddObject("Шел",Шел);
   Скрипт.AddObject("Мониторы",Мониторы);
   Перечисленные=Скрипт.Eval("new Enumerator(Мониторы)");
   Пока Перечисленные.atEnd(0)=0 Цикл
       Монитор=Перечисленные.item(0);
       Массив=Скрипт.Eval("new VBArray(Шел.RegRead('HKLM\\SYSTEM\\CurrentControlSet\\Enum\\" + СтрЗаменить(Монитор.PNPDeviceID,"\","\\") + "\\Device Parameters\\EDID'))");
       СтрEDID="";
       Для к=Массив.lbound(1) По Массив.ubound(1) Цикл
           Хекс=Скрипт.Eval("new Number("+Массив.getItem(к)+").toString(16)");
           СтрEDID=СтрEDID+Прав("0"+Хекс,2);
       КонецЦикла;
       Для к=54 По 108 Цикл
           СтрБлок=Сред(СтрEDID,к*2+1,18*2);
           Если Лев(СтрБлок,8)="000000ff" Тогда
               Стр=Сред(СтрБлок,9);
               Пока СтрДлина(Стр)>0 Цикл
                   Чис=Скрипт.Eval("new String(unescape('%"+Лев(Стр,2)+"'))").charCodeAt(0);
                   Если Чис=10 Тогда
                       Прервать;
                   ИначеЕсли Чис>0 Тогда
                       Серийник=Серийник+Симв(Чис);
                   КонецЕсли;
                   Стр=Сред(Стр,3);
               КонецЦикла;
           КонецЕсли;
       КонецЦикла;
       Предупреждение(Серийник);
       Перечисленные.moveNext(0);
   КонецЦикла;
КонецПроцедуры
32 Хитрый_код
 
14.06.07
18:03
А на ноуте пробовали последний код, хен чего получится, у него в реестре 0000000000000000000000000000000000000!!??
А в предыдущем коде где насчет ТОМА, а вдруг формат, нарезка харда заново, что тогда покажет, нибось данные-то поменяются??? У Харда надо номер узнавать, он существует, но вот как через скрипт его достать???