C#尝试访问个人文件夹时出现异常
使用C#,每当我试图通过C#尝试访问个人文件夹时出现异常,c#,exception,C#,Exception,使用C#,每当我试图通过 Environment.GetFolderPath(Environment.SpecialFolder.Personal) 具体的例外情况是: System.Runtime.InteropServices.SEHException was unhandled Message=External component has thrown an exception. Source=mscorlib ErrorCode=-2147467259 StackTra
Environment.GetFolderPath(Environment.SpecialFolder.Personal)
具体的例外情况是:
System.Runtime.InteropServices.SEHException was unhandled
Message=External component has thrown an exception.
Source=mscorlib
ErrorCode=-2147467259
StackTrace:
at Microsoft.Win32.Win32Native.SHGetFolderPath(IntPtr hwndOwner, Int32 nFolder,
IntPtr hToken, Int32 dwFlags, StringBuilder lpszPath)
at System.Environment.GetFolderPath(SpecialFolder folder,
SpecialFolderOption option)
at System.Environment.GetFolderPath(SpecialFolder folder)
[...]
没有例外
有人知道怎么回事吗?例如,当我尝试获取系统路径时,问题不会出现。我正在使用WindowsXPSP3和VisualStudio2010。
另外,我有一位vista和VS2005的朋友尝试在他的机器上执行此操作,但他没有遇到此异常。这只是一种预感,但您是否从MTA线程运行此代码 我知道,如果某些Windows Shell API调用没有在STA中运行,它们将失败。说实话,我只在做PInvoke的时候遇到过这个问题,但是对堆栈跟踪中的本机
SHGetFolderPath
函数的调用告诉我可能就是这个问题
所以。。。为了验证我的理论,您能否尝试在一个简单的控制台应用程序中从Main
调用Environment.GetFolderPath(Environment.SpecialFolder.Personal)
,看看这个调用是否成功
如果它在一个简单的虚拟应用程序中成功,那么MTA可能是导致应用程序失败的原因
如果它在一个简单的虚拟应用程序中失败,那么您的机器可能是一团糟,或者可能只是用户的个人资料。我会尝试在机器上创建一个新用户,登录到他的帐户,然后从那里尝试
编辑:
尝试更多方向:
- 直接查看Regedit中的
,检查一切是否正常HKEY\u CURRENT\u USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell文件夹
- 如果计算机上的其他内容已损坏,请检查事件查看器
- 重新启动计算机…?:)李>
- 重新安装.NET Framework