Вы должны войти, чтобы создавать сообщения и темы.

Удалить файлы не прописывая полного пути

Всем привет, мне нужно удалить из C:\Windows\System32 из папок с языком таких как

Эти
ar-SA bg-BG cs-CZ da-DK de-DE el-GR en-GB en-US es-ES es-MX et-EE fi-FI fr-CA fr-FR he-IL hr-HR hu-HU it-IT ja-JP ko-KR lt-LT lv-LV nb-NO nl-NL pl-PL pt-BR pt-PT ro-RO ru-RU sk-SK sl-SI sr-Latn-CS sr-Latn-RS sv-SE th-TH tr-TR uk-UA zh-CN zh-HK zh-TW
файл cmd.exe.mui. 

На cmd это легко реализовать, но как на C#?

for %%l in (ar-SA bg-BG cs-CZ da-DK de-DE el-GR en-GB en-US es-ES es-MX et-EE fi-FI fr-CA fr-FR he-IL hr-HR hu-HU it-IT ja-JP ko-KR lt-LT lv-LV nb-NO nl-NL pl-PL pt-BR pt-PT ro-RO ru-RU sk-SK sl-SI sr-Latn-CS sr-Latn-RS sv-SE th-TH tr-TR uk-UA zh-CN zh-HK zh-TW) do (
    if exist "%systemroot%\System32\%%l\cmd.exe.mui" (
        del  /q "%systemroot%\System32\%%l\cmd.exe.mui" >nul 2>&1
            )
)

 

Приветствую
На вскидку как-то так:

new List <string> () {
  "ar-SA",
  "bg-BG",
  "cs-CZ"
  /* и т.д.*/
}.ForEach(x =>
{
  var file = $"{Environment.SystemDirectory}\\{x}\\cmd.exe.mui";
  if (File.Exists(file)) File.Delete(file);
});

P.S. Писал прямо в комментарии, так что возможны ошибки.

Цитата: Adler от 07.11.2022, 23:02

Приветствую
На вскидку как-то так:

 
 
 
 
new List <string> () {
"ar-SA",
"bg-BG",
"cs-CZ"
/* и т.д.*/
}.ForEach(x =>
{
var file = $"{Environment.SystemDirectory}\\{x}\\cmd.exe.mui";
if (File.Exist(file)) File.Delete(file);
});
new List <string> () { "ar-SA", "bg-BG", "cs-CZ" /* и т.д.*/ }.ForEach(x => { var file = $"{Environment.SystemDirectory}\\{x}\\cmd.exe.mui"; if (File.Exist(file)) File.Delete(file); });
 
new List <string> () {
  "ar-SA",
  "bg-BG",
  "cs-CZ"
  /* и т.д.*/
}.ForEach(x =>
{
  var file = $"{Environment.SystemDirectory}\\{x}\\cmd.exe.mui";
  if (File.Exist(file)) File.Delete(file);
});

P.S. Писал прямо в комментарии, так что возможны ошибки.

Привет, вроде проверил, и чот не удаляется, с правами админа запускал, даже права на файл получены

Цитата: Adler от 07.11.2022, 23:02

Приветствую
На вскидку как-то так:

 
 
 
 
new List <string> () {
"ar-SA",
"bg-BG",
"cs-CZ"
/* и т.д.*/
}.ForEach(x =>
{
var file = $"{Environment.SystemDirectory}\\{x}\\cmd.exe.mui";
if (File.Exists(file)) File.Delete(file);
});
new List <string> () { "ar-SA", "bg-BG", "cs-CZ" /* и т.д.*/ }.ForEach(x => { var file = $"{Environment.SystemDirectory}\\{x}\\cmd.exe.mui"; if (File.Exists(file)) File.Delete(file); });
 
new List <string> () {
  "ar-SA",
  "bg-BG",
  "cs-CZ"
  /* и т.д.*/
}.ForEach(x =>
{
  var file = $"{Environment.SystemDirectory}\\{x}\\cmd.exe.mui";
  if (File.Exists(file)) File.Delete(file);
});

P.S. Писал прямо в комментарии, так что возможны ошибки.

Добрый день, у меня всё удаляется, но, только если скопировать папки на другой диск, хотя скорее всего значение Environment.SystemDirectory, не хочет отображать папку %systemroot%\System32

Попробуйте СкопированоEnvironment.GetFolderPath(Environment.SpecialFolder.System) вместо СкопированоEnvironment.SystemDirectory

Цитата: Adler от 09.11.2022, 19:01

Попробуйте СкопированоEnvironment.GetFolderPath(Environment.SpecialFolder.System) вместо СкопированоEnvironment.SystemDirectory

Приветик, опять не работает вот весь ваш код, он так должен выглядеть?

Ваш код

new List<string>() {
"ru-RU",
"en-US"
/* и т.д.*/
}.ForEach(x =>
{
var file = "Environment.GetFolderPath(Environment.SpecialFolder.System)\\{x}\\cmda.exe.mui";
if (File.Exists(file)) File.Delete(file);
});

Ещё вопрос, есть команда, она создаёт папку 122 в HKEY_LOCAL_MACHINE\SOFTWARE

Команда
Registry.LocalMachine.CreateSubKey(@"SOFTWARE\122");

Но место этого она создаёт папку в HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node

En32, приветствую 🖐
Снимите галочку тут:
Проект ➜ Свойства ➜ Скриншот.
Чтобы быстрее начать вникать в C#, рекомендую начать просмотр курса по С#.
Спустя пару часов, такие задачи, которые Вы ставите в начале темы, будут для Вас раз плюнуть 💪

Лайкнул En32
En32