Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по поводу реестровой автозагрузки, VBasicScript__длинный вопрос 
:(
    Опции темы
Начинающий_новичок
Дата 24.7.2004, 14:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











У меня такой вопрос: КАК отправить скрипт в реестр, в автозагрузку с дискеты ------ подробнее:
Наример, у меня скрипт есть на дискете(в корневом каталоге) - "Напоминалка.vbs" Я наисал этот скрипт для
того, чтобы он запускался вместе с Windows и напоминал мне о чём либо, но чтоб он запустился вместе
с Windows нужно, очевидно, поставить его в автозагрузку! Мне приходится вручную копировать
скрипт - "Напоминалка.vbs" в меню Пуск->Программы->Автозагрузка. Но хочется чтоб при запуске с дискеты
скрипт "Напоминалка.vbs" автоматически кидался в автозагрузку, в реестр! Конечно можно воспользоваться
таким скриптом, но он кидает "Напоминалка.vbs" не в реестровую автозагрузку, а просто в автозагрузку:

Код
(скрипт для Windows98)
Set FSO = CreateObject("Scripting.FileSystemObject")
if fso.FileExists("a:\Напоминалка.vbs") then
fso.copyfile "a:\Напоминалка.vbs", "C:\Windows\Главное меню\Программы\Автозагрузка\Напоминалка.vbs"
End if

(скрипт для WindowsXP)
Set FSO = CreateObject("Scripting.FileSystemObject")
if fso.FileExists("a:\Напоминалка.vbs") then
fso.copyfile "a:\Напоминалка.vbs", "C:\Documents and Settings\All Users\Главное меню\Программы\Автозагрузка\Напоминалка.vbs"
End if



Тем более он объёмный(скрипт), и чтоб он был универсальный для WindowsXP и Windows98 приходится сначала описывать
функцию для WindowsXP, а потом для Windows98 или наооборот... Короче говоря хочется одну
функцию - и для XP и для 98 Windows'а которая кидала бы скрипт "Напоминалка.vbs" в реестровую автозагрузку! Зачем имено с
дискеты запускать и кидать в реестр - потому-что у меня есть немного нформации "как записывать в реестр", но я в ней не могу
разобраться, единственое что я понял - так это, что для облегчения копирования скрипта в реестровую автозагрузку нужно этот
скрипт запустить из корневого каталога - например с дискеты - диск A !!
Так значит у меня есть диск А, на нем скрипт "Напоминалка.vbs" - "A:\Напоминалка.vbs", и мне его надо записать в
автозагрузку (в реестр), (не исключаю, что для начала нужно "Напоминалка.vbs" перенести на сам копьютер). Ниже я
представлю скрипт в котором я не могу разобраться, ЛЮДИ ДОБРЫЕ ЕСЛИ ВЫ ЭТОТ СКРИПТ ПОЙМЁТЕ, ЕСЛИ НЕ СЛОЖНО,
ПОДСТАВЬТЕ В ЭТОТ СКРИПТ ПАРАМЕТРЫ КОТОРЫЕ Я ЗАДАЛ - "A:\Напоминалка.vbs" , (СКРИПТ ВЗЯТ С КАКОГО-ТО
САЙТА)
Представляю скрипт "точку в точку" с сайта:

Код
A (Flangie):

Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, _
ByVal lpFileName As String) As Long
Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

'Registry keys
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006

'Registry access constants
Public Const KEY_QUERY_VALUE = &H1 'Permission to query subkey data.
Public Const KEY_SET_VALUE = &H2 'Permission to set subkey data.
Public Const KEY_CREATE_SUB_KEY = &H4
Public Const KEY_ENUMERATE_SUB_KEYS = &H8
Public Const KEY_NOTIFY = &H10
Public Const KEY_CREATE_LINK = &H20
Public Const KEY_READ = KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY
Public Const KEY_WRITE = KEY_SET_VALUE Or KEY_CREATE_SUB_KEY
Public Const KEY_ALL_ACCESS = KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_SUB_KEY _
Or KEY_CREATE_LINK Or KEY_SET_VALUE

Public Const REG_OPTION_NON_VOLATILE = 0&
Public Const REG_OPTION_VOLATILE = &H1

Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

Public Enum RegTypes
RegNonee = 0
RegSZ = 1
RegExpandSz = 2
RegBinary = 3
RegDword = 4
RegDwordLittleEndian = 4
RegDwordBigEndian = 5
RegLink = 6
RegMultiSz = 7
RegResourceList = 8
RegFulResourceDesc = 9
End Enum

Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long

Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
ByVal Reserved As Long, ByVal dwType As Long, ByVal szData As String, ByVal cbData As Long) As Long

Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long

Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, _
ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal szData As String, _
ByRef lpcbData As Long) As Long

Declare Function RegCreateKeyEx Lib "advapi32" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, _
ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long

Public Function RegGetValue(Root As Long, SubKey As String, Key As String) As String
Dim Buffer As String, hKey As Long, nType As Long, nSize As Long
RegGetValue = 0
If Not RegOpenKeyEx(Root, SubKey, 0, KEY_READ, hKey) Then
nSize = 0
RegQueryValueEx hKey, Key, 0, nType, Buffer, nSize
If hKey And nSize > 0 And nType = RegSZ Then
Buffer = Space(nSize + 1)
RegQueryValueEx hKey, Key, 0, nType, Buffer, nSize
RegGetValue = Left(Buffer, nSize - 1)
RegCloseKey hKey
End If
End If
End Function

Public Sub RegSetValue(Root As Long, SubKey As String, Key As String, value As String)
Dim hKey As Long, sa As SECURITY_ATTRIBUTES, nDisp As Long
If Not RegCreateKeyEx(Root, SubKey, 0, vbNull, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, sa, hKey, nDisp) Then
RegSetValueEx hKey, Key, 0, RegSZ, value, Len(value) + 1
RegCloseKey hKey
End If
End Sub

' использование:

' RegSetValue HKEY_LOCAL_MACHINE, "Software\Folder", "Key", "StringValue"
' string= RegGetValue(HKEY_LOCAL_MACHINE, "Software\Folder", "Key")
' ----------------------------------------------------------------------
' вместо Software\Folder - пишите нужные вам папки

' вместо Key - имя строковой переменной (которая будет храниться
' в реестре)

' вместо StringValue - значение строковой переменной


ПОМОГИТЕ КТО ЗНАЕТ!!!!!!!!!!!!!!!!!!
  Вверх
Enflout
Дата 24.7.2004, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 22.5.2004

Репутация: нет
Всего: 6



Значит так поступаем с реестром:
Set Reg = CreateObject("WScript.Shell")
Reg.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\yourprogram", "C:\111\Напоминалка.vbs"
Получится ключ под названием yourprogram и путем для запуска твоего скрипта(Run выбрал условно, для примера).
Перед использованием нужно скопировать твою напоминалку по указанному адресу(в данном случае C:\111\) или вставлять дискету при каждой загрузке. Для этого смотри в fso file.copy.
Теперь по отношению приведенного кода. Это модуль, который можно подключить к своей программе и использовать его как показано выше(тобой), но это api-функции, а у тебя скрипт.
Ну вроде все, если неправ, то поправьте, но вроде все правильно. smile.gif
PM MAIL   Вверх
Crash_K
Дата 29.7.2004, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 13.12.2003
Где: Одесса

Репутация: нет
Всего: нет



Спасибо, а переменные какие-то надо вводить перед этим:
Код
Set Reg = CreateObject("WScript.Shell")
Reg.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\yourprogram", "C:\111\Напоминалка.vbs"

PM MAIL ICQ   Вверх
Enflout
Дата 29.7.2004, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 22.5.2004

Репутация: нет
Всего: 6



Нет, не надо. Создаешь vbs-скрипт и туда вводишь этот код. После его выполнения в реестре появится по адресу HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ ключ yourprogram со значением C:\111\Напоминалка.vbs. smile.gif
PM MAIL   Вверх
Naghual
Дата 29.7.2004, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Crash_K
А ты часом не вирусок рисуеш? А?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
cardinal
Дата 30.7.2004, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99




 ! 
 
Модератор: Crash_K еще раз напоминаю, что обсуждение написания вирусов на форуме запрещено! Если ты не пишешь вирус, то проигнорируй это сообщение.

Naghual, если что - сделай Report. Спасибо.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Crash_K
Дата 31.7.2004, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 13.12.2003
Где: Одесса

Репутация: нет
Всего: нет



Игнорирую, потому, что я пишу программу наподобие программы SXNetworker, эта программа предназначена для подшучивания над друзьями - запускаю приложение (одно не программа сама) с дискеты и оно записывается в автозагрузуку. Иду на другую машину которая в сети с вышеуказаной машиной и завожу IP адрес той машины и начинаю прикалываться - проезжает экран, копируются всякие файлы и т.д
PM MAIL ICQ   Вверх
Crash_K
Дата 31.7.2004, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 13.12.2003
Где: Одесса

Репутация: нет
Всего: нет



Слушай Templar$, а удалить ключ из реестра как?
Uninstall хочется сделать !!!
PM MAIL ICQ   Вверх
Enflout
Дата 31.7.2004, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 22.5.2004

Репутация: нет
Всего: 6



Crash_K, я конечно ничего не имею против, но думаю было бы гораздо лучше, если бы вы сами пытались решить такого рода задачи! Ради интереса дал яндексу запрос "VBS работа с реестром" и получил 368 результатов. Мало? Ну раз уж написал все это, то дам и ответ на ваш вопрос:
Set Reg = CreateObject("WScript.Shell")
Reg.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\yourprogram"
Вот и все!
Не задавайте пожалуйста больше таких вопросов, не воспользовавшись хотя бы поиском!
ЗЫ
Если у вас установлено что-то вроде win9x, то зайдите в %SystemRoot%\Samples\WSH полегчает.
PM MAIL   Вверх
Crash_K
Дата 31.7.2004, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 13.12.2003
Где: Одесса

Репутация: нет
Всего: нет



В принципе я сначало спросил потом попробывал удалить таким способом как вы указали, но всё равно спасибо!!!
PM MAIL ICQ   Вверх
Guest
Дата 23.11.2005, 18:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Crash_K конечно ничего не имею против, но думаю было бы гораздо лучше, если бы вы сами пытались решить такого рода задачи! Ради интереса дал яндексу запрос "VBS работа с реестром" и получил 368 результатов. Мало? Ну раз уж написал все это, то дам и ответ на ваш вопрос:
Код

Set Reg = CreateObject("WScript.Shell")
Reg.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\yourprogram"

Вот и все!
Не задавайте пожалуйста больше таких вопросов, не воспользовавшись хотя бы поиском!
ЗЫ
Если у вас установлено что-то вроде win9x, то зайдите в %SystemRoot%\Samples\WSH полегчает.

Это сообщение отредактировал(а) cardinal - 23.11.2005, 18:12
  Вверх
cardinal
Дата 23.11.2005, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Гость_LOOX, не выражайтесь пожалуйста на форуме и используйте теги для кода в будущем!


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.