我希望以编程方式启用并启动C#中的Net.Tcp端口共享服务.我可以使用ServiceController类轻松启动服务.但是,如何启用默认禁用的服务?
我在网上找到了一个建议,将以下注册表项设置为2,如下所示,应该将服务启动类型设置为自动:
string path = "SYSTEM\\CurrentControlSet\\Services\\" + serviceName;
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(path, true)) {
key.SetValue("Start", 2);
}
Run Code Online (Sandbox Code Playgroud)
我试过这个,虽然它似乎确实将启动类型更改为自动,但必须有更多,因为服务现在不会启动(以编程方式或手动方式).我不得不通过services.msc手动重置启动类型以重置事物,以便可以启用并重新启动服务.
有人解决了这个吗?
在 SQLite 中,数据库文件的大小是数据库的总体大小,但这不一定是实际使用空间的正确指示。如果删除数据,释放的空间不会返回给操作系统。必须执行 VACUUM 命令对数据库进行碎片整理并将未使用的空间释放回操作系统。
我正在使用SQLite 的Devart ADO.Net 数据提供程序。
有没有办法获取SQLite数据库的实际使用空间?
我在C#中定义了如下结构(为了演示目的而简化),我在对本机DLL的互操作调用中使用它:
[StructLayout(LayoutKind.Sequential, Pack=1)]
public struct MyStruct
{
private byte val0;
private byte val1;
private byte val2;
private byte val3;
public MyStruct(UInt32 id)
{
this.val0 = (byte)id;
id >>= 8;
this.val1 = (byte)id;
id >>= 8;
this.val2 = (byte)id;
id >>= 8;
this.val3 = (byte)id;
}
public void Clear()
{
this.val0 = this.val1 = this.val2 = this.val3 = 0;
}
public override string ToString()
{
return
this.val3.ToString("X2") + this.val2.ToString("X2") + "-" +
this.val1.ToString("X2") + this.val0.ToString("X2");
}
}
Run Code Online (Sandbox Code Playgroud)
更新: 此结构是另一个类中的属性.如下:
public class …Run Code Online (Sandbox Code Playgroud) 可能重复:
x64上的sizeof(int)?
编译为x64与x86时,IntPtr的大小从4变为8.
int的大小是否也会改变,或者它仍然是Int32?
在使用pinvoke和处理互操作调用时,这个问题尤为重要.是否需要将所有"int"类型显式更改为声明为Int32?
我有一个对话框表单,可以作为模态或非模态对话框打开.在对话框中,如何判断对话框的打开方式,即模态与否?