Приложение Unity с OpenVR не находит путь установки при запуске через внешний модуль запуска от пользователя без прав администратора - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть приложение WPF, которое используется для проверки и загрузки zip-файла из корзины AWS S3.После загрузки он извлекает zip-файл в одну папку из базового каталога приложения.

Содержит приложение Unity и все его зависимости.Приложение WPF имеет кнопку запуска, которая используется для запуска приложения для пользователя.

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

Еще большее недоумение вызывает то, чтоесли они идут туда, где находится Unity App .exe и запускают его, то все в порядке.Кроме того, если они вручную указывают папку в локальных приложениях, она будет работать нормально, однако, если установщик указывает папку в данных локального приложения, у нее будет та же проблема.

Есть ли некоторые проблемы с настройкой пользователей с правами администраторачто мешает приложению найти DLL при запуске с помощью Process.Start ()?

Я запускаю его на Windows 10 на всех ПК. Он всегда работает на машине с правами администратора независимо от местоположения.

На машине без администратора: не работает, в файлах программы не работаетв данных локального приложения (при установке по умолчанию по пути установки) работает в данных локального приложения, если указано вручную, работает на рабочем столе, если указано вручную, работает в документах, если указано вручную

При запуске я использую ProcessStartInfo и задаю рабочийкаталог к ​​тому пути, где находится exe.Я попытался использовать startinfo Verb, чтобы убедиться, что его администратор, но ничего нет

Для кода кнопки:

var startInfo = new ProcessStartInfo
            {
                FileName = System.IO.Path.GetFileName(executablePath),
                WorkingDirectory = System.IO.Path.GetDirectoryName(executablePath)
            };
 Process p = Process.Start(startInfo);

Я ищу в каталоге Directory.GetFiles(<ExtractionPath>);

Путь, который я ищу здесь: System.IO.Path.GetFullPath(System.IO.Path.Combine(folderPath, @"./build"));

В журнале специально написано следующее:

<RI> Input initialized.
<RI> Initialized touch support.
XR: OpenVR Error! OpenVR failed initialization with error code VRInitError_Init_PathRegistryNotFound: "Installation path could not be located (110)"!

(Filename: C:\buildslave\unity\build\Modules/VR/OpenVR/OpenVR.cpp Line: 1898)
XR: OpenVR Error! OpenVR failed initialization with error code VRInitError_Init_PathRegistryNotFound: "Installation path could not be located (110)"!

(Filename: C:\buildslave\unity\build\Modules/VR/OpenVR/OpenVR.cpp Line: 1898)

Сразу после этого есть достаточно стандартная инициализация, которая не удалась VR может быть отключен в настройках плеератрассировка стека.

Я ожидаю, что приложение будет запускаться правильно и сможет находить его зависимости в подпапках, независимо от того, являетесь ли вы администратором или нет, но фактический результат заключается в том, что приложение, не являющееся администратором, не находит установку OpenVRпуть.

...