correct usage of the VERSIONINFO resource - c++

I have set up my version table info in my version.rc file as follows:
+-----------------+-----------------------------------------+
| Key | Value |
+-----------------+-----------------------------------------+
| CompanyName | MyCompany
| FileDescription | A test application that does something. |
| InternalName | TestApp |
| FileVersion | 1.0.0 |
| OriginalFilename| TestApp.exe
| ProductVersion | 1.0.0 |
| ProductName | Test Application |
+-----------------+-----------------------------------------+
Whenever my application crashes or some antivirus message pops up asking for permission or basically any event that displays my application name occurs, the application name is displayed as "A test application that does something", i.e. FileDescription is taken as the application name. I am using this article as my reference.
What I see:
What I Want to See:
To achieve the second image, I edited FileDescription to "Test Application".
BUT, now in the task manager (and other areas where the description is used),
After Editing FileDescription to "Test Application":
Before Editing FileDescription:
I want to know if there's some way to specify to the OS to use the ProductName in the first case above (and other similar cases) and FileDescription in the second case above (and other similar cases).

Related

Unable to login ECR web page and show error message

Could you check why user kcizek is not able to login to either hub.tess.io nor ecr? This is first time login but it should work with corp and PIN + Yubi. Login works for me just fine.
I am unable to access https://ecr.vip.ebayc3.com/repository/
When I log in, I am faced with this. The ‘contact us’ link doesn’t have any contact information, so I’m trying here. Any ideas? Thanks.
Potentially relevant background: this is my first time attempting to get access.
enter image description here
It's found the email info is absent in user account.
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | default |
| email | |
| enabled | True |
| id | e69fe5b9d9384b338b3c397c7c84e33f |
| name | kcizek |
+-----------+----------------------------------+
Solution is to contact Tess oncall to add email info.
Related Command
openstack user set kcizek --email kcizek#ebay.com

What effect to SPF-record qualifiers have if they are included into another SPF record, if the parent record is stricter than the child?

I want to put a strict FAIL qualifier on all email sources that are not listed explicitly in the SPF record of my domain.
This can simply be accomplished by the following record (the -all designates that all other sources should not be accepted)
mydomain.com. IN TXT "v=spf1 ip4:my-ip-address/32 -all"
Now my problem is that I in addition want to white-list my email provider (mailgun.com) as well as google apps, so I created the following record:
mydomain.com. IN TXT "v=spf1 include:mailgun.org include:_spf.google.com ip4:my-ip-address/32 -all"
Now the SPF record of mailgun.com (in case of google the same situation applies) resolves to:
mailgun.org. 3600 IN TXT "v=spf1 ip4:173.193.210.32/27 ip4:50.23.218.192/27 ip4:174.37.226.64/27 ip4:208.43.239.136/30 ip4:50.23.215.176/30 ip4:184.173.105.0/24 ip4:184.173.153.0/24 ip4:209.61.151.0/24 ip4:166.78.68.0/22 ip4:198.61.254.0/23 ip4:192.237.158.0/23 " "~all"
Now what,s interesting is, is, that they put a soft fail qualifier "~all" on their spf record.
Wikipedia describes the include directive as follows:
If the included (a misnomer) policy passes the test this mechanism
matches. This is typically used to include policies of more than one
ISP.
I interpret this in the way that an unknown sender is qualified as SOFT FAIL by the included records, and therefore passes as SOFT FAIL, because they are included in the root record. Even if the root record puts a FAIL on all not included sources.
So that the incldued records effectively render the FAIL qualifier of the root record useless. So the laeast strict record deinfes the overall qualifier for unknown sources.
Am I correct in this assumption? If not, how is in the example given, an unknown sender qualified?
The behaviour is described in seciton 5.2 of the RFC where it says
Whether this mechanism matches, does not match, or throws an
exception depends on the result of the recursive evaluation of
check_host():
+---------------------------------+---------------------------------+
| A recursive check_host() result | Causes the "include" mechanism |
| of: | to: |
+---------------------------------+---------------------------------+
| Pass | match |
| | |
| Fail | not match |
| | |
| SoftFail | not match |
| | |
| Neutral | not match |
| | |
| TempError | throw TempError |
| | |
| PermError | throw PermError |
| | |
| None | throw PermError |
+---------------------------------+---------------------------------+
The mechanism in this contects refers to the "include" functionality.
As shown in the table a softfail causes a not-match.
It also says:
In hindsight, the name "include" was poorly chosen. Only the
evaluated result of the referenced SPF record is used, rather than
acting as if the referenced SPF record was literally included in the
first.
Which I interpret in the way that only the result of the included record is relevant, which is, in the cas of a soft fail, a not-match (same as if the record woul have a FAIL) qualifier.
Here's also a test result with the py spf library performed on this website
Input accepted, querying now...
Mail sent from this IP address: 1.2.3.4
Mail from (Sender): scknpbi#cacxjxv.com
Mail checked using this SPF policy: v=spf1 ip4:4.5.6.7/32 include:mailgun.org -all
Results - FAIL Message may be rejected
Mail sent from: 1.2.3.4
Mail Server HELO/EHLO identity: blanivzsrxvbla#saucjw.com
HELO/EHLO Results - none

how to disable confirmation dialog when deleting read only or system file by using SHFileOperation / SHFILEOPSTRUCT?

I'm using these flags:
SHFILEOPSTRUCTW op;
// ..
op.wFunc = FO_DELETE;
op.fFlags = FOF_ALLOWUNDO | FOF_NORECURSION |
FOF_RENAMEONCOLLISION | FOF_WANTNUKEWARNING |
FOF_FILESONLY | FOF_NOCONFIRMATION |
FOF_NO_CONNECTED_ELEMENTS | FOF_SILENT | FOF_NOERRORUI;
And all works ok for files that are not read-only nor system, but when such file is encountered there is a dialog window for user to confirm moving such file to trash. How to disable it ? Must I work around this by first stripping these attributes or is there a setting I do not know of ?
What I need to do is simply to move a file (one by one, I don't need wildcards) to trash. Are there any other api calls that can do this ?
Hidden attribute is not affected by this behavior.

CloudFoundry - Application 'controlealunos' does not exist

I think that i'm suffering a bug problem. I created a application on Cloud Foundry with the name "controle*A*lunos" with the upper case letter A.
When i execute the command
cf-apps
i get this result:
+----------------+----+---------+---------------------------------+---------------+
| Application | # | Health | URLs | Services |
+----------------+----+---------+---------------------------------+---------------+
| controleAlunos | 1 | RUNNING | controlealunos.cloudfoundry.com | mysql-86d568b |
+----------------+----+---------+---------------------------------+---------------+
But when i try to update my project whit the command :
prod cf-update controleAlunos controleAlunos-0.1.war
i receive an error
Error Application 'controlealunos' does not exist.
I think that it should be the name of my application. I put it with one Upper Case letter controle*A*lunos and i'm receving the error with no upper case letter controlealunos.
I tried to rename it, but i still get the error.
Any Sugests ?
I guess the project name you created is "controlealunos" which resulted in the app.name property in application.properties is a lower case name, while the name used to push onto CF is "controleAlunos". You can try change the value in the properties file and update again.

EnumDisplayDevices vs WMI Win32_DesktopMonitor, how to detect active monitors?

For my current C++ project I need to detect a unique string for every monitor that is connected and active on a large number of computers.
Research has pointed to 2 options
Use WMI and query the Win32_DesktopMonitor for all active monitors. Use the PNPDeviceID for unique identification of monitors.
Use the EnumDisplayDevices API, and dig down to get the device ID.
I'm interested in using the device id for unique model identification because monitors using the default plug and play driver will report a generic string as the monitor name "default plug and play monitor"
I have been experiencing issues with the WMI method, it seems to be only returning 1 monitor on my Vista machine, looking at the doco it turns out it does not work as expected on non WDDM devices.
The EnumDisplayDevices seems to be a little problematic to get going when it runs from a background service (especially on Vista), If it's in session 0 it will return no info.
Has anyone else had to do something similar (find unique model string for all connected active monitors?)
What approach worked best?
This is my current work-in-progress code for detecting the monitor device id, reliably.
CString DeviceID;
DISPLAY_DEVICE dd;
dd.cb = sizeof(dd);
DWORD dev = 0;
// device index
int id = 1;
// monitor number, as used by Display Properties > Settings
while (EnumDisplayDevices(0, dev, &dd, 0))
{
DISPLAY_DEVICE ddMon;
ZeroMemory(&ddMon, sizeof(ddMon));
ddMon.cb = sizeof(ddMon);
DWORD devMon = 0;
while (EnumDisplayDevices(dd.DeviceName, devMon, &ddMon, 0))
{
if (ddMon.StateFlags & DISPLAY_DEVICE_ACTIVE &&
!(ddMon.StateFlags & DISPLAY_DEVICE_MIRRORING_DRIVER))
{
DeviceID.Format (L"%s", ddMon.DeviceID);
DeviceID = DeviceID.Mid (8, DeviceID.Find (L"\\", 9) - 8);
}
devMon++;
ZeroMemory(&ddMon, sizeof(ddMon));
ddMon.cb = sizeof(ddMon);
}
ZeroMemory(&dd, sizeof(dd));
dd.cb = sizeof(dd);
dev++;
}
I've just discovered you can query Win32_PnPEntity for service="monitor", and it will return all monitors.
Results on my machine:
select * from Win32_PnPEntity where service="monitor"
Availability | Caption | ClassGuid | CompatibleID | ConfigManagerErrorCode | ConfigManagerUserConfig | CreationClassName | Description | DeviceID | ErrorCleared | ErrorDescription | HardwareID | InstallDate | LastErrorCode | Manufacturer | Name | PNPDeviceID | PowerManagementCapabilities | PowerManagementSupported | Service | Status | StatusInfo | SystemCreationClassName | SystemName
| Dell 2007FP (Digital) | {4d36e96e-e325-11ce-bfc1-08002be10318} | array[0..0] | 0 | False | Win32_PnPEntity | Dell 2007FP (Digital) | DISPLAY\DELA021\5&4F61016&0&UID257 | | | array[0..0] | | | Dell Inc. | Dell 2007FP (Digital) | DISPLAY\DELA021\5&4F61016&0&UID257 | | | monitor | OK | | Win32_ComputerSystem | 8HVS05J
| Dell ST2320L_Digital | {4d36e96e-e325-11ce-bfc1-08002be10318} | array[0..0] | 0 | False | Win32_PnPEntity | Dell ST2320L_Digital | DISPLAY\DELF023\5&4F61016&0&UID256 | | | array[0..0] | | | Dell Inc. | Dell ST2320L_Digital | DISPLAY\DELF023\5&4F61016&0&UID256 | | | monitor | OK | | Win32_ComputerSystem | 8HVS05J
We've been toying with EnumDisplayDevices in order to detect if the current video card manufacturer is NVIDIA. It's not the same, but maybe it would help. Our piece looked like this:
int disp_num = 0;
BOOL res = TRUE;
do {
DISPLAY_DEVICE disp_dev_info;
ZeroMemory( &disp_dev_info, sizeof(DISPLAY_DEVICE) );
disp_dev_info.cb = sizeof(DISPLAY_DEVICE);
res = EnumDisplayDevices( 0, disp_num++, &disp_dev_info, 0x00000001 );
if(res &&
disp_dev_info.DeviceString[0]!=0 && disp_dev_info.DeviceString[0]=='N' &&
disp_dev_info.DeviceString[1]!=0 && disp_dev_info.DeviceString[1]=='V' &&
disp_dev_info.DeviceString[2]!=0 && disp_dev_info.DeviceString[2]=='I' &&
disp_dev_info.DeviceString[3]!=0 && disp_dev_info.DeviceString[3]=='D' &&
disp_dev_info.DeviceString[4]!=0 && disp_dev_info.DeviceString[4]=='I' &&
disp_dev_info.DeviceString[5]!=0 && disp_dev_info.DeviceString[5]=='A'){
isNVidia = true;
}
int x = 0;
}while( res != FALSE );
Pretty dumb, but working.
The Win32_DesktopMonitor method only returns 1 monitor on my Vista machine as well. The PnP ID seems to be set correctly, though.
I've had a quick play with the EnumDisplayDevices API, and while it seems to discover the adapter details reliably (presumably because most people won't leave it as "Standard VGA" for long), it only returns "Plug and Play Monitor" for the connected monitors.
This echoes research that I did into this several years ago (had to put some code together to aid in dusting those memories off).
This is from a normal user account. If you've got a reliable way to get EnumDisplayDevices to return the PnP ID, even in normal user sessions, I'd be interested -- we're currently investigating if any of this information is available to a device driver.
One thing you could do, if running the code from session #0 isn't reliable enough, is to see if you can spawn a helper process (either using CreateProcessAsUser or using COM with activation monikers) that'll run in the user's context.
I've never tried doing it from a service, but EnumDisplayDevices generally works well when run as a user. I believe that services run in a separate (and headless) session, which could explain the problem you're seeing there.
Could you run a helper program from your service, impersonating a user account that has access to the displays?