Страница 3 из 6
Откпывать файлы от другого имени
Добавлено: Чт мар 18, 2010 10:38 pm
Qwertiy
Для exe-файлов в Windows существует пункт контекстного меню "Запуск от имени...". Очень не хватает такой же возможности для других типов файлов, особенно msi. Нельзя ли добавить такую функцию?
PS: Если Вы предложете reg-файл, добавляющий соответствующий пункт (и, по возможности, не требующий прав администратора для интеграции в реестр), то я возражать не буду...
Добавлено: Пт мар 19, 2010 10:04 am
Max Diesel
Qwertiy писал(а):Для exe-файлов в Windows существует пункт контекстного меню "Запуск от имени...". Очень не хватает такой же возможности для других типов файлов, особенно msi. Нельзя ли добавить такую функцию?
PS: Если Вы предложете reg-файл, добавляющий соответствующий пункт (и, по возможности, не требующий прав администратора для интеграции в реестр), то я возражать не буду...
Вообще-то этот пункт контекстного меню является системным и отображается не только в Проводнике, но и в Unreal Commander тоже. При желании можно попытаться зайти в каталог "System Volume Information" и в ответ на запрос согласиться зайти от имени другой учетной записи (программа будет запущена от имени другой учетной записи).
Добавлено: Пт мар 19, 2010 5:37 pm
Qwertiy
Max Diesel писал(а):Qwertiy писал(а):Для exe-файлов в Windows существует пункт контекстного меню "Запуск от имени...". Очень не хватает такой же возможности для других типов файлов, особенно msi. Нельзя ли добавить такую функцию?
PS: Если Вы предложете reg-файл, добавляющий соответствующий пункт (и, по возможности, не требующий прав администратора для интеграции в реестр), то я возражать не буду...
Вообще-то этот пункт контекстного меню является системным и отображается не только в Проводнике, но и в Unreal Commander тоже. При желании можно попытаться зайти в каталог "System Volume Information" и в ответ на запрос согласиться зайти от имени другой учетной записи (программа будет запущена от имени другой учетной записи).
С этим я не спорю. Пункт есть, но, как и в Проводнике, только для программ, т. е. exe-файлов. А я хочу не только для них, а
для всех типов, особенно для
msi.
PS: запустить UC от другого имени - не проблема... Просто обычно не хочется производить кучу лишних действий только для того, чтобы открыть один файл от другого имени...
Добавлено: Пт мар 19, 2010 7:05 pm
Max Diesel
Qwertiy писал(а):PS: запустить UC от другого имени - не проблема... Просто обычно не хочется производить кучу лишних действий только для того, чтобы открыть один файл от другого имени...
Такой вариант пока что в планах отсутствует. Лично у меня запускаются две копии Unreal Commander от разных учетных записей и соответственно я просто переключаюсь между ними.
Добавлено: Пт мар 19, 2010 10:47 pm
Qwertiy
Max Diesel писал(а):Такой вариант пока что в планах отсутствует. Лично у меня запускаются две копии Unreal Commander от разных учетных записей и соответственно я просто переключаюсь между ними.
Держать специально запущенную копию ради запуска пары msi'шников в день? Не очень-то удобно...
Уже написал нужную программу, но явно слишком запутанно:
Код: Выделить всё
Public Class Form1
Private [Step] As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Args As String = LTrim(Command$()) & " "
If Args.StartsWith("step=2") Then
Me.Text &= " - Шаг 2 - Собственно запуск"
[Step] = 2
TxtCmd.Text = Trim(Args.Substring(8))
TxtArgs.Text = ""
TxtUser.Enabled = False
TxtPass.Enabled = False
TxtDomain.Enabled = False
ChkAuto.Checked = False
ChkAuto.Enabled = False
If Args.Chars(6) = "a"c Then
ChkAuto.Checked = True
BtnOk_Click(sender, e)
End If
Else
Me.Text &= " - Шаг 1 - Ввод имени и пароля"
[Step] = 1
TxtCmd.Text = My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".exe"
If Args.StartsWith("step=1 ") Then
TxtArgs.Text = "step=2 " & Trim(Args.Substring(8))
Else
TxtArgs.Text = "step=2 " & Args
End If
TxtCmd.Enabled = False
TxtArgs.Enabled = False
ChkAuto.Checked = True
End If
End Sub
Private Sub ChkSilent_Changed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChkAuto.Click, ChkAuto.CheckedChanged
If [Step] = 1 Then
If ChkAuto.Checked Then
If TxtArgs.Text.Length > 8 Then
TxtArgs.Text = TxtArgs.Text.Substring(0, 6) & "a " & TxtArgs.Text.Substring(8)
Else
TxtArgs.Text = TxtArgs.Text.Substring(0, 6) & "a "
End If
Else
If TxtArgs.Text.Length > 8 Then
TxtArgs.Text = TxtArgs.Text.Substring(0, 6) & " " & TxtArgs.Text.Substring(8)
Else
TxtArgs.Text = TxtArgs.Text.Substring(0, 6) & " "
End If
End If
End If
End Sub
Private Sub BtnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOk.Click
Dim Prc As New System.Diagnostics.Process
Try
With Prc.StartInfo
.FileName = Trim(TxtCmd.Text())
.Arguments = Trim(TxtArgs.Text)
If [Step] = 1 Then
.UserName = Trim(TxtUser.Text)
.Password = StringToSecureString(TxtPass.Text)
.Domain = Trim(TxtDomain.Text)
.UseShellExecute = False
Else
.UseShellExecute = True
End If
End With
Prc.Start()
Catch ex As Exception
If MsgBox("Невозможно запустить процесс." & vbCrLf & "Выйти?", MsgBoxStyle.YesNo Or MsgBoxStyle.Critical, "ОШИБКА") = MsgBoxResult.No Then
Exit Sub
End If
End Try
Me.Close()
End Sub
Private Sub BtnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCancel.Click
Me.Close()
End Sub
Private Function StringToSecureString(ByVal Str As Char()) As System.Security.SecureString
Dim Res As New System.Security.SecureString
For Q As Integer = 0 To Str.Length - 1
Res.AppendChar(Str(Q))
Next Q
Return Res
End Function
End Class
- RunAs 2.7z
- VS 2005 Solution, VB
- (35.31 КБ) 227 скачиваний
Итак:
1. Хотелось бы встроенную функцию... Надеюсь, она появится в планах - это
очень полезная возможность!
2. Кто знает, как сделать по-человечески, пожалуйста напишите.
PS: Для использования из UC аргументы "%P%N" вместе с кавычками.
Заморозка списка
Добавлено: Сб май 15, 2010 4:47 pm
Qwertiy
Пожалуйста, добавьте кнопку-флажок "Заморозить список", которая бы прекращала автообновление списка (для каждой вкладки свой флажок). И ещё настройку "Замораживать список при исчезновении диска". Т. е., например, если открыта флешка, я её достаю, то UC, если этот флажок установлен, не переходит на другой путь, а активирует флажок "Заморозить список" для этой вкладки.
PS: можно сделать, чтобы выделение не снималось при переходе на другую вкладку этой же панели и возврате в исходную?
Добавлено: Сб май 15, 2010 5:35 pm
Max Diesel
Qwertiy писал(а):Пожалуйста, добавьте кнопку-флажок "Заморозить список", которая бы прекращала автообновление списка (для каждой вкладки свой флажок).
Такая кнопка есть в планах (под другим названием конечно же), возможно она будет скоро добавлена.
Qwertiy писал(а):И ещё настройку "Замораживать список при исчезновении диска". Т. е., например, если открыта флешка, я её достаю, то UC, если этот флажок установлен, не переходит на другой путь, а активирует флажок "Заморозить список" для этой вкладки.
А вот этого в планах нет и смысл такой опции мне видится сомнительным...
Qwertiy писал(а):PS: можно сделать, чтобы выделение не снималось при переходе на другую вкладку этой же панели и возврате в исходную?
Это тоже есть в планах (как и сохранение во вкладке списка найденных файлов)...
Добавлено: Сб май 15, 2010 5:51 pm
Qwertiy
Max Diesel писал(а):Qwertiy писал(а):И ещё настройку "Замораживать список при исчезновении диска". Т. е., например, если открыта флешка, я её достаю, то UC, если этот флажок установлен, не переходит на другой путь, а активирует флажок "Заморозить список" для этой вкладки.
А вот этого в планах нет и смысл такой опции мне видится сомнительным...
Смысл есть. Простейший вариант - если мне этот список ещё понадобится для каких-то целей (печать, удаление исходных файлов, если это был CD-диск и т. д.), или же я собираюсь вставить флешку повторно, или она вообще отключилась сама (бывает и такое).
Добавлено: Сб май 22, 2010 6:53 pm
Max Diesel
Qwertiy писал(а):Смысл есть. Простейший вариант - если мне этот список ещё понадобится для каких-то целей (печать, удаление исходных файлов, если это был CD-диск и т. д.), или же я собираюсь вставить флешку повторно, или она вообще отключилась сама (бывает и такое).
На мой взгляд причина недостаточно весомая, такая функция бы создала больше проблем чем удобств.
Отмена последнего действия
Добавлено: Ср май 26, 2010 4:27 pm
Qwertiy
Пожалуйста, добавьте возможность отмены последнего переименования, перемещения, копирования и удаления в корзину. Под отменой я имею в виду обратное действие, возвращающее всё к исходному состоянию (если оно возможно).
PS: Заметьте, что такая возможность присутствует в Проводнике.
Добавлено: Пт май 28, 2010 6:58 am
Max Diesel
Qwertiy писал(а):Пожалуйста, добавьте возможность отмены последнего переименования, перемещения, копирования и удаления в корзину. Под отменой я имею в виду обратное действие, возвращающее всё к исходному состоянию (если оно возможно).
Хм... мысль интересная, но у меня нет идей насчет того как восстановить файл из корзины (в смысле программно и в смысле конкретный файл, корзинное место жительства которого надо еще и каким-то образом узнать у системы при удалении).
Добавлено: Пт май 28, 2010 2:58 pm
Qwertiy
Max Diesel писал(а):у меня нет идей насчет того как восстановить файл из корзины
Думаю, это должно помочь:
Работа с корзиной в Delphi...
Добавлено: Пт май 28, 2010 6:10 pm
Max Diesel
Судя по описанию функции на этой странице нет функции, которая позволяла бы удаляя файл в корзину узнать какое именно имя в корзине он получил... а без такой возможности восстановление если и удастся произвести, то лишь для последнего файла (а по умолчанию каталоги удаляются по файлам, а не целиком).
Добавлено: Пт май 28, 2010 8:00 pm
Qwertiy
Добавлено: Пт май 28, 2010 8:27 pm
Qwertiy
Max Diesel писал(а):Судя по описанию функции на этой странице нет функции, которая позволяла бы удаляя файл в корзину узнать какое именно имя в корзине он получил... а без такой возможности восстановление если и удастся произвести, то лишь для последнего файла (а по умолчанию каталоги удаляются по файлам, а не целиком).
Если есть лог удалённых файлов (а без него всё равно не обойтись), то достаточно сравнить исходные имена файлов в корзине с именами в этом списке. Для ускорения обработки можно оба списка отсортировать.