|
Запуск части кода от имени.
|
|||
---|---|---|---|
#18+
Приветствую! Есть элементарная задачка: после определённой обработки данных в MSSQL, данные должны выгружаться по расписанию в .csv. 10 строчек кода, и всё бы хорошо, НО: Запуск самой проги как и хранимых процедур MSSQL происходит под единой доменной учёткой, формата авторизации ( домен \учётка), на сервере в домене, где несговорчивые админы. Файлик .csv находится на сервере вне домена, где админы тоже злые, доступ к папке с файлом имеет локальная user-учётка формата ( сервер \учётка). Сразу поясню, с правами доступа ничего изменить нельзя, только в исходнике прописывать. Вопрос: Как правильно запустить только кусок StreamWriter от имени другого пользователя? Из той информации что читала, надо создавать процесс, его запускать от имени, передавать поток в процесс, короче не догоняю я, как это сюда привязать правильно. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2014, 09:48 |
|
Запуск части кода от имени.
|
|||
---|---|---|---|
#18+
s_Lady, ..ищите по System.Diagnostics.Process.Start() и "net use" ... Хотя, может надежней было сохранять файл на первом сервере, а потом другим заданием копировать ... Но это по вкусу ... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2014, 11:02 |
|
Запуск части кода от имени.
|
|||
---|---|---|---|
#18+
s_Lady, ...если будете пользоваться данным вариантом, имейте в виду, что net use отрабатывает не мгновенно, поэтому, прежде чем туда стримить, надо делать паузу или проверку типа if Folder.Exists или что-то подобное ... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2014, 11:17 |
|
Запуск части кода от имени.
|
|||
---|---|---|---|
#18+
s_Lady, 1. http://www.codeproject.com/Articles/125810/A-complete-Impersonation-Demo-in-Csharp-NET - и, если этого не хватит, гуглить по .net impersonation 2. Рассмотреть вариант запуска ХП с директивой execute as user | login (если вызывающая сторона входит в серверную роль securityadmin). Как еще один вариант - поместить C#-код в CLR-сборку, и тот же execute as. И еще как вариант - ХП, которая делает всё нужное, и с директивой execute as (созданная пользователем, который securityadmin). Для этого хорошо подходят users without login . ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2014, 12:50 |
|
|
start [/forum/topic.php?desktop=1&fid=20&tid=1402871]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 136ms |
0 / 0 |