Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Хочу все знать » Как запретить запуск двух и более копий 1С8

Ответить
Настройки темы
Как запретить запуск двух и более копий 1С8

Новый участник


Сообщения: 34
Благодарности: 0

Профиль | Отправить PM | Цитировать


В магазинах установлены компы с 1С-8. Продавцы запускают несколько копий программы с ярлыка. Натворили дел уже, замаялись расхлебывать. Как запретить запуск более одной копии?

Отправлено: 22:43, 17-07-2009

 


Moderator


Сообщения: 53172
Благодарности: 15430

Профиль | Отправить PM | Цитировать


Цитата Sinus:
что бы запускалось 2 копии программы но НЕ 3 ?
Заменить строку:
Код: Выделить весь код
If colProcesses.Count = 0 Then
на:
Код: Выделить весь код
If colProcesses.Count < 2 Then

Отправлено: 15:43, 19-04-2013 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Меня интересует как изменить именно этот код, vbs-скрипт не подходит

Цитата Sinus:
SET SEARCH=notepad.exe
tasklist /fi "imagename eq %SEARCH%" /fo table /nh | find /c /i "%SEARCH%"
if %ERRORLEVEL%==1 start notepad.exe »

Отправлено: 15:52, 19-04-2013 | #22


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Немного причесал выложенный више vbs скрипт

Код: Выделить весь код
 bitVersion =  "'64'"
    strPath =  "1cv8\8.3.10.2252\bin"
 strProcess =  "1cv8c.exe"
 runProcess = "'1cv8c.exe'"
strcomputer = "."

set objwmiservice = getobject("winmgmts:" _
    & "{impersonationlevel=impersonate}!\\" _
    & strcomputer & "\root\cimv2")

set colprocesses = objwmiservice.execquery( _
    "select name from win32_process " _
    & "where name = " & runProcess)

if colprocesses.count = 0 then
   set objshell = wscript.createobject("wscript.shell")
   set objenv = objshell.environment("process") 
      If bitVersion = "'64'" Then
         ProgramFilesPath = "%ProgramFiles%"
      Else
         ProgramFilesPath = "%ProgramFiles(x86)%"
      End If
    objshell.run """" + ProgramFilesPath + "\" + strPath + "\" + strProcess + ""
else
   msgbox "Копия программы уже запущена. ", 48, "Внимание"
end if
Для компиляции в .exe удобно использовать утилиту Vbs To Exe По ссылке есть портативная версия без установки.

Последний раз редактировалось Anoxiety, 14-07-2017 в 20:35.


Отправлено: 20:13, 14-07-2017 | #23


Аватара для lxa85

Необычный


Contributor


Сообщения: 4462
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


А если версия платформы изменится? Path исправлять?
А если надо в нескольких версиях работать?
Своя бухгалтерия в одной версии, а дочерней фирмы в другой?
Почему это не решается на уровне Конфигуратора 1С?
Хотя именно там это и надо решать.
Три года назад решали подобную задачу.
Хорошо бы указывать платформу и конфигурацию. Они довольно сильно обновляются.
УТ, УПП Конфигуратор
Код выполняемый при запуске

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 23:07, 14-07-2017 | #24


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Anoxiety:
Для компиляции в .exe »
Спрашивается — нахрена зачем?! До усрачки нужен именно исполняемый файл — делаются косметические изменения в коде, который затем компилируется консольным vbc.exe, идущим в комплекте .Net Framework.

Отправлено: 00:39, 15-07-2017 | #25


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Можно ли в этом скрипте сделать проверку запущенного процесса у текущего пользователя?
Если на терминальном серваке куча пользователей работает с 1С, текущему говорит Копия программы уже запущена.

Отправлено: 15:14, 31-08-2017 | #26



Moderator


Сообщения: 53172
Благодарности: 15430

Профиль | Отправить PM | Цитировать


ekoshko, пример:
Код: Выделить весь код
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")

Set colProcesses = objWMIService.ExecQuery( _
    "Select Name From Win32_Process " _
    & "Where Name = '1cv8.exe'")

Set objShell = Wscript.CreateObject("Wscript.Shell")
Set objEnv = objShell.Environment("Process")
strCurrentUser = UCase(objEnv("UserDomain") & "\" & objEnv("UserName"))

For Each objProcess in colProcesses
  If objProcess.GetOwner(strUser, strDomain) = 0 Then
    If UCase(strDomain & "\" & strUser) = strCurrentUser Then
      MsgBox "Копия программы уже запущена. ", 48, "Внимание"
      Wscript.Quit
    End If
  End If
Next
objShell.Run """" + objEnv("ProgramFiles") + "\1cv81\bin\1cv8.exe"""
При необходимости скорректируйте путь/имя исполняемого файла 1С.

Отправлено: 20:24, 31-08-2017 | #27


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


подскажите пожалуйста как сделать чтобы на терминальном сервере скрипт запускал проверку процесса у текущего пользователя и запускал 1с не более 5 раз?

Отправлено: 11:55, 20-09-2017 | #28


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


А что даёт в "причёсанном" коде строчка strPath = "1cv8\8.3.10.2252\bin" ? Что вообще означает strPath?
Спасибо.

Отправлено: 11:49, 11-05-2018 | #29


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Вариант:
в "причёсанном" коде »
Что Вы подразумеваете под «"причёсанным" кодом»?

Цитата Вариант:
А что даёт … строчка strPath = "1cv8\8.3.10.2252\bin" ? »
Даёт присвоение значения текстовой строки "1cv8\8.3.10.2252\bin" переменной strPath.

Цитата Вариант:
Что вообще означает strPath? »
Ничего не означает, это просто имя переменной.

Отправлено: 12:08, 11-05-2018 | #30



Компьютерный форум OSzone.net » Компьютеры + Интернет » Хочу все знать » Как запретить запуск двух и более копий 1С8

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - как через групповые политики запретить запуск программы Alex6661 Microsoft Windows 2000/XP 19 14-07-2014 18:34
[решено] Запрет за запуск копий .exe (?) 80971815772 AutoIt 2 06-09-2009 23:54
Разное - [решено] Как запретить запуск dos приложений? softer111 Microsoft Windows Vista 1 23-08-2009 02:29
[решено] Как можно предотвратить запуск сразу нескольких копий одной программы??? sashadeg AutoIt 8 01-04-2009 00:51
Как запретить запуск программы более 1 раза? svmt Хочу все знать 3 20-01-2004 08:27




 
Переход