レジストリで右クリックメニュに追加

private string LoadSart()
{
string str= System.Environment.CommandLine;
str= Syste
m.Text.RegularExpressions.Regex.Replace(str, "\".+\"","").Trim();

// noby.Message(str);

// listBox1.Items.Add(str);
//コマンドラインを配列で取得する
//string[] cmds;
//cmds = System.Environment.GetCommandLineArgs();

// pnlCenter2_Setting.Visible = true;

//コマンドライン引数の表示
//for (int index = 1; index < cmds.Length; index++)
//{
// //listBox1.Items.Add(cmds[index]);

// string cmd = cmds[index];
// str +=" "+cmd;
//}

try
{

//実行するコマンドライン
string commandline = "\"" + Application.ExecutablePath + "\" %1";
string commandline2 = "\"" + Application.ExecutablePath + "\" %V";
string commandline3 = "\"" + Application.ExecutablePath + "\",0";

//説明(エクスプローラのコンテキストメニューに表示される)

//個々のファイルを右クリックしたとき
RegistryKey regVersion = Registry.ClassesRoot.OpenSubKey("*\\shell\\" + gro.productName + "\\command");

//フォルダを右クリックしたとき
RegistryKey regVersion2= Registry.ClassesRoot.OpenSubKey("Folder\\shell\\" + gro.productName + "\\command");

//フォルダ内の余白を右クリックしたとき
RegistryKey regVersion3 = Registry.ClassesRoot.OpenSubKey("Directory\\Background\\shell\\" + gro.productName + "\\command");

if (regVersion == null)
{

const string regFn = "*\\shell\\" + gro.productName;

//フォルダへの関連付けを行う
RegistryKey regkey =Registry.ClassesRoot.CreateSubKey(regFn+"\\command");
if (regkey != null) regkey.SetValue("", commandline);

regkey =Registry.ClassesRoot.CreateSubKey(regFn);

if (regkey != null)regkey.SetValue("Icon", commandline3);

if (regkey != null) regkey.Close();

}

if (regVersion2 == null)
{

const string regFn = "Folder\\shell\\" + gro.productName;

//フォルダへの関連付けを行う
RegistryKey regkey = Registry.ClassesRoot.CreateSubKey(regFn + "\\command");
if (regkey != null) regkey.SetValue("", commandline);

regkey = Registry.ClassesRoot.CreateSubKey(regFn);

if (regkey != null) regkey.SetValue("Icon", commandline3);

if (regkey != null) regkey.Close();

}

if (regVersion3 == null)
{

const string regFn = "Directory\\Background\\shell\\" + gro.productName;

//フォルダへの関連付けを行う
RegistryKey regkey = Registry.ClassesRoot.CreateSubKey(regFn + "\\command");
if (regkey != null) regkey.SetValue("", commandline2);

regkey = Registry.ClassesRoot.CreateSubKey(regFn);

if (regkey != null) regkey.SetValue("Icon", commandline3);

if (regkey != null) regkey.Close();

}

}
catch (Exception d)
{
// noby.Message(d.ToString());
RestartApplication();

}

//コマンドライン引数があるとき
if (str != "")
{
gro.mEthod = gro.MethodFromFolder;

// 拡張子が存在していればフォルダ名のみを得る
if (Path.GetExtension(str) != "")
str = Path.GetDirectoryName(str);

string[] fileName = new string[1] { str };

FolderBegin(fileName);

}

return Environment.CommandLine;

}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です