我正在尝试编写一个测试,在它的固定装置设置中,它备份一个文件并删除原始文件,在没有原始文件的情况下运行测试,然后在拆解中,从备份中恢复原始文件。该文件位于我的 %ProgramFiles% 文件夹中。我在 fileInfo.Delete() 语句上收到 UnauthorizedAccessException。从 Resharper 测试运行器未运行的同一台机器上的另一个测试项目中删除此文件没有问题。
我无法将文件移动到其他地方——它是 ssapi.dll,一个为 Visual SourceSafe 安装的 dll。(是的,我在单元测试中做一些侵入性的事情。)
两种方式都是同一个用户(我)——我通过任务管理器检查了它。我的用户帐户是本地管理员组的成员。还有哪些其他因素决定了我对文件做某事的“授权”?
已解决:虽然它没有回答我最初的问题(我仍然想知道答案),但我找到了一种用于测试目的的解决方法,使用 System.Security.Permissions 框架,对 FileIOPermissionAccess 执行需求。读入需要该文件(用于互操作调用)的应用程序(非测试)代码,并在该代码的测试中读取相同的拒绝,这需要该文件不存在的场景。这现在应该可以工作(我喜欢了解一些关于 System.Security.Permissions 命名空间的知识)!