C#WMI在远程PC上运行一个exe,然后在同一台PC上运行另一个exe,然后在networkingpath上调用Directory.CreateDirectory,并失败

使用C#WMI我在另一台计算机上启动一个exe文件,此exe文件使用C# Process类启动另一个exe文件。 最后一个exe尝试使用networkingpath(aka \\\\comp1\d$\dir\ )调用Directory.CreateDirectoryDirectory.CreateDirectory引发这个exception:

 Access to the path '\\\\blah\blah\blah' is denied. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, DirectorySecurity dirSecurity) at System.IO.Directory.CreateDirectory(String path, DirectorySecurity directorySecurity) 

如果我直接在计算机上的控制台上运行第三个exe它存在这个exception不会引发,一切工作正常。

正在创build目录的文件夹的安全设置具有“所有人”给予完全权限。

我该如何解决这个问题?

Solutions Collecting From Web of "C#WMI在远程PC上运行一个exe,然后在同一台PC上运行另一个exe,然后在networkingpath上调用Directory.CreateDirectory,并失败"

另外请注意,通过WMI启动应用程序时,还有第三层权限。 例如,如果你调用一个现有的WMI对象的方法,它可能不会委托调用者的权限,甚至主持人的权利,但将有一个空主体。 这可能发生在你身上。

转到“计算机管理”,然后在“服务和应用程序”下,右键单击“WMI控制”节点并选择“属性”。 转到安全选项卡,然后导航到正确的WMI名称空间(很可能是root \ CIMV2),并确保您使用的用户也具有相应的权限。

正如Aaron所说,windows共享安全有两个组成部分,第一个是共享本身的安全性。 第二个是该共享中文件和文件夹的安全性。

两者都必须允许创建目录访问才能工作。

您还应该知道,EVERYONE组包括域计算机帐户,内置系统帐户,域用户,来宾和已验证的用户。

这意味着你要做的第一件事就是看看实际运行的是哪个用户。 如果它在计算机帐户下运行,并且它不是域的一部分,那么您将需要授予该计算机帐户访问共享和文件系统的权限。