[英]Hiding Directories Programmatically in C#
我想在 Windows Vista 中隐藏一个目录。 仅从视图中不完全隐藏。 就像您从文件夹选项中设置的一样。 我按照我看到的一个例子尝试了一些东西。 只是我稍微修改了一下..
这是我所有的代码组合。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class hideme : Form
{
public hideme()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
if (PasswordTextBox.Text == "test")
{
EnableButton.Visible = true;
DisableButton.Visible = true;
}
else
{
MessageBox.Show("Wrong", "Attention");
Application.Exit();
}
}
private void EnableButton_Click(object sender, EventArgs e)
{
//System.IO.FileInfo dir = new System.IO.FileInfo("C:\\Users\\logickills\\Pictures\\system");
string path = "C:\\Users\\chris\\Pictures\\system";
FileInfo FIh1 = new FileInfo(Environment.CurrentDirectory + @"\Files\File2.txt");
FIh1.Attributes = FileAttributes.Hidden;
}
private void DisableButton_Click(object sender, EventArgs e)
{
}
private void PasswordTextBox_TextChanged(object sender, EventArgs e)
{
}
}
}
这与我之前在这里创建的对话框一致。 输入密码后显示的两个按钮用于显示和隐藏该目录。
Attribute 属性是属性的组合,因此您需要将 Hidden 属性与该项目已有的任何属性相结合:
FIh1.Attributes = FIh1.Attributes | System.IO.FileAttributes.Hidden;
如果要删除它,可以使用以下代码:
if ((FIh1.Attributes & System.IO.FileAttributes.Hidden) == System.IO.FileAttributes.Hidden)
{
FIh1.Attributes = FIh1.Attributes ^ System.IO.FileAttributes.Hidden;
}
如果调用FIh1.Attributes = FIh1.Attributes ^ System.IO.FileAttributes.Hidden;
重复您将每第二次打开和关闭隐藏属性。
这是使其隐藏(使其完全不可见)并再次显示的代码。
这是隐藏文件夹:
string path = @"c:\folders\";
DirectoryInfo di = Directory.CreateDirectory(path);
di.Attributes = FileAttributes.Directory | FileAttributes.Hidden;
MessageBox.Show("archivo escondido");
这是再次显示文件夹
string path = @"c:\folders\";
DirectoryInfo di = Directory.CreateDirectory(path);
di.Attributes = FileAttributes.Directory | FileAttributes.Normal;
MessageBox.Show("archivo mostrado");
您正在检索属性,而不是保存这些更改。
使用它来设置它们
File.SetAttributes(path, FileAttributes.Hidden);
好吧,最近在我的小组中提出了一个与此非常相似的问题。
DirectoryInfo 类公开了一个“Attributes”属性,它是 FileAttributes 枚举上的 Flags 枚举。 您应该注意,目录基本上是具有特殊属性的文件 - “目录”。 因此,您不应清除该属性,而应始终附加到现有枚举值或从中删除。
这是一个非常简单的控制台应用程序来演示这个概念:
class Program
{
static void Main(string[] args)
{
string input = args[0];
if(input == "hide")
{
ToggleHidden(true);
}
else if(input == "reveal")
{
ToggleHidden(false);
}
}
private static void ToggleHidden(bool hide)
{
DirectoryInfo d = new DirectoryInfo(@"C:\MySecretFolder");
if(d.Exists)
{
FileAttributes atts = d.Attributes;
if(hide == true)
{ // Hide the folder.
// Append Hidden attribute only if not already set.
if((atts & FileAttributes.Hidden) != FileAttributes.Hidden)
atts |= FileAttributes.Hidden;
}
else
{ // Show the folder.
// Remove Hidden attribute if set.
if((atts & FileAttributes.Hidden) == FileAttributes.Hidden)
atts &= ~FileAttributes.Hidden;
}
d.Attributes = atts;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.