Имя: Пароль:
1C
1С v8
v8: Информация о "железе" получить в 1С
0 247tsm
 
02.05.13
01:19
Добрый вечер,

Подскажите, как получить информацию о "железе":
- номер процессора
- серийный номер диска
...

Это нужно для простейшей защиты программы.

Спасибо
1 pavig
 
02.05.13
01:52
Эверест например
2 247tsm
 
02.05.13
01:54
Я не точно задал вопрос.

Как программно в 1С8.1 получить информацию о железе?
4 kauksi
 
02.05.13
08:52
wmi
5 ice777
 
02.05.13
09:05
systeminfo в файл + парсинг )
6 wise
 
02.05.13
09:29
(5) в 8.1 ??
7 Мизантроп
 
02.05.13
09:31
8 yukon
 
02.05.13
09:42
например так для процессоров:


WMI = GetCOMObject("winmgmts://./root/cimv2");
CPUs = wmi.ExecQuery("Select * from Win32_Processor");
For each Item In CPUs Do
   Message(Item.Name);    
EndDo;


отдельно:
материнские платы: Win32_BaseBoard
BIOS: Win32_BIOS
система: Win32_ComputerSystem
диски: Win32_DiskDrive
Все объекты и их свойства:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa394084(v=vs.85).aspx
10 yukon
 
02.05.13
09:49
(9) Первое сообщение прочитал? Там до слова "Спасибо" абзац есть небольшой.
11 247tsm
 
02.05.13
10:39
Ок, (8), а как получить доступ к свойствам, например, Win32_DiskDrive?
Строка вида Item.SerialNumber выдает ошибку
12 Aleksey
 
02.05.13
10:45
а зачем? что мешает мне заремить проверку?
13 247tsm
 
02.05.13
10:48
(12) я не догоняю. Мне нужен серийный номер диска. Как его получить с помощью Win32_DiskDrive?
14 unregistered
 
02.05.13
11:04
(13) >>  не догоняю

Aleksey интересовался нафига нужная такая защита, если любой может открыть конфигурацию и просто закомментировать (заремить) тот код, где такая проверка выполняется.
15 yukon
 
02.05.13
11:10
(11)> Строка вида Item.SerialNumber выдает ошибку

Может в этом дело?
Windows Server 2003, Windows XP, Windows 2000, and Windows NT 4.0:  This property is not available.
16 247tsm
 
02.05.13
11:11
(12), (14) так я же написал: простейшая защита - от тех, кто не может зайти в конфигуратор и найти эту проверку.

(15) А всё-таки, как получить серийный номер диска с помощью Win32_DiskDrive?
17 yukon
 
02.05.13
11:12
(16) Есть еще Win32_PhysicalMedia
18 247tsm
 
02.05.13
11:17
(17) понятно, есть еще много объектов (я нашел по ссылке в (8)).
Но мне нужен пример доступа к свойствам этих объектов, например, SerialNumber у Win32_DiskDrive.

(8) дал хороший пример, но в этом примере я не получаю доступ к свойствам объектов.
Может, кто-нибудь прояснит мне, неучу? ;)
19 247tsm
 
02.05.13
11:21
По примеру в (8) выдается:

\\.\PHYSICALDRIVE0

А мне нужно свойство SerialNumber
20 Мизантроп
 
02.05.13
11:26
(19)  ты уже 5 раз посторил, прекращай истерить. В ком строке введи wmic diskdrive и посмотри отдает ли твоя ОС номера дисков
21 блондин1c
 
02.05.13
11:29
Функция ПолучитьСерийныйНомерЖесткогоДиска(Диск)
   ФСО=СоздатьОбъект("Scripting.FileSystemObject");
   ФСО_Диск=ФСО.GetDrive(Диск);
   Возврат ФСО_Диск.SerialNumber;
КонецФункции
22 yukon
 
02.05.13
11:40
(18) > Может, кто-нибудь прояснит мне, неучу?
Посмотри в отладчике - Item._Properties. Там все доступные поля и их значения.

Какая ОС у тебя? На Windows Server 2003, Windows XP, Windows 2000 и Windows NT 4.0 это свойство недоступно.

И для твоих целей скорее нужен объект из (17).
23 Zhuravlik
 
02.05.13
11:52
(0) Где-то на инфостарте (и на проклабе) была обработка для 7.7., с огромадной информацией по WMI. Когда-то здорово помогла, только как называется не помню.
24 247tsm
 
02.05.13
11:54
(21) Для 1с7.7 понятно, а как перевести на 1с8.1 это:

   ФСО=СоздатьОбъект("Scripting.FileSystemObject");
   ФСО_Диск=ФСО.GetDrive(Диск);

и что указать в параметре "Диск"?
25 блондин1c
 
02.05.13
12:04
&НаКлиенте
Процедура НомерДиска(Команда)
   // Вставить содержимое обработчика.
     Диск=ПолучитьСерийныйНомерЖесткогоДиска("C");
     Сообщить(Диск);
   
КонецПроцедуры


Функция ПолучитьСерийныйНомерЖесткогоДиска(Диск)
   ФСО=Новый COMОбъект("Scripting.FileSystemObject");
   ФСО_Диск=ФСО.GetDrive(Диск);
   Возврат ФСО_Диск.SerialNumber;
КонецФункции
26 блондин1c
 
02.05.13
12:04
(25) это на 8.2
27 247tsm
 
02.05.13
12:31
(25) Вашим способом получил серийный номер:
619 321 393
а с помощью Win32_PhysicalMedia получил серийный номер:
S20BJ9CZ809570

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

Спасибо
28 yukon
 
02.05.13
13:06
(27)
619 321 393 (число) = 24EA-1831 - это серийный номер тома (диска C)

S20BJ9CZ809570 (строка) - это серийный номер носителя (жесткого диска)

Ну и как всегда документация:
This function returns the volume serial number that the operating system assigns when a hard disk is formatted. To programmatically obtain the hard disk's serial number that the manufacturer assigns, use the Windows Management Instrumentation (WMI) Win32_PhysicalMedia property SerialNumber.
29 Fedot200
 
02.05.13
13:18
(23) http://www.script-coding.com/  здесь полно инфы по WMI