irfanansari Ответов: 3

Проблема разрешения доступа к фреймворку политика безопасности


я просто делаю приложение простым и есть exe исполнительный файл из папки bin проекта я копирую и мимо в другом компьютере для запуска его некоторое время он работает приложение и несколько раз показывает эту ошибку пожалуйста, направьте меня, где я пропал без вести или какие-либо настройки
это и есть vb.net а веб форма приложения нет as.net

Что я уже пробовал:

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

Imports Microsoft.Win32

Public Class Form1
    Public trailtime As DateTime
    Dim VALUE As String
    'Public trailtime As DateTime
    Dim exePath As String = Application.ExecutablePath()
    Dim appPath As String = Application.StartupPath()

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' MsgBox(exePath)
        ' MsgBox(appPath)
        txtapplicationrunpath.Text = appPath + "\file.exe"

        ' Try
        Dim regStarUP As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", True)
        regStarUP.GetValue(IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath.ToString))
        VALUE = regStarUP.GetValue(IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath.ToString))
        If Not VALUE = Nothing Then
            If My.Settings.checkbox = True Then
                'Me.WindowState = FormWindowState.Minimized
                ' NotifyIcon1.Icon = SystemIcons.Application
                'NotifyIcon1.BalloonTipText = "thi is minimize"
                'NotifyIcon1.ShowBalloonTip(1000)
                ' Me.ShowInTaskbar = False
                Visible = False
                ShowInTaskbar = False

                ' MyBase.OnLoad(e)
            End If
        Else
            Visible = True
            ShowInTaskbar = True

        End If


        If My.Settings.status = False Then
            'Not My.Settings.check Then
            'My.Settings.check = True
            My.Settings.status = True
            trailtime = DateTime.Now
            My.Settings.expiringdate = Nothing
        Else
            If My.Settings.expiringdate > DateTime.Now Then
                'My.Settings.mydate.Add(New TimeSpan(22, 0, 0, 0)) > DateTime.Now Then
                'MsgBox("active")

            Else

                System.Diagnostics.Process.Start(My.Settings.apppath)
                'MsgBox("exried")
            End If

        End If




        txtremaingdays.Text = My.Settings.expiringdate
        Label2.Text = My.Settings.apppath
        'Label1.Text = Application.ExecutablePath.ToString

        ' Catch ex As Exception

        ' End Try
        

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'OpenFileDialog1.Filter = "EXE FILE|*.EXE|JPEG FILE|*.JPEG|JPG FILE|*.JPG"
        'If OpenFileDialog1.ShowDialog = DialogResult.OK Then
        '    txtapplicationrunpath.Text = OpenFileDialog1.FileName
        'Else
        '    MsgBox("PLEASE SELECT FILE", MsgBoxStyle.Information
        'End If

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If CheckBox1.Checked = True Then
            My.Settings.checkbox = True
        ElseIf CheckBox1.Checked = False Then
            My.Settings.checkbox = False

        End If

        If txtapplicationrunpath.Text = "" Or TextBox1.Text = "" Then
            MsgBox("Please Browse File Name Not Allow Blank")
        Else
            Dim regStarUP As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", True)
            regStarUP.GetValue(IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath.ToString))
            VALUE = regStarUP.GetValue(IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath.ToString))
            If VALUE = Nothing Then
                'If regStarUP.GetValue(Label1.Text) = Nothing Then
                'If VALUE <> Application.ExecutablePath.ToString Then
                regStarUP.SetValue(IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath.ToString), Application.ExecutablePath.ToString)
                'regStarUP.Close()
                MsgBox("WRITE COMPLETE :")
                My.Settings.apppath = txtapplicationrunpath.Text

            Else

                Dim result = MsgBox("do you want to delete old registry key file ", MsgBoxStyle.YesNo)
                If result = MsgBoxResult.Yes Then
                    regStarUP.DeleteValue(Application.ProductName, True)
                ElseIf result = MsgBoxResult.No Then
                    MsgBox("YOUR OLD FILE IS SAME AS IT WAS THANKS ")

                End If

            End If
            My.Settings.expiringdate = DateTime.Now.AddDays(TextBox1.Text)
        End If
    End Sub

End Class

3 Ответов

Рейтинг:
1

Richard MacCutchan

Похоже, что ваше приложение нуждается в Администраторе или других привилегиях. Решение состоит в том, чтобы добавить эти привилегии или удалить оскорбительный код (который мы не можем видеть) из вашего приложения.


irfanansari

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

Richard MacCutchan

Извините, но без дополнительной информации невозможно даже догадаться, что делает ваше приложение.

irfanansari

Импорт Майкрософт.С Win32

Общественного Класса Form1
Общественные trailtime как datetime
Тусклое значение в виде строки
'Public trailtime As DateTime
Dim exePath As String = приложение.ExecutablePath()
Dim appPath As String = приложение.StartupPath()

Частная суб методе form1_load(как byval отправителя как системы.Объект, бывал е как система.EventArgs) Обрабатывает MyBase.Load
'MsgBox(exePath)
'MsgBox(appPath)
txtapplicationrunpath.Text = appPath + "\file.exe"

' Пробовать
Dim regStarUP As RegistryKey = Registry.Местная машина.OpenSubKey("программное обеспечение\Microsoft\окна\CurrentVersion равное\выполнить", правда)
regStarUP.И getValue(ИО.Путь.GetFileNameWithoutExtension(Приложение.Исполняемый путь.Метод toString))
VALUE = regStarUP.GetValue(IO.Path.GetFileNameWithoutExtension(Application.Исполняемый путь.Метод toString))
Если нет значения = ничего, то
Если My.Settings.checkbox = True, то
- Я.WindowState = FormWindowState.Свернутый
'NotifyIcon1.Значок = SystemIcons.Приложение
'NotifyIcon1.BalloonTipText = "thi is minimize"
'NotifyIcon1.ShowBalloonTip(1000)
'Me.ShowInTaskbar = False
Видна = Ложь
ShowInTaskbar = False

'Ключевое слово mybase.OnLoad(e)
Конец, Если
Еще
Видимое = Истинное
ShowInTaskbar = True

Конец, Если


Если My.Settings.status = False, то
Не Мое Это.Параметры.проверить то
'Мой.Параметры.проверка = истина
Мой.Параметры.статус = истина
trailtime = DateTime.Now
My.Settings.expiringdate = ничего
Еще
Если My.Settings.expiringdate > DateTime.Ну А Теперь
'Мой.Параметры.mydate.Добавить(новый временной интервал(22, 0, 0, 0)) > Дата и время.Ну А Теперь
'MsgBox("активный")

Еще

Система.Диагностика.Процесс.Начало(Мой.Параметры.apppath)
'MsgBox("exried")
Конец, Если

Конец, Если




txtremaingdays.Текст = Мой.Параметры.expiringdate
Label2.Text = My.Settings.apppath
-Этикетка 1.Текст = Приложение.Исполняемый путь.Метод toString

"Поймать бывшего в качестве исключения

- Конец Попытки


Конец Подводной Лодки

Private Sub Button1_Click(бывал отправитель как система.Объект, бывал е как система.EventArgs) Обрабатывает Button1.Щелчок
-OpenFileDialog1.Файл фильтр = "файл EXE|*.EXE-ФАЙЛ|ФОРМАТЕ JPEG|*.ФАЙЛ JPEG ИЛИ JPG|*.В формате JPG"
- Если OpenFileDialog1.ShowDialog = DialogResult.Тогда ладно
- txtapplicationrunpath.Text = OpenFileDialog1.имя файла
-Иначе
'MsgBox("Пожалуйста, выберите файл", MsgBoxStyle.Информация
-Конец, Если

Конец Подводной Лодки

Private Sub Button2_Click(бывал отправитель как система.Объект, бывал е как система.EventArgs) Обрабатывает Button2.Click
Если CheckBox1.Checked = True, То
Мой.Параметры.флажок = истина
Ключевые Слова Elseif CheckBox1.Проверено = Ложь Тогда
Мой.Параметры.флажок = ложь

Конец, Если

Если txtapplicationrunpath.Text = "" Или TextBox1.Text = "" Тогда
MsgBox("Пожалуйста, Просмотрите Имя Файла Не Позволяйте Пустым")
Еще
Dim regStarUP As RegistryKey = Registry.Местная машина.OpenSubKey("программное обеспечение\Microsoft\окна\CurrentVersion равное\выполнить", правда)
regStarUP.И getValue(ИО.Путь.GetFileNameWithoutExtension(Приложение.Исполняемый путь.Метод toString))
VALUE = regStarUP.GetValue(IO.Path.GetFileNameWithoutExtension(Application.Исполняемый путь.Метод toString))
Если значение = ничего, то
'Если regStarUP.GetValue(Label1.Text) = ничего, то
'Если значение < gt; применение.Исполняемый путь.Тогда ToString
regStarUP.Метод setValue(ИО.Путь.GetFileNameWithoutExtension(Приложение.Исполняемый путь.ToString), Приложение.Исполняемый путь.Метод toString)
-регстаруп.Закрывать()
MsgBox("запись завершена :")
Мой.Параметры.apppath = тхт

Richard MacCutchan

Вы должны работать под правами администратора, чтобы изменить записи реестра HKEY_LOCAL_MACHINE.

irfanansari

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

Richard MacCutchan

Вы не можете сделать это в коде. Вы можете добавить манифест в свое приложение с необходимыми настройками (см. Шаг 6: Создание и внедрение манифеста приложения (UAC) | Microsoft Docs[^]). В качестве альтернативы вы можете установить свойства приложения. Но в обоих случаях пользователь должен предоставить привилегию приложению. Если вы просто хотите, чтобы приложение было добавлено в опцию запуска, то было бы проще настроить его вручную. Как правило, приложения никогда не должны касаться ключей HKEY_LOCAL_MACHINE.

Рейтинг:
0

KarstenK

Вы должны добавить права администратора в свое приложение. Другое решение-переместить код администратора в другое приложение, которое запускается при необходимости. Это имеет то преимущество, что обычное приложение не нужно запускать от имени администратора.

Чтобы включить запрос прав администратора, вы должны включить в проект некоторый манифест. Прочитайте документация microsoft относительно деталей. Возьмите только xml из примера, и xml-файл должен иметь то же имя с учетом регистра, что и приложение.


irfanansari

сэр я спрашиваю как я могу изменить свой код и какая настройка должна быть для него как настроить need to в admin

Рейтинг:
0

Dave Kreskowiak

Все, что находится в разделе HKEY_LOCAL_MACHINE в реестре, требует разрешений администратора для записи в него. Все, что находится в разделе Program Files, также требует прав администратора для записи.

Если вы пытаетесь включить/выключить опцию запуска вашего приложения при входе пользователя в систему, вы не можете сделать это как обычный пользователь при попытке записи в HKEY_LOCAL_MACHINE. Тот же путь реестра существует в разделе HKEY_CURRENT_USER, в который пользователь может писать, и он будет делать то же самое, но только для этого пользователя.


irfanansari

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

Dave Kreskowiak

Чтобы сделать что?