Имя: Пароль:
1C
 
Как понять, что код выполняется в 64-битной ОС?
,
0 TormozIT
 
гуру
11.06.15
16:21
СистемнаяИнформация.ТипПлатформы дает разрядность процесса, но не операционной системы. Как узнать разрядность операционной системы?
1 Волшебник
 
модератор
11.06.15
16:23
Проверь наличие папки Program Files (x86)
Если она есть, значит 64 бит, иначе 32 бит
2 Asmody
 
11.06.15
16:27
(1) Особенно в linux актуально
3 qeos
 
11.06.15
16:28
(2) да и на чем надо проверить непонятно
4 TormozIT
 
гуру
11.06.15
16:30
Мне только Windows платформа интересна
5 TormozIT
 
гуру
11.06.15
16:30
(1) Не факт. Ее могли забыть удалить просто.
6 DS
 
11.06.15
16:35
Скрипты подойдут?
http://forum.oszone.net/thread-172610.html
7 vde69
 
11.06.15
16:36
WMI тебе в помощь
8 ДенисЧ
 
11.06.15
16:36
(7) на линуксе...
9 Кай066
 
11.06.15
16:37
SysWoW64 поискать можно
10 TormozIT
 
гуру
11.06.15
16:37
(7) WMI решение конечно, но ради такой простой задачи не хочется накладные расходы WMI нести. Все таки WMI не очень быстрая штука.
11 TormozIT
 
гуру
11.06.15
16:39
(6) Нет. Скрипты не все поймут и отлаживать сложно.
12 TormozIT
 
гуру
11.06.15
16:40
(9) Если ты про папку, то изучение файловой системы не кажется надежным способом. Смотри (5)
13 vde69
 
11.06.15
16:41
(10) засунь в модуль повторного использования...
а по поводу накладных расходов - грамотный запрос резко ускоряет WMI
14 Кай066
 
11.06.15
16:41
(12) при установке новой винды старая переносится в папку old, так что старой папки в рабочем каталоге Windows не будет
15 vde69
 
11.06.15
16:42
(14) если у меня установлено несколько OS на один винт ???
16 Кай066
 
11.06.15
16:42
C:\Windows\SysWOW64\ не может оказать с 32шной винде, если только её специально туда не положили
17 Кай066
 
11.06.15
16:43
(15) то ты рукозадый админ
18 TormozIT
 
гуру
11.06.15
16:57
(13) Ок. Сделал примерно так

    мWMI =  КэшКонтекстаИис.ПолучитьСлужбуWMIИис(Компьютер);
    КоллекцияОС = мWMI.InstancesOf("Win32_OperatingSystem");
    Для каждого лОС Из КоллекцияОС Цикл
        Прервать;
    КонецЦикла;
    Результат = лОС.OSArchitecture = "64-bit";
19 TeMochkiN
 
11.06.15
17:10
(18) я точно не помню, но кажется, свойство OSArchitecture зависит от региональных настроек, т.е. там вполне может оказаться "64-бит"
20 TormozIT
 
гуру
11.06.15
17:12
(19) Ты прав. Лучше подстраховаться.

    мWMI =  КэшКонтекстаИис.ПолучитьСлужбуWMIИис(Компьютер);
    ИмяКласса = "Win32_OperatingSystem";
    КоллекцияОС = мWMI.InstancesOf(ИмяКласса);
    Для каждого лОС Из КоллекцияОС Цикл
        Прервать;
    КонецЦикла;
    Результат = Лев(лОС.OSArchitecture, 2) = "64";
21 Serginio1
 
11.06.15
17:13
22 TormozIT
 
гуру
11.06.15
17:15
(21) Как это прочитать в 1С?
23 Aprobator
 
11.06.15
17:16
ТипПлатформы тебе в помощь. Читается в СП по 8.2 на раз )
24 Гёдза
 
11.06.15
17:18
Для винды - ver
25 Aprobator
 
11.06.15
17:19

СисИнфо = Новый СистемнаяИнформация;
ТипПлатформы = СисИнфо.ТипПлатформы;
26 Aprobator
 
11.06.15
17:20
а блин, когда я научусь до конца топик читать?
27 Serginio1
 
11.06.15
17:21
28 Гёдза
 
11.06.15
17:21
Свойство AddressWidth класса WMI Win32_Processor определяет текущий режим работы процессора. На 32-разрядной операционной системе Win32_Processor.AddressWidth бы 32; в 64-разрядной операционной системе Win32_Processor.AddressWidth бы 64.
29 Aprobator
 
11.06.15
17:21
А в версии ОС - разрядность не присутствует случаем?
30 TeMochkiN
 
11.06.15
17:23
(27) зачем так извращаться? тем более доступно лишь начиная с четвертого фреймворка. не у всех же он может быть установлен.
31 Serginio1
 
11.06.15
17:23
врап=СоздатьОбъект("NetObjectToIDispatch45");
Это64=Врап.ПолучитьТип("System.Environment").Is64BitOperatingSystem;
32 Злопчинский
 
11.06.15
19:46
а если на 64бит развернута 32бит виртуальная машина...? что показывать в виртмашине?
33 mehfk
 
11.06.15
19:55
(0) В качестве догадки: на Win x64 16-битное приложение не запустится. На win x86, если не сделаны особые настройки системы - запустится.
34 oleg_km
 
12.06.15
11:19
(30) Правильно, зачем мне уметь пользоваться экскаватором, ведь экскаватор не на каждом предприятии есть. А лопата в каждом ларьке найдется. Савочком в песочнице прикольно ковыряться.
35 Гость из Мариуполя
 
гуру
12.06.15
13:17
хм.. хрена се, куда мысли заносит

1. Волшебник частично прав.
самое простое - проверить Program Files (x86)
только НЕ папка, а переменная среды.
если определена - то YES!
в командной строке набери "set prog" ...

2. встроенная команда systeminfo
правда, в "покоцанных" версиях типа XP Home или Vista starter systeminfo.exe может и не быть.
36 Escander
 
12.06.15
13:20
(0) распарсить строчное имя ОС?
37 МихаилМ
 
12.06.15
14:01
создать коллекцию, занимающую больше 3ГБ ОЗУ (для win), если создаст - значит - 64-бит.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший