Показать полную графическую версию : Как запретить запуск двух и более копий 1С8
ragnar40
17-07-2009, 22:43
В магазинах установлены компы с 1С-8. Продавцы запускают несколько копий программы с ярлыка. Натворили дел уже, замаялись расхлебывать. Как запретить запуск более одной копии?
El Scorpio
18-07-2009, 06:47
Должностной инструкцией и увольнением особо отличившихся "работничков" по причине полного служебного несоответствия
ragnar40
18-07-2009, 07:24
Это не не решение проблемы. Кадровый голод у нас, работников не найти. Как программными средствами избавиться от такой засады?
mailfannah
18-07-2009, 13:04
ragnar40, ну а нельзя перед запуском смотреть есть ли программа в списке процессов и если есть, то не запускать?
ragnar40
18-07-2009, 19:24
Кто смотреть-то будет? Полуграмотные деревенские телки? Чтобы увидеть, запущена ли программа, не надо в процессы лезть, глаза опусти вниз экрана и всё. Но для них это - темный лес. И все таки - можно ли как-то запретить второй запуск. Тотал Командир ведь имеет такую настройку, почему бы и с 1С такое не провернуть?
Создайте .cmd (.bat)-файл с таким содержимым:
SET SEARCH=notepad.exe
tasklist /fi "imagename eq %SEARCH%" /fo table /nh | find /c /i "%SEARCH%"
if %ERRORLEVEL%==1 start notepad.exe
Где вместо notepad.exe нужно указать имя вашей программы. И, видимо, во втором вхождении (там, где start) - полный путь к файлу. И пусть запускают этой cmd'шкой.
Источник:
1. Постановка задачи: http://forum.oszone.net/post-896385-321.html
2. Решение: http://forum.oszone.net/post-896385-322.html
Petya V4sechkin
18-07-2009, 19:48
ragnar40, можно в свойствах ярлыка подменить запуск exe-шника на такой vbs-скрипт:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery( _
"Select Name From Win32_Process " _
& "Where Name = '1cv8.exe'")
If colProcesses.Count = 0 Then
Set objShell = Wscript.CreateObject("Wscript.Shell")
Set objEnv = objShell.Environment("Process")
objShell.Run """" + objEnv("ProgramFiles") + "\1cv81\bin\1cv8.exe"""
Else
MsgBox "Копия программы уже запущена. ", 48, "Внимание"
End If
ragnar40
18-07-2009, 19:57
Ерунда какая-то. При запуске не может найти екзешник. Я не программист, я чайник, который комп 2 года назад увидел.
Petya V4sechkin
18-07-2009, 19:59
ragnar40, в какой папке exe-шник и как называется?
ragnar40
18-07-2009, 20:13
C:\Program files\1cv8\bin\1cv8.exe
Petya V4sechkin
18-07-2009, 20:15
ragnar40, тогда строчку в скрипте исправьте:
objShell.Run """" + objEnv("ProgramFiles") + "\1cv8\bin\1cv8.exe"""
ragnar40
18-07-2009, 21:09
Вот так прямо выложить на рабочий стол и им запускать?
EvgeniuXP
18-07-2009, 23:31
Вот так прямо выложить на рабочий стол и им запускать? »
и иконку на рабочем столе смени на 1С 8.х, чтобы ваши "грамотеи" думали что всё-таки запускают 1С 8.х. :)
ragnar40
19-07-2009, 06:51
Спасибо огромное, скриптик подошел прекрасно, проблема решена.
sergant138
23-07-2009, 09:51
Мне нужно решить такую же задачу с 1c, но я что-то не пойму куда копировать этот скрипт в свойствах ярлыка. Ткните пальцем куда скопировать его!
Petya V4sechkin
23-07-2009, 09:59
sergant138, скрипт сохранить в файле с расширением .vbs
В свойствах ярлыка указать путь к этому файлу.
sergant138
23-07-2009, 10:18
Спасибо!Все Работает!
ragnar40
23-07-2009, 20:56
Во как! Не у меня одного такая проблема.
А как запретить запуск копии в терминале для пользователя
Создайте .cmd (.bat)-файл с таким содержимым:
Цитата:
SET SEARCH=notepad.exe
tasklist /fi "imagename eq %SEARCH%" /fo table /nh | find /c /i "%SEARCH%"
if %ERRORLEVEL%==1 start notepad.exe
Где вместо notepad.exe нужно указать имя вашей программы. И, видимо, во втором вхождении (там, где start) - полный путь к файлу. И пусть запускают этой cmd'шкой. »
А как изменить условие, нужно что бы запускалось 2 копии программы но НЕ 3 ?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.