0

我正在尝试对位于 Windows 用户临时目录 (C:\Documents and Settings\User\Local Settings\Temp ),在我的 c# 应用程序中使用 Process。

我认为由于“访问被拒绝”而发生的进程返回错误,因为当我挖掘 .NET 的进程对象时,我可以看到错误代码为 5 的 win32Exception。

在其他地方做同样的事情之前效果很好,所以我想这可能是我不应该做的事情?(运行一个进程以使用 %TEMP% 上的文件)也许我需要以某种方式通过安全性?

4

2 回答 2

1

假设您使用的是常规 .NET(不是 CF/Silverlight 等)访问用户临时区域中的文件是完全可以预期的。我想知道问题是否不在于您在创建文件后不小心将文件打开,也许是不使用“使用”或类似的?

我可能不建议在使用单独的进程时使用环境变量(%TEMP% 等);理想情况下,您将传递文件的完整路径(更少出错...),确保引用任何路径参数(如果有空格) - 即您的参数是 @"... ""c: \some path\whatever\tmp""..." (如果你明白我的意思)。

最后,如果要提取文件,则需要考虑现有内容。Path.GetTempFileName()可以用于创建单个文件占位符,但要提取存档,您可能需要创建一个目录 - guid 对此目的很方便(同时避免冲突,并记得在之后将其删除):

string dir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
于 2008-11-03T10:21:12.217 回答
0

使用命令行 (cmd) 运行相同的进程有助于找出我的问题是我使用 long-path-name 为进程指定了路径参数。

可以在这里找到解决方案:

在.net中转换为短路径的标准方法

于 2008-11-03T14:05:19.830 回答