小编jey*_*jow的帖子

C#注册表子项双字值

我正在制作一个程序,查看注册表中是否存在子项,如果不存在,它将创建一个带有值(dword)的子项。正在创建此程序来替换人们(非程序员)必须运行以执行.reg文件的.bat文件,以执行上面列出的操作,而这对用户并不太吸引,这就是为什么要制作此程序。

.reg文件设置了我想设置为dword的键,但是该值的末尾有一个'c'(这是它的样子):

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]
"ScheduledInstallTime"=dword:0000000c
Run Code Online (Sandbox Code Playgroud)

我的C#代码如下所示:

RegistryKey rk = Registry.LocalMachine.CreateSubKey(Globais.subkeyWU + @"\AU");
rk.SetValue("ScheduledInstallTime", 0000000c, RegistryValueKind.DWord);
Run Code Online (Sandbox Code Playgroud)

问题是.SetValue函数在值的末尾不接受c,我的猜测是它只能是数字,因为它是dwrod(不确定),因此,annyone知道我怎么做,基本上.reg文件正在做什么?也许是十六进制值,我不知道如何用C#制作...

annyway,这是它在regedit中的外观的打印屏幕(.reg文件执行此操作):

在此处输入图片说明

无论如何,谢谢!

c# registry dword set

5
推荐指数
1
解决办法
5319
查看次数

C++ #define LPWSTR?

好的,我的程序有问题.我之前提出过一个问题,但没有人真正理解我的问题,所以我这次尝试一种新方法.

如果你很好奇,这是我的问题:

我的程序以形式接受参数char* argv[],并且我无法指向正在argv[1]使用的任何东西LPWSTR,因为它只指向const wchar_t*对象.

这是一个新的事情,我试图解决我的问题(我已经尝试了多种东西,但我需要知道如何做我想的,或者如果可能的话)

基本上,我的想法是#define某种功能,它可以接受任何内容,argv[1]const wchar_t*使用该值定义a .

像这样的东西:

#define path       ((const wchar_t*)argv[1])
Run Code Online (Sandbox Code Playgroud)

我不确定这是正确的方式(或者即使这是可能的)做我想做的事......

如果你有一个更好的方法来解决我的问题,请(请)告诉我如何帮助我,我一直在考虑这个很长的时间!

我的计划说明:

我正在制作一个接受争论的程序.参数是驱动器的名称,例如"F:".然后它使用CreateFile带驱动器号的函数.如果你去这里,看看函数的第一个参数,我想你会看到我的意思....问题是,对于我来说,制作一个LPWSTR,我需要一个const wchat_t*对象....我希望这一次我的问题很清楚,上次人们真的不明白我想要做什么.

无论如何,谢谢!编辑1:这里是解决我的程序的行(这是我必须做的工作,没有参数)(我在这里使用固定值)

int main()
{

HANDLE device;

device = CreateFile(L"\\\\.\\F:",    // Drive to open
    GENERIC_READ | GENERIC_WRITE,       // Access mode
    FILE_SHARE_READ | FILE_SHARE_WRITE, // Share Mode
    NULL,                   // Security Descriptor
    OPEN_EXISTING,          // How to create
    0,                      // File attributes
    NULL);  
}
Run Code Online (Sandbox Code Playgroud)

这是有参数(不起作用)

int main(int …
Run Code Online (Sandbox Code Playgroud)

c++ const createfile lpwstr

0
推荐指数
1
解决办法
467
查看次数

此循环后C#代码中断

我有以下循环:

string[] sfind = new string[Globais.dep.Length];
int udt = 0;
for (int getnum = 0; getnum <= Globais.dep.Length; getnum++)
{
    if (Globais.dep[getnum].Contains(items[1]))
    {
        sfind[udt] = Globais.dep[getnum];
        udt ++;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有更多的代码遵循这个循环,但我用调试器观察它并且它不运行下面的代码,在for循环结束后它会破坏整个代码.我在这做错了什么?我没有看到周期的问题.

无论如何,谢谢!

c# for-loop break

-2
推荐指数
1
解决办法
95
查看次数

标签 统计

c# ×2

break ×1

c++ ×1

const ×1

createfile ×1

dword ×1

for-loop ×1

lpwstr ×1

registry ×1

set ×1