我正在使用以下代码从我的主进程启动子应用程序:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = DestinationNameEXE;
startInfo.WorkingDirectory = Toolbox.AssemblyDirectory;
startInfo.UseShellExecute = true;
startInfo.Arguments =
binParameter + @" """ + _BINPath + @" """
+ tmpParameter + @" """ + binFolder_ForExtration + @" """;
Process.Start(startInfo);
在我这样做之前,我检查进程是否具有binFolder_ForExtration和_BInPath中的写权限,并使用以下代码(source)和一个简单的写文件检查:
try
{
using (File.Create(tmpfile)) { }
File.Delete(tmpfile);
createFilesAllow = true;
}
catch
{
createFilesAllow = false;
}
在主要过程中我可以写&创建文件。函数HasWritePermissionOnDir也返回true。 在新的过程中,我正在进行相同的测试,但在这种情况下,我从HasWritePermissionOnDir获得了true,但如果我尝试创建一个文件,我有一个例外。新进程有权更改现有文件。
这怎么可能?我做错了什么? 新流程如何能够比第一个流程拥有更少的权利? 我不会改变用户上下文。我还测试了使用ProcessAsUser.Launch(source)启动该过程但没有任何更改。新进程无法在给定文件夹中创建新文件。
如果我以提升的权利启动流程:
startInfo.Verb =“runas”;
一切都有效。新进程可以在给定文件夹中编写,创建和更改文件。
thx任何帮助
更新: