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

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

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

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


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

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


Всем привет! У меня такой вопрос, казалось бы его уже тут разжевывали сто раз.

Как запретить запуск двух копий 1С8? Тут на форуме нашел тему и получил ответ на свой вопрос, но не до конца. Так как пользователи работают по RDP с 1С то нужна проверка.

Есть такой код который отлично работает под локальным пользователем:

Код: Выделить весь код
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
Так же есть код:
Код: Выделить весь код
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"""
Тот и тот код vbs мне нравятся но связи с тем что я полный ноль в vbs помогите решить проблему. Суть проблемы такова. Я использую второй код, все бы ничего но тут проблема с путем к 1С он ProgramFiles а мне нужно ProgramFiles (х86) казалось ничего не обычного пропиши путь и будет тебе счастье. Прописал и не работает. Я думаю из-за того что в имени пробел и его нужно как-то экранировать либо прописовать путь через переменную как в первом примере где проверяться разрядность и пути к 1С. Помогите пожалуйста исправить второй код или первый для работы под RDP на текушего пользователя. Спасибо. Поиском пользовался ничего не нашел так же читал про vbs но реально нет времени его сейчас изучать.

Отправлено: 11:03, 22-09-2020

 

Аватара для NickM

Ветеран


Contributor


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

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


Цитата ee0066:
Я думаю из-за того что в имени пробел и его нужно как-то экранировать либо прописовать путь через переменную как в первом примере где проверяться разрядность и пути к 1С. »
Цитата ee0066:
objEnv() »
Возвращает переменные окружения Windows, в Вашем случае нужно вернуть %ProgramFiles(x86)%, без пробела.

Код: Выделить весь код
objShell.Run """" + objEnv("ProgramFiles(x86)") + "\1cv81\bin\1cv8.exe"""

Отправлено: 11:31, 22-09-2020 | #2



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

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


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


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

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


Написал как вы посоветовали чудо не случилось так же не находит путь и не запускает 1С

Написал как вы посоветовали чудо не случилось так же не находит путь и не запускает 1С %ProgramFiles(x86)%

Отправлено: 12:01, 22-09-2020 | #3



Moderator


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

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


ee0066, можете тупо вписать свой путь:
Код: Выделить весь код
objShell.Run """полный путь к EXE-файлу"""

Отправлено: 12:17, 22-09-2020 | #4


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


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

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


Petya V4sechkin,
Код: Выделить весь код
objShell.Run("""c:\ProgramFiles (x86)\1cv8\8.3.8.1675\bin\1cv8.exe""")
Ошибка: Не удается найти указанный файл

Спасибо большое NickM, ответ на вопрос получил и выкладываю рабочий код.

Код: Выделить весь код
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(x86)") + "\1cv8\8.3.8.1675\bin\1cv8.exe"""

Отправлено: 12:31, 22-09-2020 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как запретить запуск двух и более копий 1С8 в Терминальном сеансе пользователя! sigmatik Хочу все знать 20 15-06-2019 11:48
Как запретить запуск двух и более копий 1С8 ragnar40 Хочу все знать 33 11-05-2018 14:02
Как запретить запуск программы Mesa? severagent007 Лечение систем от вредоносных программ 5 30-12-2012 19:36
Запретить запуск конкретной программы более двух раз за сессию. kardinal96 Хочу все знать 2 03-06-2012 21:54
[решено] Как можно предотвратить запуск сразу нескольких копий одной программы??? sashadeg AutoIt 8 01-04-2009 00:51




 
Переход