заставить osk.exe работать с C # - PullRequest
1 голос
/ 14 декабря 2011

У меня есть программа VS2010, C #, которая настроена для сборки под x86. У меня есть два компьютера, на которых они работают. Оба Win 7 Prof, SP1, 32 бита. Оба VS2010 работают на уровне администратора. В рамках моего проекта я пытаюсь выполнить строку:

Process.Start("c:\\Windows\\System32\\osk.exe");  //win 7 on-screen keyboard

В режиме отладки в одной системе все работает нормально, в другой выдается исключение: Указанный исполняемый файл не является допустимым приложением для этой платформы ОС.

У меня есть настройка пользовательского контроля в Win 7 - учетные записи пользователей, чтобы «никогда не уведомлять», как предлагалось с других сайтов, которые не работали.

Я пытался: (тот же результат, ошибка)

Process process = new Process();
process.StartInfo.UseShellExecute = false;  //have tried it true also
process.StartInfo.WorkingDirectory = "c:\\";
process.StartInfo.FileName = "c:\\WINDOWS\\system32\\osk.exe";
process.StartInfo.Verb = "runas";
process.Start();

Есть идеи, что нужно изменить (или сделать)?

1 Ответ

0 голосов
/ 14 декабря 2011

Будет ли это работать для вас?Я немного изменил его, используя класс System.Diagnostics.ProcessStartInfo

    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.CreateNoWindow = false;
    startInfo.UseShellExecute = false;
    startInfo.WorkingDirectory = @"c:\WINDOWS\system32\";
    startInfo.FileName = "osk.exe";
    startInfo.Verb = "runas";
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
    try
    {
        using(Process process = Process.Start(startInfo))
        {
            process.WaitForExit();
        }
    }
    catch (Exception)
    {

        //throw;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...