質問するログイン新規登録

質問編集履歴

7

補足追記

2021/04/10 13:48

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -72,4 +72,9 @@
72
72
 
73
73
  一応、これで解決したけど、jsonやらなんやら余計なファイルが出来て好かん。
74
74
  .NET 5.0 が入ってない環境だと動かない気がするし…
75
- C++ で解決する方法があれば教えて下さい。
75
+ C++ で解決する方法があれば教えて下さい。
76
+
77
+ 追記
78
+ やっぱり.NET 5.0 が入ってない環境だと動きませんでした。
79
+ それと、娘の学校のパソコンで動かそうとしたら、ウイルスの脅威とか言われて動きませんでした。
80
+ どうすれば良いでしょうか?

6

ソースコード追加

2021/04/10 13:48

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -25,4 +25,51 @@
25
25
  これ使えば良さそうだけど、、C# で SETX または SETX に相当する関数がわかりません。
26
26
  ```C#
27
27
  public static string? GetEnvironmentVariable (string variable, EnvironmentVariableTarget target);
28
- ```
28
+ ```
29
+
30
+ ```C#
31
+ using System;
32
+ using System.Diagnostics;
33
+ using System.IO;
34
+
35
+ namespace SetEnv
36
+ {
37
+ class Program
38
+ {
39
+ static void Main(string[] args)
40
+ {
41
+ string sEnvPath = System.AppDomain.CurrentDomain.BaseDirectory;
42
+ DirectoryInfo di = new DirectoryInfo(sEnvPath);
43
+ // 親のディレクトリを取得する
44
+ DirectoryInfo diParent = di.Parent;
45
+ string sDllPath = diParent.FullName + "\dll;";
46
+ string sPath = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.User);
47
+ if(sPath.Contains(sDllPath))
48
+ {
49
+ Console.WriteLine("環境設定済です。");
50
+ Console.WriteLine("何かキーを押して下さい…");
51
+ Console.ReadLine();
52
+ return;
53
+ }
54
+ ProcessStartInfo startInfo = new ProcessStartInfo("SETX");
55
+ startInfo.WindowStyle = ProcessWindowStyle.Normal;
56
+ if (sPath.Substring(sPath.Length - 1, 1).Equals(";"))
57
+ {
58
+ startInfo.Arguments = "Path \"" + sPath + sDllPath;
59
+ }
60
+ else
61
+ {
62
+ startInfo.Arguments = "Path \"" + sPath + ";" + sDllPath;
63
+ }
64
+ Process.Start(startInfo);
65
+ Console.WriteLine("環境設定が終了しました。");
66
+ Console.WriteLine("何かキーを押して下さい…");
67
+ Console.ReadLine();
68
+ }
69
+ }
70
+ }
71
+ ```
72
+
73
+ 一応、これで解決したけど、jsonやらなんやら余計なファイルが出来て好かん。
74
+ .NET 5.0 が入ってない環境だと動かない気がするし…
75
+ C++ で解決する方法があれば教えて下さい。

5

ソースコード追加

2021/04/10 12:41

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -20,4 +20,9 @@
20
20
  これ消しても関係ないですね。
21
21
 
22
22
  _dupenv_s だとシステム環境変数とユーザー環境変数を全部拾ってくるみたいです。
23
- ユーザー環境変数だけで良いのですがどうすれば良いでしょうか?
23
+ ユーザー環境変数だけで良いのですがどうすれば良いでしょうか?
24
+
25
+ これ使えば良さそうだけど、、C# で SETX または SETX に相当する関数がわかりません。
26
+ ```C#
27
+ public static string? GetEnvironmentVariable (string variable, EnvironmentVariableTarget target);
28
+ ```

4

補足追記

2021/04/10 11:06

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -17,4 +17,7 @@
17
17
  その辺りが何か悪さしてますか?
18
18
 
19
19
  >std:coutでコマンドの内容を表示しています。
20
- これ消しても関係ないですね。
20
+ これ消しても関係ないですね。
21
+
22
+ _dupenv_s だとシステム環境変数とユーザー環境変数を全部拾ってくるみたいです。
23
+ ユーザー環境変数だけで良いのですがどうすれば良いでしょうか?

3

補足追記

2021/04/10 10:43

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -14,4 +14,7 @@
14
14
 
15
15
  systemでコマンドを呼ぶ前に
16
16
  std:coutでコマンドの内容を表示しています。
17
- その辺りが何か悪さしてますか?
17
+ その辺りが何か悪さしてますか?
18
+
19
+ >std:coutでコマンドの内容を表示しています。
20
+ これ消しても関係ないですね。

2

2021/04/10 09:46

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -10,4 +10,8 @@
10
10
  >> 既存のパスが重複してしまう。
11
11
  >どういう結果のことをそう言っていますか?
12
12
 
13
- 既存のパスが全て2つずつになります。
13
+ 既存のパスが全て2つずつになります。
14
+
15
+ systemでコマンドを呼ぶ前に
16
+ std:coutでコマンドの内容を表示しています。
17
+ その辺りが何か悪さしてますか?

1

2021/04/10 02:51

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -5,4 +5,9 @@
5
5
  C:\Users\user> SETX PATH "my-new-path"
6
6
 
7
7
  ↑このようにすると既存のパスが消えてしまう。
8
- なぜでしょうか?
8
+ なぜでしょうか?
9
+
10
+ >> 既存のパスが重複してしまう。
11
+ >どういう結果のことをそう言っていますか?
12
+
13
+ 既存のパスが全て2つずつになります。