Необходимы ли права администратора для создания значка уведомления
Я использую WPF NotifyIcon https://www.codeproject.com/Articles/36468/WPF-NotifyIcon-2 Филипп, для одного из моих инструментов. Я не могу создать значок уведомления без прав администратора в системном трее. Инструмент будет работать на компьютерах конечных пользователей, которые не будут иметь никаких прав администратора, и инструмент не сможет создать значок уведомления.
Что я уже пробовал:
Это код в моем методе Main()
public static void Main(string[] args) { DOTray dt = new DOTray(); //Make the icon visible. Most imp MyDOIcon.Visibility = System.Windows.Visibility.Visible; }
Это код окна WPF
<Window x:Class="DeviceOne.DOTray" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="DeviceOne" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:DeviceOne" xmlns:gif="http://wpfanimatedgif.codeplex.com" xmlns:app="clr-namespace:DeviceOne" xmlns:tb="http://www.hardcodet.net/taskbar" WindowStyle="None" WindowStartupLocation="CenterScreen" BorderBrush="Gray" BorderThickness="1" Icon="/Resources/DOBlue.ico" ShowInTaskbar="False" Visibility="Hidden" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" Height="300" Width="300" Name="TopWindow" ResizeMode="NoResize"> <Grid> <tb:TaskbarIcon x:Name="MyDOIcon" IconSource="Resources/DOBlue.ico" ToolTipText="DeviceOne" Visibility="Collapsed" PopupActivation="LeftOrDoubleClick"> <tb:TaskbarIcon.TrayToolTip> <Border Background="#FF4B4B4B" BorderBrush="#ffed00" BorderThickness="2" CornerRadius="4" Opacity="0.8" Width="120" Height="40"> <TextBlock FontWeight="Bold" Foreground="#ffed00" Text="DeviceOne" HorizontalAlignment="Center" VerticalAlignment="Center" /> </Border> </tb:TaskbarIcon.TrayToolTip> <tb:TaskbarIcon.ContextMenu> <ContextMenu FontWeight="Bold" Foreground="#FF4B4B4B" FontStyle="Normal" FontFamily="Microsoft YaHei" BorderThickness="1.2" BorderBrush="#FF747474" > <MenuItem Header="User Info" ToolTip="Load User Information" Click="UserInfo_Click"> <MenuItem.Icon> <Image Source="Resources/user-info-new.png"></Image> </MenuItem.Icon> </MenuItem> <MenuItem Header="Restore Windows" Click="RestoreWindows_Click" > <MenuItem.Icon> <Image Source="Resources/Restore-Window-Icon.png"></Image> </MenuItem.Icon> </MenuItem> <MenuItem Header="About DeviceOne" Click="AboutDeviceOne_Click" > <MenuItem.Icon> <Image Source="Resources/DO.png"></Image> </MenuItem.Icon> </MenuItem> <MenuItem Header="Exit" Click="ExitDeviceOne_Click" > <MenuItem.Icon> <Image Source="Resources/exit-icon.png"></Image> </MenuItem.Icon> </MenuItem> </ContextMenu> </tb:TaskbarIcon.ContextMenu> </tb:TaskbarIcon> </Grid> </Window>
Это не удается создать значок, когда он не запускается от имени администратора. Действительно ли права администратора необходимы для создания простой иконки? или что-то не так с кодом? Пожалуйста, помогите!
raddevus
Я знаю, что нет никаких требований в WinForms и использовании NotifyIcon, так что это, вероятно, то же самое в WPF. Вот пример, который я только что запустил и запустил в LINQPad (Linqpad.net) и он отобразил notifyicon в трее, хотя я не являюсь администратором на своей машине : https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.notifyicon.-ctor?view=netframework-4.8#System_Windows_Forms_NotifyIcon__ctor
Mohith Kumar
Это помогло. Спасибо!
raddevus
О, кроме того, я вижу, что это выглядит так, как будто WPF не реализует NotifyIcon в соответствии с этим: https://stackoverflow.com/questions/17674761/can-i-use-notifyicon-in-wpf
Но здесь, на CP, есть проект, который может помочь вам пройти через него: https://www.codeproject.com/Articles/36468/WPF-NotifyIcon
Richard Deeming
NB: То MyDOIcon
переменная в вашем Main
метод, по-видимому, не имеет никакого отношения к MyDOIcon
управление в вашем окне.
Я подозреваю, что вы имели в виду:
dt.MyDOIcon.Visibility = System.Windows.Visibility.Visible;
Но если вы всегда устанавливаете это свойство, то было бы проще установить его непосредственно в разметке XAML.
Mohith Kumar
Да, я ставлю его точно так же.