digitalmars.D.learn - Bug? Bad file name?
- Anonymous (26/26) Nov 13 2015 I was playing with some code someone posted on the forum that
- Nicholas Wilson (3/29) Nov 14 2015 What about other file names that contain compiler recognised
- Adam D. Ruppe (14/17) Nov 14 2015 This is a Windows quirk. When they introduced UAC in Windows
I was playing with some code someone posted on the forum that involved opDispatch and compile time parameters. I pasted it in a file named templOpDispatch.d, ran it, and got an error. Then I noticed if I renamed the file it worked. The source didn't matter; same thing happens with an empty main. Ex: templOpDispatch.d contains just void main() {} Then running 'rdmd templOpDispatch.d' produces: std.process.ProcessException std\process.d(568): Failed to spawn new process (The requested operation requires elevation.) ---------------- 0x004396F0 0x0042AC3A 0x00403F66 0x00403FDF 0x00433043 0x00432F57 0x00426B70 0x7577337A in BaseThreadInitThunk 0x77969882 in RtlInitializeExceptionChain 0x77969855 in RtlInitializeExceptionChain Windows 7 rdmd build 20150923 DMD32 D Compiler v2.068.2 But I can rename the file to rdmd templOpDispatc.d (remove h) and all is good. Strange. Can anyone else reproduce this?
Nov 13 2015
On Saturday, 14 November 2015 at 05:44:44 UTC, Anonymous wrote:I was playing with some code someone posted on the forum that involved opDispatch and compile time parameters. I pasted it in a file named templOpDispatch.d, ran it, and got an error. Then I noticed if I renamed the file it worked. The source didn't matter; same thing happens with an empty main. Ex: templOpDispatch.d contains just void main() {} Then running 'rdmd templOpDispatch.d' produces: std.process.ProcessException std\process.d(568): Failed to spawn new process (The requested operation requires elevation.) ---------------- 0x004396F0 0x0042AC3A 0x00403F66 0x00403FDF 0x00433043 0x00432F57 0x00426B70 0x7577337A in BaseThreadInitThunk 0x77969882 in RtlInitializeExceptionChain 0x77969855 in RtlInitializeExceptionChain Windows 7 rdmd build 20150923 DMD32 D Compiler v2.068.2 But I can rename the file to rdmd templOpDispatc.d (remove h) and all is good. Strange. Can anyone else reproduce this?What about other file names that contain compiler recognised names / keywords?
Nov 14 2015
On Saturday, 14 November 2015 at 05:44:44 UTC, Anonymous wrote:Then running 'rdmd templOpDispatch.d' produces: std.process.ProcessException std\process.d(568): Failed to spawn new process (The requested operation requires elevation.)This is a Windows quirk. When they introduced UAC in Windows Vista, several programs required admin elevation to be run, but a lot of old programs didn't request it. So Microsoft put in a bit of a hack to keep things working: programs named things like setup.exe or patch.exe, which typically need to write to installed programs, are assumed to need elevation. There's ways around it: http://stackoverflow.com/questions/533939/how-to-prevent-vista-from-requiring-elevation-on-patch-exe But it isn't a D thing per se, it is Windows seeing the "patch.exe" at the end of the "templOpDispatch.exe" filename (default name is to replace the .d with .exe) and assuming it is some installed application updater. Easiest thing to do is to just not call your program that.
Nov 14 2015