Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: как программно запаролить папку в дот нете ? Добавлено: 14.11.05 19:59  

Автор вопроса:  student-uni

Ответить

  Ответы Всего ответов: 27  

Номер ответа: 16
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #16 Добавлено: 17.11.05 19:17
2 Павел
а примерчика нету ?

2 Vito

дело в том, что на *.рдп файл достаточно кликнуть и соединение само пойдёт. Так что зашифрован там пароль или нет это важно лишь для того, чтоб его не считали и не использовали с другого компа.
Но на этом компе его может запустить каждый у кого есть доступ. А этого низяяя, низяяя.

Ответить

Номер ответа: 17
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #17 Добавлено: 17.11.05 19:22
2 Hacker

файл myConnect.rdp извлеч куда-то подальше :) скормить его cmd, когда dosShell вернёт результат, удалить файл ... при всём этом следить чтоб не запустиль Filemon, а если запустят - отформатировать HARD! :))))

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

Ответить

Номер ответа: 18
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #18
Добавлено: 17.11.05 19:39
запуск процесса:

Dim myProcess as New Process()
myProcess.StartInfo.FileName = "someapp.exe"
myProcess.Start()


Далее myProcess.StandardOutput - поток вывода, myProcess.StandardInput - поток ввода. Работать с ними можно как и с любыми другими потоками.

Вот пример из MSDN, запускающи программу и читающий данные из потока StandardOutput:

Dim myProcess As New Process()
Dim myProcessStartInfo As New ProcessStartInfo("Process_StandardOutput_Sample.exe";)
myProcessStartInfo.UseShellExecute = False
myProcessStartInfo.RedirectStandardOutput = True
myProcess.StartInfo = myProcessStartInfo
myProcess.Start()

Dim myStreamReader As StreamReader = myProcess.StandardOutput
' Read the standard output of the spawned process.
Dim myString As String = myStreamReader.ReadLine()
Console.WriteLine(myString)
myProcess.Close()

Ответить

Номер ответа: 19
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #19 Добавлено: 18.11.05 01:12
Есть хоть и маленькая но потенциальная опасность,
что зверюга нажмет ресет в самый неподходящий момент и файл не будет удалён.


В Run (а ещё лучше подальше) добавить прогу которая будет удалять файл myConnect.rdp при загрузке компа...

Ответить

Номер ответа: 20
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #20 Добавлено: 18.11.05 19:05
запуталса

есть у меня теперъ 2 потока
1 - читает из фаила
2 - передает в процесс

как теперь передать из потока в поток ?

или ето наверно должно одним потоком бытъ ?



 Dim myProcess As New Process

            myProcess.StartInfo.FileName = "mstsc.exe"
            myProcess.StartInfo.UseShellExecute = False
            myProcess.StartInfo.RedirectStandardOutput = True
            myProcess.Start()

            Dim myStreamReader2 As StreamReader = myProcess.StandardOutput

            Dim myStreamReader As StreamReader = File.OpenText("myTerminal.rdp";)

            Dim myString As String = myStreamReader.ReadLine()

            While myStreamReader.Peek > -1
                myString += myStreamReader.ReadLine + Environment.NewLine
            End While

            myStreamReader.Close()
            myStreamReader2.Close()


Ответить

Номер ответа: 21
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #21 Добавлено: 18.11.05 19:09
не... нафиг? Читай просто в переменную и передавай в поток, зачем же 2 потока?

Ответить

Номер ответа: 22
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #22
Добавлено: 18.11.05 19:26
Или кусками (скажем, по 1024 байта) читай из одного потока и пиши в другой. Или, если размер данных не велик, то читай одним куском данные из одного потока и пиши их в другой.

Ответить

Номер ответа: 23
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #23 Добавлено: 18.11.05 19:59

Читай просто в переменную и передавай в поток


так считал же

Dim myStreamReader As StreamReader = File.OpenText("myTerminal.rdp";)

            Dim myString As String = myStreamReader.ReadLine()

            While myStreamReader.Peek > -1
                myString += myStreamReader.ReadLine + Environment.NewLine
            End While


а как ее в поток передать
не

myStreamReader2 = myString

же

Ответить

Номер ответа: 24
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #24
Добавлено: 18.11.05 20:22
Dim fs As New FileStream("C:\file.txt", FileMode.Open)
Dim sr As New StreamReader(fs)
Dim source As String = sr.ReadToEnd
sr.Close()
fs.Close()

Process.StandardInput.Write(source)

Ответить

Номер ответа: 25
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #25 Добавлено: 18.11.05 20:38
я очен извиняюсь
спасибо та подсказку

но
не работает.

Нет все компилитса и запускаетса

но Mstse,exe не берет ету рдп C:\myTerminal.RDP


 Dim myProcess As New Process

            myProcess.StartInfo.FileName = "mstsc.exe"
            myProcess.StartInfo.UseShellExecute = False

            myProcess.StartInfo.RedirectStandardInput = True
            myProcess.Start()

            Dim fs As New FileStream("C:\myTerminal.RDP", FileMode.Open)
            Dim sr As New StreamReader(fs)
            Dim source As String = sr.ReadToEnd
            sr.Close()
            fs.Close()

            myProcess.StandardInput.Write(source)

Ответить

Номер ответа: 26
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #26
Добавлено: 18.11.05 20:49
mstsc.exe - это виндовое приложение... Причем тут вообще консоль?

Поясните пожалуйста еще раз задачу... Если нужно просто запустить mstsc.exe с параметром, то тогда почему бы не запустить процесс

Dim p As Process = Process.Start ("mstsc.exe C:\11.rdp";)


а потом дождаться его завершения (если нужно):

p.WaitForExit()


А если уж его "скармливать cmd" (хотя не пойму, зачем), то нужно так:

            Dim myProcess As New Process

            myProcess.StartInfo.FileName = "cmd.exe"
            myProcess.StartInfo.UseShellExecute = False

            myProcess.StartInfo.RedirectStandardInput = True
            myProcess.Start()

            myProcess.StandardInput.Write("mstsc.exe C:\11.rdp";)

Ответить

Номер ответа: 27
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #27 Добавлено: 18.11.05 21:52
Задача была запретить кому попало читать rdp-файл.
(или спрятать его, напр. запаролив директорию)

Все промежуточные решения сводились к тому,
что так или иначе где то надо было
хоть на короткое время показать
оригинальный файл /или дать к нему доступ/
Что рискованно при РЕСЕТЕ или некорректном
завершении программы. - КОПИЯ останется!!

(Ваше решение с удалением при повторной загрузке тоже не очень подходит. Клиент не локальный. Нельзя же сервер перегружать каждый раз.)

vito предложил зашифровать файл.
Это хорошо - но mstsc не поймёт зашифрованный rdp.

HACKER предложил запустить скрыто cmd и передавать ему параметры в потоке.

При таком подходе я думал можно перекодировать
файл rdp в потоке и скормить mstsc уже перекодированный без сохранения где либо раскодированной копии.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам