Я просто пытаюсь выполнить команду оболочки на машине под управлением Windows 7 с помощью C#.Выполнение оболочки с пользовательской командой
Я нашел этот фрагмент в Сети:
[DllImport("shell32.dll", EntryPoint = "ShellExecute")]
public static extern long ShellExecute(int hwnd, string cmd, string file, string param1, string param2, int swmode);
void exe()
{
ShellExecute (0, "open", "C:\WINDOWS\Zapotec.bmp", "", "", 5)
}
Это работает очень хорошо, но я не хочу, чтобы открыть его, я хочу, чтобы выполнить пользовательскую команду (от стороннего приложения). Конкретный: я хочу выполнить проверку на вирусы (можно запустить в контекстном меню в проводнике Windows) с помощью антивирусного сканера, который не имеет интерфейса командной строки.
Любые предложения? Я не нашел полезной информации в Интернете. Это не должно быть решение C#. Он также может быть внешним файлом (я нашел программу «runmenu» [http://www.programbits.co.uk/downloads/runmenu.zip], которая должна быть идеальной для этой проблемы, но, к сожалению, не все элементы контекстного меню поддерживаются).
UPDATE
Я только что нашел решение моей проблемы с помощью PowerShell:
PS C:\temp> $o = new-object -com Shell.Application
PS C:\temp> $folder = $o.NameSpace("C:\temp")
PS C:\temp> $file=$folder.ParseName("test.txt")
PS C:\temp> $file.Verbs() | select Name
PS C:\temp> $file.Verbs() | %{ if($_.Name -eq 'Edit with &Notepad++') { $_.DoIt() } }
Его немного неясно, что вы хотите сделать. Не можете ли вы просто использовать какой-то скрипт gui-automation, такой как AutoHotKey http://www.autohotkey.com/ или AutoIt http://www.autoitscript.com/site/autoit/ – rdrmntn