15 个解决方案
#1
使用Mutex对象。
#2
很不明白你说的意思
第一次是啥概念
第一次是啥概念
#3
对第一次有两种理解
1。程序安装后第一次启动,可以考虑注册表的方法,查找预先定义的键值,没有说明是第一次
第二种理解就是程序只能启动一次
那就是一楼说的Mutex互斥对象可以满足你的需求
1。程序安装后第一次启动,可以考虑注册表的方法,查找预先定义的键值,没有说明是第一次
第二种理解就是程序只能启动一次
那就是一楼说的Mutex互斥对象可以满足你的需求
#4
我觉得楼主的意思应该是3楼说的第一种!!! 利用注册表吧!
#5
每次启动在程序目录的一个文本文件里把某个值+1
#6
注册表
#7
怎样利用注册表呢?
能给个实例吗?谢谢
能给个实例吗?谢谢
#8
/// <summary>
/// 写注册表中字串(REG_SZ)数据
/// </summary>
/// <param name="HKLM_SOFT_Dir_Name">HKLM\SOFTWARE的子项名称</param>
/// <param name="Sub_Dir_Name">\SOFTWARE\SOFT_Dir_Name\的子项的名称</param>
/// <param name="Key_Name">Sub_Dir_Name的子键名</param>
/// <param name="Key_Value">写入Key_Name的键值</param>
public void SetRegeditData(String HKLM_SOFT_Dir_Name, String Sub_Dir_Name, String Key_Name, String Key_Value)
{
RegistryKey hklm = Registry.LocalMachine.OpenSubKey("SOFTWARE", true);
RegistryKey software;
if (IsRegeditDirExist(HKLM_SOFT_Dir_Name))
{
software = hklm.OpenSubKey(HKLM_SOFT_Dir_Name, true);
}
else
{
software = hklm.CreateSubKey(HKLM_SOFT_Dir_Name);
}
RegistryKey aimdir = software.CreateSubKey(Sub_Dir_Name);
aimdir.SetValue(Key_Name, Key_Value);
}
/// <summary>
/// 判断目录是否存在
/// </summary>
/// <param name="HKLM_SOFT_Dir_Name">HKLM\SOFTWARE下是否存在该子项</param>
/// <returns>true or false</returns>
public bool IsRegeditDirExist(String HKLM_SOFT_Dir_Name)
{
bool _exit = false;
string[] subkeyNames;
RegistryKey hklm = Registry.LocalMachine.OpenSubKey("SOFTWARE", true);
subkeyNames = hklm.GetSubKeyNames();
foreach (string DirName in subkeyNames)
{
if (DirName == HKLM_SOFT_Dir_Name)
{
_exit = true;
return _exit;
}
}
return _exit;
}
#9
还有 要using Microsoft.Win32;
#10
... 用什么注册表,App.config就可以了嘛。
string strIsFirstRun = "false";
bool isFirstRun = false;
strIsFirstRun = ConfigurationManager.AppSettings("IsFirstRun");
if (string.IsNullOrEmpty(strIsFirstRun) || strIsFirstRun.ToLower() != "true")
{
isFirstRun = false;
}
else
{
isFirstRun = true;
}
strIsFirstRun = "false";
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings.Remove("IsFirstRun");
config.AppSettings.Settings.Add("IsFirstRun", strIsFirstRun);
config.Save();
#11
当然前提是要在app.config里加上:
<appSettings>
<add key="IsFirstRun" value="true" />
</appSettings>
<appSettings>
<add key="IsFirstRun" value="true" />
</appSettings>
#12
楼上的方法很好,很强大
#13
基于.Net平台应用程序唯一运行实例实现,
我讲了三种方法,提供完整代码,同时分析他们的优缺点。
http://blog.csdn.net/zhzuo/archive/2006/06/30/857405.aspx
http://blog.csdn.net/zhzuo/archive/2006/07/04/874745.aspx
我讲了三种方法,提供完整代码,同时分析他们的优缺点。
http://blog.csdn.net/zhzuo/archive/2006/06/30/857405.aspx
http://blog.csdn.net/zhzuo/archive/2006/07/04/874745.aspx
#14
同意10楼的~~~很有创意和实用价值~~~
#15
我想问一下,那个strIsFirstRun = ConfigurationManager.AppSettings("IsFirstRun");为什么会报错呢??那个AppSettings报不能以方法调用的错
#1
使用Mutex对象。
#2
很不明白你说的意思
第一次是啥概念
第一次是啥概念
#3
对第一次有两种理解
1。程序安装后第一次启动,可以考虑注册表的方法,查找预先定义的键值,没有说明是第一次
第二种理解就是程序只能启动一次
那就是一楼说的Mutex互斥对象可以满足你的需求
1。程序安装后第一次启动,可以考虑注册表的方法,查找预先定义的键值,没有说明是第一次
第二种理解就是程序只能启动一次
那就是一楼说的Mutex互斥对象可以满足你的需求
#4
我觉得楼主的意思应该是3楼说的第一种!!! 利用注册表吧!
#5
每次启动在程序目录的一个文本文件里把某个值+1
#6
注册表
#7
怎样利用注册表呢?
能给个实例吗?谢谢
能给个实例吗?谢谢
#8
/// <summary>
/// 写注册表中字串(REG_SZ)数据
/// </summary>
/// <param name="HKLM_SOFT_Dir_Name">HKLM\SOFTWARE的子项名称</param>
/// <param name="Sub_Dir_Name">\SOFTWARE\SOFT_Dir_Name\的子项的名称</param>
/// <param name="Key_Name">Sub_Dir_Name的子键名</param>
/// <param name="Key_Value">写入Key_Name的键值</param>
public void SetRegeditData(String HKLM_SOFT_Dir_Name, String Sub_Dir_Name, String Key_Name, String Key_Value)
{
RegistryKey hklm = Registry.LocalMachine.OpenSubKey("SOFTWARE", true);
RegistryKey software;
if (IsRegeditDirExist(HKLM_SOFT_Dir_Name))
{
software = hklm.OpenSubKey(HKLM_SOFT_Dir_Name, true);
}
else
{
software = hklm.CreateSubKey(HKLM_SOFT_Dir_Name);
}
RegistryKey aimdir = software.CreateSubKey(Sub_Dir_Name);
aimdir.SetValue(Key_Name, Key_Value);
}
/// <summary>
/// 判断目录是否存在
/// </summary>
/// <param name="HKLM_SOFT_Dir_Name">HKLM\SOFTWARE下是否存在该子项</param>
/// <returns>true or false</returns>
public bool IsRegeditDirExist(String HKLM_SOFT_Dir_Name)
{
bool _exit = false;
string[] subkeyNames;
RegistryKey hklm = Registry.LocalMachine.OpenSubKey("SOFTWARE", true);
subkeyNames = hklm.GetSubKeyNames();
foreach (string DirName in subkeyNames)
{
if (DirName == HKLM_SOFT_Dir_Name)
{
_exit = true;
return _exit;
}
}
return _exit;
}
#9
还有 要using Microsoft.Win32;
#10
... 用什么注册表,App.config就可以了嘛。
string strIsFirstRun = "false";
bool isFirstRun = false;
strIsFirstRun = ConfigurationManager.AppSettings("IsFirstRun");
if (string.IsNullOrEmpty(strIsFirstRun) || strIsFirstRun.ToLower() != "true")
{
isFirstRun = false;
}
else
{
isFirstRun = true;
}
strIsFirstRun = "false";
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings.Remove("IsFirstRun");
config.AppSettings.Settings.Add("IsFirstRun", strIsFirstRun);
config.Save();
#11
当然前提是要在app.config里加上:
<appSettings>
<add key="IsFirstRun" value="true" />
</appSettings>
<appSettings>
<add key="IsFirstRun" value="true" />
</appSettings>
#12
楼上的方法很好,很强大
#13
基于.Net平台应用程序唯一运行实例实现,
我讲了三种方法,提供完整代码,同时分析他们的优缺点。
http://blog.csdn.net/zhzuo/archive/2006/06/30/857405.aspx
http://blog.csdn.net/zhzuo/archive/2006/07/04/874745.aspx
我讲了三种方法,提供完整代码,同时分析他们的优缺点。
http://blog.csdn.net/zhzuo/archive/2006/06/30/857405.aspx
http://blog.csdn.net/zhzuo/archive/2006/07/04/874745.aspx
#14
同意10楼的~~~很有创意和实用价值~~~
#15
我想问一下,那个strIsFirstRun = ConfigurationManager.AppSettings("IsFirstRun");为什么会报错呢??那个AppSettings报不能以方法调用的错