Неверный каталог или указанный файл не найден при запуске процесса с повышенными правами - PullRequest
1 голос
/ 17 января 2012

Я запустил свое приложение как обычный пользователь, однако иногда мне нужно запустить повышенный процесс, который запускает другое приложение. Другое запущенное приложение находится в подпапке «Исполняемые файлы». Все пользователи имеют полный доступ к файлам в текущем каталоге и подкаталогах.

Код, который я использую:

    public bool CreateElevatedProcess(ActionData data, bool log)
    {
        if (!string.IsNullOrEmpty(data.Arguments) && NormalUser.HasCredentials)
        {
            _proc = new Process
            {
                StartInfo =
                {
                    Verb = "runas",
                    FileName = data.Filename,
                    //WorkingDirectory = data.File.DirectoryName,
                    Arguments = data.Arguments,
                    UseShellExecute = false,
                    CreateNoWindow = true,
                    WindowStyle = ProcessWindowStyle.Hidden,
                    UserName = NormalUser.Name,
                    Password = GetSecureString(NormalUser.Password),
                    Domain = NormalUser.Domain
                }
            };
            return true;
        }
        return false;
    }

    private bool StartProcess()
    {
        if (_proc != null)
        {
            try
            {
                _proc.Start();

                _proc.WaitForExit();

                return true;
            }
            catch (Win32Exception ex)
            {
                        // throws win32exception due to directory name is invalid or the specified file not found
            }
        }
        return false;
    }

Я попытался установить параметр WorkingDirectory, но я не уверен, работает ли он, поскольку для UseShellExecute задано значение false.

Что я испытываю: Когда я запускаю приложение на компьютере разработчика, все работает нормально. Я даже скопировал папку вне Visual Studio и в папку TEMP на C: \ без проблем. Тем не менее, на другом компьютере я буду испытывать либо неверное имя каталога, либо указанный файл не найден. По всей вероятности, это проблема прав пользователя, однако все пользователи имеют полный доступ ...

Как правильно запустить процесс с повышенными правами с файлом из подкаталога?

Добавление примера:

Свойство имени файла получает: Executables \ rc.exe

Свойство аргумента получает: 1 lester \ mrburns

Свойство filename получает только путь к подпапке, а не полный путь из-за того, что родительский путь может быть ограничен.

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