Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 复制目录在C:\Windows\System32\spp\store中不起作用_Vb.net_Copy_Store - Fatal编程技术网

Vb.net 复制目录在C:\Windows\System32\spp\store中不起作用

Vb.net 复制目录在C:\Windows\System32\spp\store中不起作用,vb.net,copy,store,Vb.net,Copy,Store,我正在尝试从我的程序复制此目录,当我尝试时,它告诉我,“路径不存在”。如果您的应用程序是64位系统上的32位应用程序,那么您正在体验所谓的 由于32位应用程序无法加载64位DLL,并且64位应用程序无法加载32位DLL,因此64位系统有两个系统文件夹: System32-具有64位DLL的64位版本,以及: SysWOW64-带有32位DLL的32位版本 对于试图访问System32文件夹的所有32位应用程序,文件系统重定向程序会自动将%SystemRoot%\System32重定向到%Sy

我正在尝试从我的程序复制此目录,当我尝试时,它告诉我,“路径不存在”。

如果您的应用程序是64位系统上的32位应用程序,那么您正在体验所谓的

由于32位应用程序无法加载64位DLL,并且64位应用程序无法加载32位DLL,因此64位系统有两个系统文件夹:

  • System32
    -具有64位DLL的64位版本,以及:

  • SysWOW64
    -带有32位DLL的32位版本

对于试图访问
System32
文件夹的所有32位应用程序,文件系统重定向程序会自动将
%SystemRoot%\System32
重定向到
%SystemRoot%\SysWOW64
,因此无法复制该目录的原因是
SysWOW64
文件夹中不存在该目录

If Environment.Is64BitOperatingSystem = True AndAlso Environment.Is64Process = False Then 'Is this a 32-bit app in a 64-bit system?
    My.Computer.FileSystem.CopyDirectory("C:\Windows\SysNative\spp\store", "your destination path here")
Else 'This is either a 64-bit app in a 64-bit system, or a 32-bit app in a 32-bit system.
    My.Computer.FileSystem.CopyDirectory("C:\Windows\System32\spp\store", "your destination path here")
End If
有三种方法可以克服这个问题。我已经按顺序列出了它们,第一个是最推荐的,最后一个是最不推荐的:

  • 改用
    SysNative
    文件夹

    您可以使用
    C:\Windows\System32
    而不是
    C:\Windows\SysNative
    ,它会将32位应用程序带到原始
    System32
    文件夹

    If Environment.Is64BitOperatingSystem = True AndAlso Environment.Is64Process = False Then 'Is this a 32-bit app in a 64-bit system?
        My.Computer.FileSystem.CopyDirectory("C:\Windows\SysNative\spp\store", "your destination path here")
    Else 'This is either a 64-bit app in a 64-bit system, or a 32-bit app in a 32-bit system.
        My.Computer.FileSystem.CopyDirectory("C:\Windows\System32\spp\store", "your destination path here")
    End If
    
  • 以64位模式或
    AnyCPU
    编译应用程序

  • 通过p/调用禁用文件系统重定向。(我真的不建议这样做,因为如果你的应用程序尝试从系统目录加载DLL,可能会出现问题)


  • 你能在文件管理器中看到目录吗?是否使用文件系统属性将其隐藏?请改进您的答案;仅仅删除代码是不够好的。哦,我的上帝,非常感谢你。它确实有效。我不知道“SysNative”的用法。非常感谢您的时间和您对详细答案的特别关注。非常感谢。@Jeremy:很高兴我能帮上忙!不要编辑问题以表明您的问题已解决,而是按问题左侧的勾号/复选标记将我的答案标记为“已接受”。有关更多信息,请参阅:@Jeremy:另外,欢迎使用堆栈溢出!如果你还没有,请拿着这本书。只需要一分钟事实谢谢分享你的知识。我喜欢斯塔科弗。我已经跟踪他很长时间了,但今天是我第一次需要进来问他。我借此机会感谢所有这些人,他们一点一点地贡献了自己的经验,帮助解决了我们开始解决的问题。