我正在尝试对位于 Windows 用户临时目录 (C:\Documents and Settings\User\Local Settings\Temp ),在我的 c# 应用程序中使用 Process。
我认为由于“访问被拒绝”而发生的进程返回错误,因为当我挖掘 .NET 的进程对象时,我可以看到错误代码为 5 的 win32Exception。
在其他地方做同样的事情之前效果很好,所以我想这可能是我不应该做的事情?(运行一个进程以使用 %TEMP% 上的文件)也许我需要以某种方式通过安全性?
我正在尝试对位于 Windows 用户临时目录 (C:\Documents and Settings\User\Local Settings\Temp ),在我的 c# 应用程序中使用 Process。
我认为由于“访问被拒绝”而发生的进程返回错误,因为当我挖掘 .NET 的进程对象时,我可以看到错误代码为 5 的 win32Exception。
在其他地方做同样的事情之前效果很好,所以我想这可能是我不应该做的事情?(运行一个进程以使用 %TEMP% 上的文件)也许我需要以某种方式通过安全性?
假设您使用的是常规 .NET(不是 CF/Silverlight 等)访问用户临时区域中的文件是完全可以预期的。我想知道问题是否不在于您在创建文件后不小心将文件打开,也许是不使用“使用”或类似的?
我可能不建议在使用单独的进程时使用环境变量(%TEMP% 等);理想情况下,您将传递文件的完整路径(更少出错...),确保引用任何路径参数(如果有空格) - 即您的参数是 @"... ""c: \some path\whatever\tmp""..." (如果你明白我的意思)。
最后,如果要提取文件,则需要考虑现有内容。Path.GetTempFileName()可以用于创建单个文件占位符,但要提取存档,您可能需要创建一个目录 - guid 对此目的很方便(同时避免冲突,并记得在之后将其删除):
string dir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());