据我所知,创build隐藏文件夹的方法是:
CreateDirectory(folderName); SetFileAttributes(folderName,FILE_ATTRIBUTE_HIDDEN);
这样做会导致目录存在,暂时不隐藏。 其他程序,如云软件和备份,可能会误将其视为非隐藏…并采取行动。
在单个API调用中可以实现相同的function吗? 一个primefaces步骤? 似乎应该是可能的! ??
您可以使用CreateDirectoryEx
。
使用指定模板目录的属性创建一个新目录。 如果底层文件系统支持文件和目录的安全性,则该函数将指定的安全描述符应用于新目录。 新目录保留指定模板目录的其他属性。
您需要一个适合(即隐藏)属性的模板目录。
也许这些步骤可以帮助你:
将该目录创建为临时目录。 GetTempPath()
会给你临时目录的路径:
DWORD WINAPI GetTempPath( _In_ DWORD nBufferLength, _Out_ LPTSTR lpBuffer ) ;
使用它用GetTempFileName()
创建一个唯一的临时文件名:
UINT WINAPI GetTempFileName( _In_ LPCTSTR lpPathName, _In_ LPCTSTR lpPrefixString, _In_ UINT uUnique, _Out_ LPTSTR lpTempFileName ) ;
这将取决于它如何被调用
然后在临时目录中创建该名称的目录。 当你已经达到你想要的状态WRT属性(隐藏等),然后将其移动到MoveFile()
或MoveFileEx()
最终位置。
当然,如上面那样获取临时路径可能会更简单,并且反复尝试创建一个子目录,使用GUID或当前日期/时间生成唯一的临时名称,并附加递增后缀。 一旦目录被创建,然后设置其属性并按照上面的步骤将其移动到最终位置。
在使用CreateTransaction()
创建并使用CommitTransaction()
提交的单个事务中使用CreateDirectoryTransacted()
和SetFileAttributesTransacted()
CommitTransaction()
,例如:
HANDLE hTrans = CreateTransaction(...); CreateDirectoryTransacted(..., hTrans); SetFileAttributesTransacted(..., hTrans); CommitTransaction(hTrans); CloseHandle(hTrans);