У меня есть приложение 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путь.