2012-06-30 2 views
0

Я написал приложение для выигрыша, которое работает в сети.Запуск process.start() в сети

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

В этой форме пользователь также может открыть файл, нажав кнопку «Открыть», чтобы файл открывался в приложении, относящемся к его расширению (например, test.xlsx должен открыться в Exel.exe). б Process.Start(), чтобы сделать это, но для каждого расширения я получить отдельную ошибку (например, «отказано в доступе» для NotePad и «RunTime ошибки» для AdobeReader и "Не хватает памяти "для Excel).

Какая у меня ошибка?

Примечание:Я использовал ImpersonatUser для входа в систему этого пользователя в своем приложении.

Edit: Я использовал следующий код, чтобы открыть файл:

Using(WindowsImpersonationContext impersonateUser = LogonMethod()) 
{ 
    ProcessStartInfo pInfo = new ProcessStartInfo(filePathWithExtension); 
    pInfo.Domain = MyDomainName; 
    pInfo.UseShellExecute = false; 
    Process.Start(pInfo); 
} 

Примечание:Мой LogonMethod использует метод LogonUser из ADVAPI32.dll.

+1

Посмотрите пример кода, который вы пробовали? –

+1

Также было бы полезно уточнить, по какой учетной записи вы пытаетесь запустить приложения, а также код, который вы должны сделать (поскольку иногда может быть несоответствие между намерениями и реализациями). –

+0

@AlexeiLevenkov, Спасибо за ваш ответ. Это обычная учетная запись, но она может выполнять все другие функции, такие как копирование, удаление или вырезание файла, архивирование папки, восстановление резервной копии базы данных и ... –

ответ

0

Я не мог решить эту проблему, поэтому я использовал другой способ. Я скопировал файл в папку temp, а затем использовал Process.Start, чтобы открыть этот новый файл.

0

Поведение, которое вы видите, почти ожидается.

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