我在程序里新开了一个线程
WindowsIdentity identity= WindowsIdentity.GetCurrent();
string username = identity.Name;//是否这么写我忘了,得到userName是IUser_MachineName
ThreadStart threadStart = new ThreadStart(myMethod);
Thread thread = new Thread(threadStart);
thread.Start();在myMethod方法里是对存储在本地磁盘上的word模板进行操作,返回exception说“拒绝访问”。但是在该方法里执行
WindowsIdentity identity= WindowsIdentity.GetCurrent();
string username = identity.Name;
得到username是NetWork Service,我估计问题出在新开的线程运行身份不对(我没写过线程,术语可能不对)。请教各位如何把新开的线程的运行身份该成IUser_MachineName?
WindowsIdentity identity= WindowsIdentity.GetCurrent();
string username = identity.Name;//是否这么写我忘了,得到userName是IUser_MachineName
ThreadStart threadStart = new ThreadStart(myMethod);
Thread thread = new Thread(threadStart);
thread.Start();在myMethod方法里是对存储在本地磁盘上的word模板进行操作,返回exception说“拒绝访问”。但是在该方法里执行
WindowsIdentity identity= WindowsIdentity.GetCurrent();
string username = identity.Name;
得到username是NetWork Service,我估计问题出在新开的线程运行身份不对(我没写过线程,术语可能不对)。请教各位如何把新开的线程的运行身份该成IUser_MachineName?
下面的代码 在我的机器上测试都是当前用户啊
怎么会是IUser_MachineName? private void button1_Click(object sender, EventArgs e)
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
string username = identity.Name;
Text = username;
ThreadStart threadStart = new ThreadStart(DoMoreWork);
Thread thread = new Thread(threadStart);
thread.Start();
} public void DoMoreWork()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
string username = identity.Name;
Text = username;
}
除非不说了,太危险的操作了。
Dim thr As Threading.Thread
Dim l As System.Security.Principal.WindowsIdentity Function print()
thr = New Threading.Thread(AddressOf printAutoCAD)
thr.Start()
l = System.Security.Principal.WindowsIdentity.GetCurrent
End Function Private Sub printAutoCAD()
System.Security.Principal.WindowsIdentity.Impersonate(l.Token)
http://community.csdn.net/Expert/topicview.asp?id=4912705