C# поток с другими правами. Возможно ли?
☑
0
Lama12
03.10.12
✎
09:35
Сабж.
Можно ли запустить второй поток от имени другого пользователя?
Или нужно запускать отдельный процесс?
1
le_
03.10.12
✎
09:46
Можно.
Это называется имперсонация (impersonation).
2
Lama12
03.10.12
✎
09:57
(1) Спасибо!
Похоже то, что нужно.
3
Alexey_Morov
03.10.12
✎
09:58
(1)
Согласен.
4
Alexey_Morov
03.10.12
✎
09:59
public void Run(object principalObj) {
if (principalObj == null) {
throw new ArgumentNullException("principalObj");
}
IPrincipal principal = (IPrincipal)principalObj;
Thread.CurrentPrincipal = principal;
WindowsIdentity identity = principal.Identity as WindowsIdentity;
WindowsImpersonationContext impersonationContext = null;
if (identity != null) {
impersonationContext = identity.Impersonate();
}
try {
// your code here
} finally {
if (impersonationContext != null) {
impersonationContext.Undo();
}
}
}
...
Thread thread = new Thread(Run);
thread.Start(yourPrincipal);
5
Alexey_Morov
03.10.12
✎
10:02
(1)
А ты ещё напишешь скрипты для обрамления кода в тег [C#] и [offtopic] (как на ixbt.com)?
С кнопкой для вставки тэгов ты справился замечательно.
6
le_
03.10.12
✎
10:22
(5) Движок форума предусматривает обработку только тега .
Вместо того, чтобы писать js, мне кажется, было бы более правильно реализовать сие на php и встроить в движок. Тогда и кнопочки соответствующие можно было бы сделать. Собсно, всё уже разработано, достаточно скопипастить. Но местные девелоперы, ведь, не будут "трогать то, что и так работает" )
7
Alexey_Morov
03.10.12
✎
10:24
(6)
Где можно почитать, как работает форум, какие функции доступны администраторам и что можно сделать для улучшения форума?
8
le_
03.10.12
✎
10:26
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший