Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
Любитель
 Аватар для Тим70
1054 / 764 / 161
Регистрация: 27.01.2019
Сообщений: 1,543

Поменять обои на рабочий стол через реестр

27.08.2022, 20:08. Показов 3808. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.У меня Вин 7 начальная,поэтому для смены обоев приходиться заходить в персонализацию.Я и подумал ,а не прощели менять обои через реестр,но с реестером я не работал и ни чего не получается.Пробовал разные варианты,все в пустую.Вот один код,он ничего не меняет.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Class Form1
    Dim Pu, A, B, C As String
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Try
            A = "HKEY_CURRENT_USER\ Control Panel\ Desktop"
            B = "Wallpaper"
            My.Computer.Registry.SetValue(A, B, Pu)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            Dim FD As New OpenFileDialog
            FD.RestoreDirectory = True
            If FD.ShowDialog <> DialogResult.OK Then Exit Sub
            Pu = FD.FileName
            PictureBox1.Image = Image.FromFile(Pu)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
End Class
Поменять нужно запись,см.миниатюру.Как это сделать?
Миниатюры
Поменять обои на рабочий стол через реестр  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.08.2022, 20:08
Ответы с готовыми решениями:

Нужна программа, которая устанавливает обои на рабочий стол
Нужна программа, которая устанавливает обои на рабочий стол. Очень простую. Заранее спасибо!!

Обои на рабочий стол не ставятся
а вот у меня все иконки на месте и меню пуск в порядке. Но обои на рабочий стол не ставятся, просто серый фон стоит и все. Это в учетной...

Не устанавливаются обои на рабочий стол!
Привет всем! Я уже юзал поиск но ниче толкового по своей проблеме не нашел. А проблема такая: не ставятся обои на рабочий стол в Windows XP...

49
Любитель
 Аватар для Тим70
1054 / 764 / 161
Регистрация: 27.01.2019
Сообщений: 1,543
28.08.2022, 09:42  [ТС]
Студворк — интернет-сервис помощи студентам
January29, Только заменой самого нетбука
1
28.08.2022, 10:30

Не по теме:

Тим70, у вас Windows 7 Starter

0
28.08.2022, 11:53  [ТС]

Не по теме:

January29, Ага

0
3268 / 3335 / 558
Регистрация: 17.02.2019
Сообщений: 5,240
28.08.2022, 12:36
Тим70, Ну сложно там все. Как в реестре править.
Кликните здесь для просмотра всего текста
Изменить надо права доступа к ключам чтобы иметь возможность их редактировать.
Для этого нужно: правый клик на ветке Desktop, пункт «Разрешения…» (Permissions)
Добавляется группа пользователей с именем «Все» (Everyone)
и ей даётся разрешение «Полный контроль» (Ful control)
В ветке Desktop находится ключ Wallpaper, содержащий полный путь к изображению рабочего стола. Этот путь нужно изменить на путь к новым обоям.
И вот снова Убрать разрешение полного доступа у группы «Все», оставив только возможность чтения.
Перезагрузите компьютер или перелогинтесь.

Вот теперь, как это все провернуть. Может как то стать учетным администратором.
1
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
28.08.2022, 14:15
Попробуй этот код для смены разрешений на правку разделов в реестре.
Код не мой, поэтому справь под свою задачу.

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
    Imports System.Security
    Imports System.Security.Principal
    Imports System.Security.AccessControl
 
    Imports Microsoft.Win32
 
    Private Sub TestMethod(ByVal subkey As String)
        ' Create access rule giving full control to the Administrator user.
        Dim rs As New RegistrySecurity()
        rs.AddAccessRule( New RegistryAccessRule( _
            "Administrator", _
            RegistryRights.FullControl, _
            InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit, _
            PropagationFlags.InheritOnly, _
            AccessControlType.Allow))
 
        ' Get the registry key desired with ChangePermissions Rights.
        Dim rk As RegistryKey = Registry.LocalMachine.OpenSubKey( _
            subkey, _
            RegistryKeyPermissionCheck.ReadWriteSubTree, _
            RegistryRights.ChangePermissions Or RegistryRights.ReadKey)
 
        ' Apply the new access rule to this Registry Key.
        rk.SetAccessControl(rs)
 
        ' Get the registry key desired with ChangePermissions Rights.
        rk = Registry.LocalMachine.OpenSubKey( _
            subkey, _
            RegistryKeyPermissionCheck.ReadWriteSubTree, _
            RegistryRights.ChangePermissions Or RegistryRights.ReadKey)
 
        ' Apply the new access rule to this Registry Key.
        rk.SetAccessControl(rs)
 
        ' Open the key again with full control.
        rk = Registry.LocalMachine.OpenSubKey( _
            subkey, _
            RegistryKeyPermissionCheck.ReadWriteSubTree, _
            RegistryRights.FullControl)
 
        ' Set the security's owner to be Administrator.
        rs.SetOwner(New NTAccount("Administrator"))
 
        ' Set the key with the changed permission so Administrator is now owner.
        rk.SetAccessControl(rs)
    End Sub
Добавлено через 3 минуты
Ну и конечно же пускать свою программу от имени администратора.

Добавлено через 49 минут
Вот еще вариант установки правд доступа:
VB.NET
1
2
3
4
5
6
7
Using key As RegistryKey = Registry.LocalMachine.OpenSubKey("Software\Test", True)  
    Dim regSec As RegistrySecurity = key.GetAccessControl(AccessControlSections.All)  
    Dim rule As New RegistryAccessRule("Everyone", RegistryRights.FullControl, _  
        InheritanceFlags.None, PropagationFlags.None, AccessControlType.Allow)  
    regSec.AddAccessRule(rule)  
    key.SetAccessControl(regSec)  
End Using
2
Любитель
 Аватар для Тим70
1054 / 764 / 161
Регистрация: 27.01.2019
Сообщений: 1,543
28.08.2022, 14:43  [ТС]
Цитата Сообщение от Yury Komar Посмотреть сообщение
Private Sub TestMethod(ByVal subkey As String)
А какой String сюда нужно передать?

Добавлено через 18 минут
January29, Это я еще вчера пробовал.Разрешение дается,ставлю путь к своей картинке, перезагрузка и появляется какая то системная заставка...
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
28.08.2022, 14:46
Тим70, Control Panel\Desktop, но и в коде, в строках 18, 27 и 36 нужно сменить HKLM на HKCU
1
Любитель
 Аватар для Тим70
1054 / 764 / 161
Регистрация: 27.01.2019
Сообщений: 1,543
28.08.2022, 14:53  [ТС]
Yury Komar, Выдал ошибку.
Миниатюры
Поменять обои на рабочий стол через реестр  
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
28.08.2022, 15:01
Тим70, прочтите посты выше.

Смените LocalMachine на CurrentUser
1
Любитель
 Аватар для Тим70
1054 / 764 / 161
Регистрация: 27.01.2019
Сообщений: 1,543
28.08.2022, 15:04  [ТС]
Цитата Сообщение от Yury Komar Посмотреть сообщение
в строках 18, 27 и 36 нужно сменить HKLM на HKCU
В упор такого не нахожу.
0
Любитель
 Аватар для Тим70
1054 / 764 / 161
Регистрация: 27.01.2019
Сообщений: 1,543
28.08.2022, 15:10  [ТС]
И еще ощибка.
Миниатюры
Поменять обои на рабочий стол через реестр  
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
28.08.2022, 16:40
Тим70, Я не могу сейчас проверить код, не у компа.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
29.08.2022, 17:01
Лучший ответ Сообщение было отмечено Тим70 как решение

Решение

Тим70, Вот проверенный и рабочий код, применяет полный доступ к вашему имени вашего UserAccount.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    Private Sub SetFullAccesToRegKey(UserAccount As String, regRoot As Microsoft.Win32.RegistryKey, ByVal subkey As String)
        ' Create access rule giving full control to the Administrator user.
        Dim rs As New System.Security.AccessControl.RegistrySecurity()
        rs.AddAccessRule(New Security.AccessControl.RegistryAccessRule(UserAccount, Security.AccessControl.RegistryRights.FullControl, Security.AccessControl.InheritanceFlags.ContainerInherit Or Security.AccessControl.InheritanceFlags.ObjectInherit, Security.AccessControl.PropagationFlags.InheritOnly, Security.AccessControl.AccessControlType.Allow))
 
        ' Get the registry key desired with ChangePermissions Rights.
        Dim rk As Microsoft.Win32.RegistryKey = regRoot.OpenSubKey(subkey, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree, Security.AccessControl.RegistryRights.ChangePermissions Or Security.AccessControl.RegistryRights.ReadKey)
 
        ' Apply the new access rule to this Registry Key.
        rk.SetAccessControl(rs)
 
        ' Get the registry key desired with ChangePermissions Rights.
        rk = regRoot.OpenSubKey(subkey, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree, Security.AccessControl.RegistryRights.ChangePermissions Or Security.AccessControl.RegistryRights.ReadKey)
 
        ' Apply the new access rule to this Registry Key.
        rk.SetAccessControl(rs)
 
        ' Open the key again with full control.
        rk = regRoot.OpenSubKey(subkey, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree, Security.AccessControl.RegistryRights.FullControl)
 
        ' Set the security's owner to be Administrator.
        rs.SetOwner(New Security.Principal.NTAccount(UserAccount))
 
        ' Set the key with the changed permission so Administrator is now owner.
        rk.SetAccessControl(rs)
    End Sub
Использовать так:
VB.NET
1
SetFullAccesToRegKey(My.User.Name, Microsoft.Win32.Registry.CurrentUser, "Control Panel\Desktop")
Добавлено через 19 минут
Тим70, Можете попробовать реализовать в VB.NET такой подход, описанный здесь, через командную строку.

Добавлено через 1 час 43 минуты
Проверьте после предоставления доступа к разделу в реесте, устанавливается ли ваша картинка?
Я проверить не могу, так как у меня такой проблемы не наббюдается.
2
Любитель
 Аватар для Тим70
1054 / 764 / 161
Регистрация: 27.01.2019
Сообщений: 1,543
29.08.2022, 20:23  [ТС]
Yury Komar, Спасибо,но все равно он ставит свою системную картинку.И в регистре путь именно к этой картинки.Видимо с моей системой ничего нельзя сделать...
закрывайте тему
0
Любитель
 Аватар для Тим70
1054 / 764 / 161
Регистрация: 27.01.2019
Сообщений: 1,543
30.08.2022, 09:35  [ТС]
Вот работающий код.Только у меня он ставит системную картинку.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Imports System.Runtime.InteropServices
Public Class Form1
    Dim Pu, A, B, C As String
    Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Integer, ByVal uParam As Integer, ByVal lpvParam As String, ByVal fuWinIni As Integer) As Integer
 
    Private Const SPI_SETDESKWALLPAPER = 20
    Const SHCNE_ASSOCCHANGED As Long = &H8000000L
    Const SHCNF_IDLIST As UInteger = &H0UI
    Private Const UPDATEINIFILE = &H1
    <DllImport("shell32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
    Public Shared Sub SHChangeNotify(ByVal wEventId As UInt32, ByVal uFlags As UInt32, ByVal dwItem1 As IntPtr, ByVal dwItem2 As IntPtr)
    End Sub
 
    Private Sub Button3_Click(sender As Object, e As EventArgs)
        Try
            SetFullAccesToRegKey(My.User.Name, Microsoft.Win32.Registry.CurrentUser, "Control Panel\Desktop") 'Yury Komar
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim dlg As New OpenFileDialog
        dlg.Title = "Выберите фоновое изображение рабочего стола"
        dlg.Filter = ""
        If dlg.ShowDialog = Windows.Forms.DialogResult.OK Then
            TextBox1.Text = dlg.FileName
            PictureBox1.BackgroundImage = Image.FromFile(dlg.FileName)
            PictureBox1.BackgroundImageLayout = ImageLayout.Stretch
        End If
    End Sub
 
    Private Sub На_стол_Click(sender As Object, e As EventArgs) Handles Button2.Click
 
        SetFullAccesToRegKey(My.User.Name, Microsoft.Win32.Registry.CurrentUser, "Control Panel\Desktop") 'Yury Komar
 
        SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, TextBox1.Text, UPDATEINIFILE)
 
    End Sub
 
    Private Sub SetFullAccesToRegKey(UserAccount As String, regRoot As Microsoft.Win32.RegistryKey, ByVal subkey As String)
        ' Create access rule giving full control to the Administrator user.
        Dim rs As New System.Security.AccessControl.RegistrySecurity()
        rs.AddAccessRule(New Security.AccessControl.RegistryAccessRule(UserAccount, Security.AccessControl.RegistryRights.FullControl, Security.AccessControl.InheritanceFlags.ContainerInherit Or Security.AccessControl.InheritanceFlags.ObjectInherit, Security.AccessControl.PropagationFlags.InheritOnly, Security.AccessControl.AccessControlType.Allow))
 
        ' Get the registry key desired with ChangePermissions Rights.
        Dim rk As Microsoft.Win32.RegistryKey = regRoot.OpenSubKey(subkey, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree, Security.AccessControl.RegistryRights.ChangePermissions Or Security.AccessControl.RegistryRights.ReadKey)
 
        ' Apply the new access rule to this Registry Key.
        rk.SetAccessControl(rs)
 
        ' Get the registry key desired with ChangePermissions Rights.
        rk = regRoot.OpenSubKey(subkey, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree, Security.AccessControl.RegistryRights.ChangePermissions Or Security.AccessControl.RegistryRights.ReadKey)
 
        ' Apply the new access rule to this Registry Key.
        rk.SetAccessControl(rs)
 
        ' Open the key again with full control.
        rk = regRoot.OpenSubKey(subkey, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree, Security.AccessControl.RegistryRights.FullControl)
 
        ' Set the security's owner to be Administrator.
        rs.SetOwner(New Security.Principal.NTAccount(UserAccount))
 
        ' Set the key with the changed permission so Administrator is now owner.
        rk.SetAccessControl(rs)
    End Sub
End Class
1
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
30.08.2022, 11:11
Тим70, А что за системная картинка, не понятно.
0
Любитель
 Аватар для Тим70
1054 / 764 / 161
Регистрация: 27.01.2019
Сообщений: 1,543
30.08.2022, 13:05  [ТС]
Yury Komar, Вот ее путь
C:\Windows\Web\Wallpaper\Windows\img0.jp g
эта же картинка находится здесь
C:\Windows\winsxs\x86_microsoft-windows-s..l-wallpaper-windows_31bf3856ad364e35_6.1.7600.16385_ none_dae87c5811c55450\img0.jpg
и
C:\Windows\winsxs\x86_microsoft-windows-s..l-wallpaper-starter_31bf3856ad364e35_6.1.7600.16385_ none_9462c91476d27ba4\img0.jpg
0
Любитель
 Аватар для Тим70
1054 / 764 / 161
Регистрация: 27.01.2019
Сообщений: 1,543
30.08.2022, 13:22  [ТС]
Вот она
Миниатюры
Поменять обои на рабочий стол через реестр  
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
30.08.2022, 14:42
Тим70, так может, в случае Win7Starter, нужно заменять именно саму картинку, а не путь к ней в реестре?
Точно не в курсе этих проблем, так как не работал с Начальной версие этой ОС.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
30.08.2022, 15:08
Вы не можете сменить обои разделочного стола в Win7Starter.
Это фундаментальное ограничение Starter ОС.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.08.2022, 15:08

Обои на рабочий стол не ставятся
у меня винда xp, почему картинка не ставяться на рабочий стол по середине экрана?ее можно постаить только если ее расширить по экрану либо...

Обои на рабочий стол, Huawei Honor
Всем привет. Есть у меня Huawei Honor. На нем стоит Android 4.0. При установке обоев на рабочий стол, предлагается выбрать область...

Модифицировать код, который назначает обои на рабочий стол
Есть код, который назначает обои на рабочий стол. Нужно изменить его так, чтобы можно было назначать картинку на рабочий стол в ручную. В...

как устанавливать обои на рабочий стол в ноутбуке e machines?
как устанавливать обои на рабочий стол в ноутбуке e machines?

Два монитора - как установить разные обои на каждый рабочий стол
Подскажите. Есть два монитора. Основной 1920*1080 и второй 1024*768, рабочий стол один. Поставил картинку на рабочий стол, на втором...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru