2016-12-01 3 views
7

Есть ли способ открыть диалоговое окно Advanced Security Settings для каталога/файла программно? Это диалоговое окно я хочу открыть:Программно открыть диалоговое окно «Расширенные настройки безопасности»?

Advanced Security Dialog

Открывает его, нажав кнопку Дополнительно на свойствах безопасности диалогового окна для каталога/файла.

Security Properties

Существует this answer, что показывает, как открыть вкладку свойств безопасности с помощью ShellExecuteEx, поэтому, возможно, существуют различные параметры, которые могут быть использованы, чтобы открыть диалог непосредственно Расширенные настройки безопасности, но я не знаю, где найти документацию (или где искать в реестре) для поддерживаемых глаголов/параметров.

Существует также API EditSecurityAdvanced, но, похоже, для этого требуется реализация функций для получения/установки ACL вместо использования встроенной функции в оболочку Windows.

Я работаю в VB.NET, но могу переводить вызовы C# или Windows API по мере необходимости, а также указывать, как делать собственные исследования.

+0

Я не уверен, что вы можете это сделать, расширенное окно, вероятно, является дочерним элементом окна основных свойств. – DavidG

+1

Если вы не нашли решение открыть этот диалог напрямую, возможно, рассмотрите возможность открытия обычного диалогового окна безопасности и с помощью автоматизации нажмите кнопку «Дополнительно»? –

+1

Wow, +1 только для ", но может переводить вызовы C# или Windows API по мере необходимости, а также указатели на то, как делать мои собственные исследования." Вокруг здесь устает программистов, которые не проявят никакой инициативы и слишком ленивы, чтобы запустить код на своем неродном диалекте .NET через утилиту преобразования. –

ответ

2

Я не мог найти прямой способ его открытия. Использование automation, как и комментатор Visual Vincent, предлагается не слишком сложно. Не забудьте добавить ссылки на сборки и импорт System.Windows.Automation

Затем этот код должен нажать кнопку Advanced. Тем не менее этот способ по-прежнему создает диалог свойств.

Dim FileName As String = "The file name you are viewing the properties of" 
Dim AE As AutomationElement = AutomationElement.RootElement.FindFirst(TreeScope.Children, New PropertyCondition(AutomationElement.NameProperty, FileName + " Properties")) 
Dim Advancedbtn = AE.FindFirst(TreeScope.Element Or TreeScope.Descendants, New PropertyCondition(AutomationElement.NameProperty, "Advanced")) 
TryCast(Advancedbtn.GetCurrentPattern(InvokePattern.Pattern), InvokePattern).Invoke() 
+0

Спасибо - я никогда не использовал этот API, поэтому этот пример действительно помогает и работает хорошо. Мне пришлось вставить ожидание, чтобы диалоговое окно свойств отображалось до того, как этот код запустился, и мне интересно, не лучше ли просто оставить его пользователю, чтобы перейти на продвинутый, но это дает мне возможность попробовать. – Mark

+0

Хороший ответ! Я отредактировал его только для того, чтобы немного улучшить читаемость кода. –

+0

@Mark, Мне не приходило в голову, что нужно ждать, работая без него на моей машине. Просто удача, я думаю. –

Смежные вопросы