当前位置: 首页 > 面试题库 >

在Windows OS中的文件夹上设置“隐藏”属性?

林蕴藉
2023-03-14
问题内容

试图隐藏文件夹没有成功。我发现了:

import ctypes
ctypes.windll.kernel32.SetFileAttributesW('G:\Dir\folder1', 2)

但这对我没有用。我究竟做错了什么?


问题答案:

您的代码有两件事,都与文件夹名称文字有关。该SetFileAttributesW()函数需要Unicode字符串参数。您可以通过在字符串前面加上字符来指定其中之一u。其次,字符串中的任何文字反斜杠字符都必须加倍,或者您也可以r为其添加前缀。下面的代码中使用了一个双前缀。

import ctypes
FILE_ATTRIBUTE_HIDDEN = 0x02

ret = ctypes.windll.kernel32.SetFileAttributesW(ur'G:\Dir\folder1',
                                                FILE_ATTRIBUTE_HIDDEN)
if ret:
    print('attribute set to Hidden')
else:  # return code of zero indicates failure -- raise a Windows error
    raise ctypes.WinError()

您可以在此处找到Windows的系统错误代码。要在资源管理器中查看属性更改的结果,请确保 启用其“显示隐藏文件”选项。

为了说明@eryksun在关于安排自动将字节字符串转换为Unicode的评论中所说的内容,您需要 html" target="_blank">调用函数以指定其参数的正确转换 之前
执行以下操作。@eryksun还解释了为什么这不是WWinAPI函数版本中的指向字符串的默认值-请参见注释。
https://docs.microsoft.com/zh-cn/windows/win32/debug/system-error-
codes
ctypes.windll.kernel32.SetFileAttributesW.argtypes
=(ctypes.c_wchar_p,ctypes.c_uint32)

然后,这将起作用(请注意,r由于反斜杠,仍然需要前缀):

ret = ctypes.windll.kernel32.SetFileAttributesW(r'G:\Dir\folder1',
                                                FILE_ATTRIBUTE_HIDDEN)


 类似资料:
  • 问题内容: 我需要将文件和文件夹隐藏在Windows和Linux上。我知道在后面加上“。” 文件或文件夹的开头将使其在Linux上隐藏。如何在Windows上隐藏文件或文件夹? 问题答案: 对于Java 6及更低版本, 您将需要使用本地调用,这是Windows的一种方法 您应该了解有关win32-api或Java Native的知识。

  • 本文向大家介绍PowerShell设置文件只读、隐藏属性的方法,包括了PowerShell设置文件只读、隐藏属性的方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍一个PowerShell中如何设置文件属性。我们知道文件的属性有只读、隐藏、系统、存档和无内容索引等5个,只读和隐藏用得比较多,另外三个用得比较少。 一、文件的属性 不知道大家有没有用过attrib.exe这个cmd下的小程序,它可

  • Section " SetFileAttributes" SetFileAttributes "C:\demo" HIDDEN ;设置文件夹属性为隐藏 SetFileAttributes "C:\demo\demo.txt" HIDDEN|READONLY ;设置文件属性为隐藏,只读 SetFileAttributes "C:\demo\demo.txt" NORMAL ;恢复

  • 问题内容: 我需要列出文件夹中包含目录路径的所有文件。我尝试使用,这显然是完美的解决方案。 但是,它还会列出隐藏的文件夹和文件。我希望我的应用程序不列出任何隐藏的文件夹或文件。有没有可以用来使其不产生任何隐藏文件的标志? 跨平台对我而言并不是很重要,如果只适用于linux(。*模式)就可以了 问题答案: 不,没有选择会跳过这些。您需要自己这样做(这很容易): 注意切片分配;递归遍历中列出的子目录。

  • 要验证SSL证书,我需要将包含一些文件的隐藏文件夹(“/. well-known”)上传到我的应用程序。 我正在使用eclipse部署java应用程序,但这些文件不会在appEngine上的应用程序中接收。我想它们被过滤掉了。 我试图将隐藏文件夹作为静态文件添加到appengine web。xml,但它没有帮助。 我能上传这些文件夹和文件吗?

  • 我想隐藏在外部存储器上创建的文件夹,获取隐藏文件夹的路径,以共享在隐藏文件夹中找到的数据。我怎样才能做到这一点。从现在起我所做的一切。 分享 共有putExtra(Intent.EXTRA_流,Uri.parse(“file:///sdcard/mdata/“路径”);