PDA

View Full Version : مبتدی: مشکل در استفاده از reg در ++C



Collector
شنبه 22 تیر 1392, 18:16 عصر
سلام
من با این کد میخوام یک مقدار را از رجیستری یخونم و داخل فایل متنی قرار بدم اما کارش را درست انجام نمیده
لازم به ذکر هست که بتچ فایل درست است.

UINT Country()
{
string Path = "@ECHO OFF";";
Path.append("\nFOR /F ""\"tokens=2* delims=""\" %%A IN ('REG QUERY ""\"HKCU\\Control Panel\\International""\" /v sCountry') DO SET Country=%%B");
Path.append("\nECHO %Country% >c:\\1.txt");
return WinExec(Path.c_str(), SW_HIDE);;
}

Collector
شنبه 22 تیر 1392, 20:06 عصر
این دستور مشکلش چیه که این خطا را نمایش میده

char value[255];
DWORD BufferSize = BUFFER;
RegGetValue(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"), TEXT("SystemRoot"), RRF_RT_ANY, NULL, (PVOID)&value, &BufferSize);
std::cout << value << std::endl;
system("pause");



Error 7 error LNK2019: unresolved external symbol __imp__RegGetValueW@28 referenced in function _main Execute.obj Execute
Error 8 fatal error LNK1120: 1 unresolved externals C:\Documents and Settings\x\My Documents\Visual Studio 2008\Projects\_lib\Debug\Execute.exe 1 Execute

Collector
یک شنبه 23 تیر 1392, 10:35 صبح
این کار را قبلا انجام دادم ولی این خطا را نمایش میده

Collector
یک شنبه 23 تیر 1392, 11:45 صبح
این کد مشکلش چی هست باید اینران را برگرداند اما این طور نیست

HKEY MyKey = 0;

BYTE szBuff[255] = {0};
DWORD cb = 0;
DWORD dwType = REG_SZ;
LONG rval;

if (RegOpenKey(HKEY_CURRENT_USER, TEXT("Control Panel\\International"), &MyKey) == ERROR_SUCCESS)
{
cout<<"Program is installed\n";

cb = sizeof(szBuff);

if((rval = RegQueryValueEx(MyKey, TEXT("sCountry"), 0, &dwType, szBuff, &cb)) == ERROR_SUCCESS)
{
cout<<"Program has been run once\n";
printf((char *)szBuff);
}

printf("%d", rval);
cout<<'\n';
RegCloseKey(MyKey);
}
else
{
cout<<"Error"<<endl;
}

Collector
یک شنبه 23 تیر 1392, 16:54 عصر
منظورتون از اینران همون ایرانه ؟
اگه اینطوره که من کد شما رو کامپایل کردم نتیجه شد :‌ United States .
دقیقا همون چیزی که داخل Registery بود رو برگردوند .
حتما Registery رو چک کن . فک نمیکنم کد مشکلی داشته باشه .

آره همون ایران
پس چرا برای من این را برمیگرداند
یعنی فقط حرف اول IRAN را برمیگرداند و عدد 0(که برای rval هست)

Program is installed
Program has been run once
I0

Collector
یک شنبه 23 تیر 1392, 18:17 عصر
یه سوالی راجع به این تبدیل داشتم من اصل این تبدیل را متوجه نمیشم
مثلا من چطوری میوتم حالت Wide را به حالت معمولی برگردانم مثلا * wchar_t * to char

البته کد تبدیل اینجا (http://msdn.microsoft.com/en-US/library/ms235631%28v=VS.80%29.aspx) هست ولی اینکه چطوری این طوری میشه را متوجه نمیشم