Запуск процесса с учетными данными от службы Windows

val_loss продолжает расти, в то время как Val_acc продолжает увеличиваться Это может быть из-за функции потерь ... функция потерь рассчитывается с использованием фактических предсказанных вероятностей, в то время как точность рассчитывается с использованием одного горячего вектора.

Давайте возьмем ваш пример из 4-х классов. Для одного из обзоров истинный класс, скажем, 1 . Прогнозируемые вероятности по системе [0,25, 0,30, 0,25, 0,2]. Согласно categoryorical_accuracy ваш вывод верен, т. Е. [0, 1, 0, 0], но так как ваша вероятность вероятности так распределена ... categoryor__crossentropy также даст большие потери. [ 111]

Что касается переоснащения. Я не совсем уверен, почему введение большего количества данных вызывает проблемы.

Попробуйте увеличить шаги. Не делайте данные более несбалансированными, добавляя данные в какой-либо конкретный класс.

9
задан Zack Elan 24 March 2009 в 16:13
поделиться

5 ответов

При запуске нового использования процесса ProcessStartInfo, процесс запускается в той же станции окна и рабочем столе как процесс запуска. Если Вы будете использовать различные учетные данные затем, то пользователь не будет, в целом, иметь достаточных прав работать в том рабочем столе. Отказ инициализировать ошибки вызывается, когда user32.dll пытается инициализировать в новом процессе, и не может.

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

Править: Подробное описание о том, как сделать этот и пример кода, было, немного жаждут здесь, таким образом, я соединил статью с кодом.

        //The following security adjustments are necessary to give the new 
        //process sufficient permission to run in the service's window station
        //and desktop. This uses classes from the AsproLock library also from 
        //Asprosys.
        IntPtr hWinSta = GetProcessWindowStation();
        WindowStationSecurity ws = new WindowStationSecurity(hWinSta,
          System.Security.AccessControl.AccessControlSections.Access);
        ws.AddAccessRule(new WindowStationAccessRule("LaunchProcessUser",
            WindowStationRights.AllAccess, System.Security.AccessControl.AccessControlType.Allow));
        ws.AcceptChanges();

        IntPtr hDesk = GetThreadDesktop(GetCurrentThreadId());
        DesktopSecurity ds = new DesktopSecurity(hDesk,
            System.Security.AccessControl.AccessControlSections.Access);
        ds.AddAccessRule(new DesktopAccessRule("LaunchProcessUser",
            DesktopRights.AllAccess, System.Security.AccessControl.AccessControlType.Allow));
        ds.AcceptChanges();

        EventLog.WriteEntry("Launching application.", EventLogEntryType.Information);

        using (Process process = Process.Start(psi))
        {
        }
17
ответ дан 4 December 2019 в 06:41
поделиться

Это является симптоматическим для:
- недостаточные права;
- разрушающая нагрузка библиотеки;

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

2
ответ дан 4 December 2019 в 06:41
поделиться

Как Вы устанавливаете домен, пользователя и пароль? Вы устанавливаете домен правильно, а также пароль (он должен использовать SecureString).

Кроме того, Вы устанавливаете свойство WorkingDirectory? При использовании UserName и Пароля, документация указывает, что необходимо установить свойство WorkingDirectory.

0
ответ дан 4 December 2019 в 06:41
поделиться

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

Если идентификатор пользователя, который Вы используете для запуска второго процесса, не имеет административных прав на поле, это могло иметь место.

Легкий тест должен был бы изменить политику локальной защиты дать идентификатор пользователя "Вход в систему как услуга" и попробовать его снова.

Править: После дополнительной информации.

Пасясь по Google на этом, кажется, что 0xc0000142 касается неспособности инициализировать необходимый DLL. Есть ли что-то, что сервис имеет открытый, в котором нуждается порожденный процесс? В любом случае похоже, что это имеет отношение к процессу, это начато, и не, как Вы делаете его.

0
ответ дан 4 December 2019 в 06:41
поделиться

У меня сегодня была эта проблема, и я потратил довольно много времени, пытаясь ее понять. В итоге я создал службу как интерактивную (с помощью флажка «Разрешить взаимодействие с рабочим столом» в services.msc). Как только я это сделал, ошибки 0xc0000142 исчезли.

0
ответ дан 4 December 2019 в 06:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: