Автор: v1rtyaluk
Дата сообщения: 12.04.2010 19:22
ruslrusl
V0lt
мне нужно исключить из результата некоторые файлы из-за которых "падает" ОС(т.е. зависает)
я знаю что можно так:
string[] filePaths = Directory.GetFiles(@"c:\windows\", "*.extencion",
SearchOption.AllDirectories);
только загвоздка в том, что, во-первых, я не знаю как сделать так чтоб НЕНУЖНЫЕ файлы не находило!
во-вторых, этот пример отказывается работать в моей программе т.е. ссылается на недоступность аргументов в методе и на невозможность преобразовать второй аргумент в стринг
если-же пишу:
string[] filePaths = Directory.GetFiles(@"c:\windows\", "*.exe", "*.dll", "*.cpl", "*.mui"
SearchOption.AllDirectories);
та ошибка гласит о том, что метод перегружен аргументами.
если нет решения этим проблемам то, скажите, пожалуйста, вообще возможно-ли осуществить мою задумку т.е. применить права на запись всем файлам в переменной file окромя нескольких файлов.
[more=вот код, если кто сможет помочь]
Form1.cs
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;
using System.Threading;
using System.Diagnostics;
using System.IO;
using Microsoft.Win32;
namespace takeown
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Thread th;
Process process = new Process();
private void button1_Click(object sender, EventArgs e)
{
RegistryKey regKey1 = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
string windir = (string)regKey1.GetValue("SystemRoot");
regKey1.Close();
Control.CheckForIllegalCrossThreadCalls = false;
int count = 0;
foreach(string file in Directory.GetFiles(windir))
{
count++;
}
progressBar1.Maximum = count;
th = new Thread(new ParameterizedThreadStart(this.GetData));
th.Start();
}
private void GetData(object obj)
{
RegistryKey regKey1 = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
string windir = (string)regKey1.GetValue("SystemRoot");
regKey1.Close();
foreach(string file in Directory.GetFiles(windir))
{
string FileName = "cmd.exe";
string Arguments = @"/f " + file;
ProcessStartInfo StartInfo = new ProcessStartInfo(FileName, Arguments);
StartInfo.CreateNoWindow = true;
StartInfo.UseShellExecute = false;
process.StartInfo = StartInfo;
label1.Text = ("Идет обработка файла " + file);
progressBar1.Value += 1;
process.Start();
process.WaitForExit(10);
}
label1.Text = "Готово.";
progressBar1.Value = 0;
}
private void progressBar1_Click(object sender, EventArgs e)
{
}
private void label1_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
Close();
}
private void Form1_Load(object sender, EventArgs e)
{
RegistryKey regKey1 = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
string windir = (string)regKey1.GetValue("SystemRoot");
regKey1.Close();
}
}
}
Form1.Designer.cs
namespace takeown
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if(disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.label1 = new System.Windows.Forms.Label();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(415, 47);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 27);
this.button1.TabIndex = 0;
this.button1.Text = "Применить";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// progressBar1
//
this.progressBar1.Location = new System.Drawing.Point(12, 14);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(558, 27);
this.progressBar1.Step = 1;
this.progressBar1.TabIndex = 2;
this.progressBar1.Click += new System.EventHandler(this.progressBar1_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(13, 47);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(65, 15);
this.label1.TabIndex = 3;
this.label1.Text = "Ожидание...";
this.label1.Click += new System.EventHandler(this.label1_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(497, 47);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(75, 27);
this.button2.TabIndex = 4;
this.button2.Text = "Выход";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(582, 81);
this.Controls.Add(this.button2);
this.Controls.Add(this.label1);
this.Controls.Add(this.progressBar1);
this.Controls.Add(this.button1);
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.Name = "Form1";
this.Text = "Take Ownership for Windows Vista\\7";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.ProgressBar progressBar1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button button2;
}
}
[/more]