VB Basic NET - Контроль доступа
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
VB Basic NET - Контроль доступа - 2008-08-01 00:01:08.443333
|
|
|
RenderWare128
Сообщений: 12
Оценки: 0
Присоединился: 2008-02-16 21:47:20.660000
|
Товарисчи, помогите плиз! Пишу для себя программу класса "розыгрыш", задача проги - скопировать себя в system32. C этим вроде разобрался, в реестре она прописалась. При перезагрузке, она запускается, но выдает ошибку - процесс не может получить доступ к файлу, или пишет что файл не найден. Вообщем вот такие вот дела. Логически я конечно понимаю, что надо сделать типа "если файл уже есть" -> "тогда заново не копировать"…но вот как это реализовать? My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", _ "EXAMPLE", "C:\WINDOWS\System32\filename.exe") File.Create("filename.exe") My.Computer.FileSystem.CopyFile(".\filename.exe", "C:\WINDOWS\System32\filename.exe") SetAttr("C:\WINDOWS\System32\filename.exe", FileAttribute.Hidden)
|
|
|
RE: VB Basic NET - Контроль доступа - 2008-08-01 00:25:13.723333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Попробовать открыть файл. Если кинет эксепшн - то словить нужный и обработать. У тебя возможно 2 ситуации: 1. Файла нет. Тогда, кажись, вылетает InvalidOperationException. 2. К файлу нет доступа. Тогда SecurityException. и .т.п.
|
|
|
RE: VB Basic NET - Контроль доступа - 2008-08-01 00:47:48.146666
|
|
|
RenderWare128
Сообщений: 12
Оценки: 0
Присоединился: 2008-02-16 21:47:20.660000
|
прошу прощения, можно поподробнее? Функции я нашел, а как там значения предопределить? Может легче сделать проверку файла? (правда как сделать проверку что файл уже там есть и в этом случае не копировать его? Ведь по идее он пытается сам себя создать и сам себя заново записать туда же…ессесно у него это не выйдет…) ну или на худой конец как заставить умолкнуть файл о любых ошибках? Заранее спасибо вам!
|
|
|
RE: VB Basic NET - Контроль доступа - 2008-08-01 12:42:31.196666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
try { // копируем файл } catch( Exception ) // примитивно, лучше подставить нужный { // файл не скопировался } Читай про обработку исключительных ситуаций (try-catch-finally) и про то, какие эксепшены кидают твои функции копирования.
|
|
|
RE: VB Basic NET - Контроль доступа - 2008-08-01 15:12:43.480000
|
|
|
RenderWare128
Сообщений: 12
Оценки: 0
Присоединился: 2008-02-16 21:47:20.660000
|
Вообщем расклад такой… If Dir("C:\WINDOWS\System32\filename.exe") = "filename.exe" Then 'Тогда запускаем выводимое сообщение, остальной код не выполняем. End If If Dir("C:\WINDOWS\System32\filename.exe") = "" Then 'Тогда уже запущенный файл должен скопировать себя в указанную директорию My.Computer.FileSystem.CopyFile("filename.exe", "C:\WINDOWS\System32\filename.exe") End If Первый запуск идёт нормально, если файла в конечной директории нет. Файл успешно копируется. При втором запуске файла пишется сообщение, что файл уже есть. Или что невозможно получить доступ к файлу, так как он уже используется. Тут я вообще в тупике. Я уже не знаю как тут быть… Кстати, подскажите пожалуйста, какую переменную вставить в первый аргумент чтобы файл копировал сам себя?
|
|
|
RE: VB Basic NET - Контроль доступа - 2008-08-01 16:13:39.133333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Типа того, только на C#. Человек, ты видно не видел, что я тебе писал или поленился попробовать…
string path = "%windir%\system32\filename.exe";
bool result = false;
try
{
using ( FileStream fs = new FileStream( path, FileMode.Open ) )
{
result = false;
}
}
catch ( FileNotFoundException )
{
result = true;
}
if ( result )
{
// копируем
}
else
{
// не копируем
}
|
|
|
RE: VB Basic NET - Контроль доступа - 2008-08-02 03:07:34.873333
|
|
|
mishok
Сообщений: 239
Оценки: 0
Присоединился: 2007-07-03 23:42:21.170000
|
Imports System.IO If File.Exists("путь к файлу") Then 'что делаем, если файл есть Else 'Что делаем, если файла нет End If зы: аналогично повторился :D
|
|
|
RE: VB Basic NET - Контроль доступа - 2008-08-04 01:18:13.583333
|
|
|
RenderWare128
Сообщений: 12
Оценки: 0
Присоединился: 2008-02-16 21:47:20.660000
|
mishok и _SaZ_ Спасибо вам огромное ! Благодаря Вам, у людей появляется стремление до конца разобраться и учить программирование, а не забить болт когда что то не выходит! Спасибо Вам ещё раз. Скажите, а с реестром такой вариант прокатит? Значение = 1 - тогда делаем то то, ЕСЛИ такого значения нет, тогда ТО не делаем, а делаем ДРУГОЕ. И ещё у меня вопрос касательно модулей. Я стандартно вставляю обычный модуль - в нём прописан определенный код. Как подключить модуль к главной форме? И как сделать так, чтобы код в модулях выполнялся только по требованию, либо по вызову из результатов условий ЕСЛИ ? —- P.S.: Извините что столько вопросов сразу, просто раскопки MSDN не приносят ответа…либо просто я уже переутомился…
|
|
|
RE: VB Basic NET - Контроль доступа - 2008-08-04 07:31:32.930000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
гг. Начни с задач попроще.
|
|
|
|
|